Autor | Zpráva | ||
---|---|---|---|
kokolino Profil |
#1 · Zasláno: 31. 8. 2011, 16:37:37
Čaute
chcem sa Vás spýtať ako riešite situáciu ak je požiadavka na triedenie údajov z DB podľa rôznych kategórií ja som vymyslel toto <?php require "db.php"; $hodnota=mysql_real_escape_string($_GET["hodnota"]); function vypis($hodnota) { echo"<table border ='1'><tr><td><a href='index.php?hodnota=0'>id</a></td><td><a href='index.php?hodnota=1'>meno</a></td><td><a href='index.php?hodnota=2'>priezvisko</a></td><td><a href='index.php?hodnota=3'>teplota</a></td></tr>"; $pacient=mysql_query ($a="SELECT id_pacienta, meno , priezvisko, teplota from pacienti order by ".$hodnota." asc") or print ("chyba <br />" .$a."<br />".mysql_error()); while($row=mysql_fetch_array($pacient)) { echo "<tr>"; echo "<td>".$row['id_pacienta']. "</td>"; echo "<td>".$row['meno']. "</td>"; echo "<td>".$row['priezvisko']. "</td>"; echo "<td>".$row['teplota']. "</td>"; echo "</tr>"; } echo"</table>"; } if($hodnota=="0") vypis("id_pacienta"); elseif($hodnota=="1") vypis("meno"); elseif($hodnota=="2") vypis("priezvisko"); elseif($hodnota=="3") vypis("teplota"); else vypis("id_pacienta"); ?> chcem sa spýtat, či je aj nejaké lepšie/ lahšie riešenie tohto problému lebo mne sa to if-ovanie čo som použil moc nepáči napadlo ma to jedine nahradiť switchom, ale len s estetického hľadiska, popravde neviem čo je viac efektívne. |
||
motik Profil |
#2 · Zasláno: 31. 8. 2011, 21:05:31
kokolino:
mě se ten kód moc nelíbí.. - funkce nevypisuje, funkce vrací - kód není psaný jednotným stylem (mezera, odsazení..) - nebyl by lepší switch místo elseif? |
||
Tori Profil |
#3 · Zasláno: 31. 8. 2011, 22:08:19
kokolino:
Doplním k tomu, co napsal motik: - smysluplnější název funkce (getTeplotyPacientu, PacientiModel::mereniTeploty, ...) - dala bych jí tři parametry: název sloupce pro řazení (ošetření nechat na funkci podle použité DB), pole povolených hodnot, výchozí hodnotu pokud vstup nebude mezi povolenými - ten sql dotaz je zřejmě jen příklad? záznamy pravidelných měření teploty budou asi v jiné tabulce. Taky by se myslím volilo i časové rozpětí. - místo die() bych jen vracela false a chybovou hlášku logovala (stat.metoda, callback, ...). |
||
Medvídek Profil |
#4 · Zasláno: 31. 8. 2011, 22:15:32
kokolino:
Jelikož máš v hodnotách vždy jen čísla, tak bych to ošetřil spíše takto: $hodnota=intval($_GET["hodnota"]); |
||
kokolino Profil |
#5 · Zasláno: 1. 9. 2011, 14:03:08
motik:
čo myslíte pod týmto kód není psaný jednotným stylem (mezera, odsazení..) ? Tori: -nad názvom funkcie som sa vôbec nezamýšlal nabudúce zvolím niečo zmysluplné - dala bych jí tři parametry: název sloupce pro řazení (ošetření nechat na funkci podle použité DB), pole povolených hodnot, výchozí hodnotu pokud vstup nebude mezi povolenými mohli by ste mi to načrtnúť na konkretnom príklade ? lebo si neviem predstaviť ako tam zadám defaultnú hodnotu (ako ju zavolám) - ten sql dotaz je zřejmě jen příklad? áno samozrejme |
||
Tori Profil |
#6 · Zasláno: 1. 9. 2011, 14:55:39
kokolino:
„mohli by ste mi to načrtnúť na konkretnom príklade ? lebo si neviem predstaviť ako tam zadám defaultnú hodnotu (ako ju zavolám)“ Asi tak jsem to myslela: function mereniTeploty($sortBy, $sortOptions, $desc = false) { $sortBy = preg_replace('~[^a-z0-9_]+~i', '', $sortBy); $orderDir = (bool) $desc ? 'DESC' : 'ASC'; if (! in_array($sortBy, $sortOptions)) $sortBy = $sortOptions['default']; // anebo 3.param. // dotaz, return cosi } $options = array('default'=>'sloupec1', 'sloupec2', 'sloupec3'); $data = mereniTeploty($_GET['sortBy'], $options); |
||
kokolino Profil |
#7 · Zasláno: 1. 9. 2011, 16:57:08
Tori:
ďakujem za vysvetlenie |
||
motik Profil |
#8 · Zasláno: 1. 9. 2011, 20:45:14
kokolino:
„čo myslíte pod týmto kód není psaný jednotným stylem (mezera, odsazení..) ?“ function vypis($hodnota) { echo"<table border ='1'><tr><td><a href='index.php?hodnota=0'>id</a></td><td><a href='index.php?hodnota=1'>meno</a></td><td><a href='index.php?hodnota=2'>priezvisko</a></td><td><a href='index.php?hodnota=3'>teplota</a></td></tr>"; $pacient=mysql_query ($a ="SELECT id_pacienta, meno , priezvisko, teplota from pacienti order by ".$hodnota." asc") or print ("chyba <br />" .$a."<br />".mysql_error()); while($row=mysql_fetch_array($pacient)) { echo "<tr>"; ... } jako je jedno, jakej styl psaní si zvolíš, ale je dobré psát to nějak tak pořád stejně.. a možná že se ti v tom pak budou líp i hledat chyby.. function vypis($hodnota) { echo "<table border ='1'><tr><td><a href='index.php?hodnota=0'>id</a></td><td><a href='index.php?hodnota=1'>meno</a></td><td><a href='index.php?hodnota=2'>priezvisko</a></td><td><a href='index.php?hodnota=3'>teplota</a></td></tr>"; $pacient = mysql_query("SELECT id_pacienta, meno , priezvisko, teplota from pacienti order by ".$hodnota." asc") or print ("chyba <br />" .$a."<br />".mysql_error()); while($row = mysql_fetch_array($pacient)) { echo "<tr>"; ... } jinak jak píše Tori, tak to je balada pro oči.. všechno jedním stylem.. |
||
Časová prodleva: 14 let
|
0