Autor | Zpráva | ||
---|---|---|---|
Rellik Profil |
#1 · Zasláno: 17. 6. 2011, 16:34:36 · Upravil/a: Rellik
Zdravím, dnes sem narazil ta takový problémek. Na webu vytvářím kalendář akcí a mám tam pár věcí, které se ověřují a podle toho se pak data vypisují. No pochopit to půjde z kódu:
$mesic = $_GET['mesic']; // 1-12 if(!$mesic) { $vypis = mysql_query("SELECT * FROM kalendar order by id desc limit 0,6"); // pokud není zadán výběr měsíce zobrazí se posledních 6 ůdajů } else { $vypis = mysql_query("SELECT * FROM kalendar WHERE mesic=".$mesic.""); // pokud je zadán měsíc vypíší se všechny údaje v měsíci } // a tady chci zjistit jestli pro daný měsíc nebo celek existují nějaké údaje $kalendarExist = mysql_result($vypis), 0); // takhle sem to podle doporučení zkoušel jako první a tak to nefunguje $kalendarExist = mysql_num_rows($vypis); // tohle nedoporučené funguje if($kalendarExist) { // zpracování výpisu dat pro daný měsic } else { echo "Pro daný měsíc nejsou žádné údaje"; } Prozradí mi někdo proč to pro doporučené získání dat z tabulky, jestli nějaké existují nefunguje?? |
||
DarkMeni Profil |
#2 · Zasláno: 17. 6. 2011, 16:45:43
Mám pocit že jestli chceš jenom počet řádků tak máš k výběru přidat COUNT(*), ale jestli ty data stejně budeš potřebovat tak tozdíl rychlosti resultu a num_rows je zanedbatelný (teda když netaháš těch dat až moc).
|
||
Tori Profil |
#3 · Zasláno: 17. 6. 2011, 16:49:17
Tohle
mysql_result($vypis), 0); Na prvním řádku kódu bych ještě ošetřila vstup pomocí intval. |
||
Rellik Profil |
#4 · Zasláno: 17. 6. 2011, 17:02:50 · Upravil/a: Rellik
DarkMeni:
postupem času tam těch dat moc bude... Tori: Jo díky byla to ta závorka, já na to pak přišel, ono původně sem tam měl zadaný přímo ten dotaz a pak to měnil na ten $vypis - nicméně to stejně nefunguje jak má. Zobrazí se buď, že v daném měsíci nic není a nebo pokud v měsíci něco je, tak to nic nevypíše, kromě prvního měsíce (1) Jinak ty měsíce jsou generovány pomocí for ($i=1; $i<=12; ++$i) { if($page == '') { $adresa = "?"; } else { $adresa = $_SERVER["REQUEST_URI"]."&"; } $adresa=str_replace("&","&",$adresa); echo "\t".'<td><a href="'.$adresa.'mesic='.$i.'">'.$i.'</a></td>'."\n"; if($i == "6"){echo "</tr><tr>\n";} } tak myslím že není třeba ošetřovat vstup. |
||
Tori Profil |
#5 · Zasláno: 17. 6. 2011, 17:19:00
A když si tu adresu mírně přepíšu na ?mesic=blbost, tak $_GET[mesic] nebude prázdné, půjde se do větve else a SQL dotaz ".... WHERE mesic = blbost" vyhodí chybu "Neexistující sloupec jménem blbost" (+ následné chyby typu "Supplied argument is not a valid MySQL resource").
Kdežto intval('blbost') --> 0, což se v podmínce vyhodnotí jako false a bez problémů se zobrazí nejnovějších 6 akcí. Samozřejmě vám to nenutím, jen abyste věděl o té možnosti. |
||
Rellik Profil |
#6 · Zasláno: 17. 6. 2011, 17:32:56
Když dám místo měsíce ?mesic=blbost tak to vypíše, že v daném měsíci nejsou žádné údaje, takže to pojede dál. Ovšem s tím intval() je pravda, že to vypíše těch posledních 6 akcí.
Jinak funkční ukázka je tady: http://veletiny.cz/new/ |
||
Časová prodleva: 13 let
|
0