Autor Zpráva
jerremy
Profil *
Pekný podvečer,
narazil som na problém vo svojom skripte ak vyberám hodnoty pomocou WHERE ... BETWEEN ... AND
Pre názornosť posielam kód:
switch ($loc) {
           case 1: $vysledek=mysql_query("select * from odbornik WHERE mesto BETWEEN 1 AND 14 ORDER BY meno ASC ");
           case 15: $vysledek=mysql_query("select * from odbornik WHERE mesto BETWEEN 15 AND 19 ORDER BY meno ASC ");
           case 20: $vysledek=mysql_query("select * from odbornik WHERE mesto BETWEEN 20 AND 27 ORDER BY meno ASC ");
           case 28: $vysledek=mysql_query("select * from odbornik WHERE mesto BETWEEN 28 AND 35 ORDER BY meno ASC ");
           case 36: $vysledek=mysql_query("select * from odbornik WHERE mesto BETWEEN 36 AND 49 ORDER BY meno ASC ");
           case 50: $vysledek=mysql_query("select * from odbornik WHERE mesto BETWEEN 50 AND 59 ORDER BY meno ASC ");
           case 60: $vysledek=mysql_query("select * from odbornik WHERE mesto BETWEEN 60 AND 67 ORDER BY meno ASC ");
           case 68: $vysledek=mysql_query("select * from odbornik WHERE mesto BETWEEN 68 AND 79 ORDER BY meno ASC ");
           default: $vysledek=mysql_query("select * from odbornik WHERE mesto=".$loc." ORDER BY meno ASC ");
           }
Problém je v tom, že ak zadam $loc = 43 , tak mi vypise mesto s ID 43, ale ak zadám $loc=36, tak mi toto mesto nevypise. Kde mam chybu?
Ďakujem
Joker
Profil
jerremy:
Jelikož v case větvích chybí break, v $vysledek bude uložený vždycky výsledek dotazu, který je v default (protože je poslední).
Například pokud bude $loc=1, provedou se postupně všechny dotazy (a ten poslední zůstane uložený v $vysledek).

Krom toho tenhle styl programování je dost špatně udržovatelný, úplně stejný dotaz je v kódu v 8 kopiích. Pokud různé větve vedou nastavují různé parametry témuž dotazu, je lepší jen nastavovat ty parametry a dotaz pak provést na jednom místě.
jerremy
Profil *
Joker:
Dakujem za vysvetlenie. Opät skolacka chyba. Nemam rad tie rozdiely v roznych programovacich jazykoch, kedze v skole riesime obycajne delphi.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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