| 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: 14 let
|
|||
0