Autor Zpráva
kokolino
Profil
Č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
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
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
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
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
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
Tori:
ďakujem za vysvetlenie
motik
Profil
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..

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0