Autor Zpráva
Rellik
Profil
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
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
Tohle
mysql_result($vypis), 0);
by mělo vyhazovat syntaktickou chybu, označená závorka tam nepatří.
Na prvním řádku kódu bych ještě ošetřila vstup pomocí intval.
Rellik
Profil
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("&","&amp;",$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
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
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/

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:

0