Autor | Zpráva | ||
---|---|---|---|
Martin011 Profil |
#1 · Zasláno: 15. 8. 2009, 16:41:37
Ahoj, už jsem na toto téma základal příspěvek-php stránkování. Řešili jsme to i se „SvvimX“,ale mám s tím menší problém. Díval jsem se, jak to mají vyřešené na linuxsoft.cz, ale píše mi to tuhle chybu:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /3w/wz.cz/m/martins-web/soubory/zaj.php on line 8 skript je zde: <?php define ("ROWS", 50); mysql_connect("server", "db", "heslo"); mysql_select_db("db-jmeno"); $vysledek=mysql_query("select * from psc"); while ($zaznam=MySQL_Fetch_Array($vysledek)) echo $zaznam["obec"]." ".$zaznam["psc"]."<BR>\n"; Toto je to místo chybu if (!isset($_GET["celkem"])) { $vysledek=mysql_query("select count(*) as pocet from psc"); $ret=("SELECT * FROM ucast WHERE jmeno like '$vysledek' "); $celkem=$zaznam["pocet"]; } else { $celkem=$_GET["celkem"]; } if ($celkem>ROWS) { if (!isset($_GET["od"])) $od=1; else $od=$_GET["od"]; $vysledek=mysql_query("select * from psc"." limit ".($od-1).", ".ROWS); echo "Záznamů: ".$od."-"; echo (($od+ROWS-1)<=$celkem)?($od+ROWS-1):$celkem; echo " z celkem $celkem "; if ($od==1) echo "Začátek | "; else echo "<a href=\"".$_SERVER["PHP_SELF"]."?celkem=$celkem&od=1\">Začátek</a> | "; if ($od<ROWS) echo "Předchozí | "; else echo "<a href=\"".$_SERVER["PHP_SELF"]."?celkem=$celkem&od=".($od-ROWS)."\">Předchozí</a> | "; if ($od+ROWS>$celkem) echo "Následující | "; else echo "<a href=\"".$_SERVER["PHP_SELF"]."?celkem=$celkem&od=".($od+ROWS)."\">Následující</a> | "; if ($od>$celkem-ROWS) echo "Konec <BR>"; else echo "<a href=\"".$_SERVER["PHP_SELF"]."?celkem=$celkem&od=".($celkem-$celkem%ROWS+1)."\">Konec</a><BR>"; } ?> Budu vděčný za jakoukoliv radu. Díky předem. A když už jsme u toho, tak ještě tu mám jeden problém se stránkováním. Udělal jsem to přesně, jak mi „SvvimX“ řekl,ale píše mi to parse error. Kód je zde: <?php mysql_connect("server", "db-jmeno", "heslo"); mysql_select_db("db"); if(isset($_GET['strana'])){ $strana = is_numeric($_GET['strana'])? $_GET['strana']:1; } else $strana = 1; $pocetradku = mysql_result(mysql_query("SELECT COUNT(*) from diskuze "), 0); if ($pocetradku>0) { // pokud nějaké jsou -> nezbytné výpočty, mysql dotaz, stránkování, jinak nic $pocet = 1; $od = ($strana-1) * $pocet; $limit = "limit $od, $pocet"; $cl=mysql_query("SELECT * FROM diskuze $limit;"); strankovani($pocet, 3, "http://www.neco.wz.cz/index.php?str=zaj&strana=1", $strana, $pocetradku); function strankovani($pocet_radek, $okolo, $url, $strana, $celkem_radek){ if ($celkem_radek>$pocet_radek){ echo "<p class='pages'>"; if ($strana == 1) { echo "Začátek | "; echo "Předchozí | "; } else { echo "<a href=\"".$url."1/\">Začátek</a> | "; echo "<a href=\"".$url."".($strana-1)."/\">Předchozí</a> | "; } for($i = $okolo; $i > 0; $i--){ if(($strana-$i)>0) echo "<a href=\"".($url).($strana-$i)."/\">".($strana-$i)."</a> | ";; } echo $strana." | "; $posledni_strana = ceil($celkem_radek/$pocet_radek); for($i = 1; $i <= $okolo; $i++){ if(($strana+$i)<=$posledni_strana) echo "<a href=\"".($url).($strana+$i)."/\">".($strana+$i)."</a> | "; } if ($posledni_strana == $strana) { echo "Následující | "; echo "Konec"; } else { echo "<a href=\"".$url.($strana+1)."/\">Následující</a> | "; echo "<a href=\"".$url.$posledni_strana."/\">Konec</a>"; } echo "</p>"; } Tady to hlásí parse error } ?> |
||
AM_ Profil |
#2 · Zasláno: 15. 8. 2009, 17:39:14
„supplied argument is not a valid MySQL result resource“
viz FAQ „ale píše mi to parse error“ Stáhni si nějaký editor se zvýrazněním syntaxe (já preferuji PSPad) a hned uvidíš. |
||
Martin011 Profil |
#3 · Zasláno: 15. 8. 2009, 18:01:15 · Upravil/a: Martin011
takže co tam mám nahradit místo mysql_fetch_array? Zkoušel jsem něco v tomto smyslu:
$ret=("SELECT * FROM ucast WHERE jmeno like '$vysledek' "); Dobře a PsPad ihned vyzkouším. Používal jsem ho už předtím, ale nějak jsem od toho opustil. A ten samotný program umí nacházet chyby nebo jak jsi to myslel? |
||
Smokie Profil |
#4 · Zasláno: 15. 8. 2009, 18:44:10
Martin011
ale ten while je v pořádku, špatně je napsaný ten dotaz na databázi. radil bych udělat si ukončení (die) v případě, že se ten skript nepřipojí k DB. Takže zkontroluješ jestli se k databázi skutečně připojíš a potom osekej ten dotaz co nejvíc podle manuálu http://cz2.php.net/manual/en/function.mysql-query.php |
||
AM_ Profil |
#5 · Zasláno: 15. 8. 2009, 18:59:24
Martin011
PSPad zvýrazní syntaxi (řetězce jednou barvou, funkce jinou, klíčová slova tučně atd...), takže když budeš mít kus kódu podbarvený jako řetězec, zřejmě jsi zapomněl uvozovku. Také při najetí na závorku zvýrazní její párovou závorku, takže vidíš, kde ti to nesedí. co se týče toho mysql - ve faq je to dost jasně popsané, a nevšiml jsem si, že by tam bylo něco o nahrazení mysql_fetch_array. Chyba je v dotazu a musíš si vypsat mysql_error |
||
Martin011 Profil |
#6 · Zasláno: 15. 8. 2009, 20:42:25
díky za radu, ten PsPad funguje a našel jsem chybu, chyba byla v závorce u 2.příkladu, co jsem uváděl. Teď mi to už nic nepíše, ale nic se mi také nezobrazuje.
|
||
Alphard Profil |
#7 · Zasláno: 15. 8. 2009, 20:57:16
Martin011:
„Teď mi to už nic nepíše, ale nic se mi také nezobrazuje.“ Asi tam bude nějaké chyba. Byl dotaz na databázi úspěšný? Pokud ano, vrátil nějaké řádky? Pokud ne, co říká mysql_error()? Předávají se správně proměnné? Atd. |
||
Martin011 Profil |
#8 · Zasláno: 15. 8. 2009, 21:14:35 · Upravil/a: Martin011
mě spíše zajímá ten druhý příklad, co jsem uváděl.
Opravil jsem tam závorku, ale nic se mi nezobrazilo. Je tam ještě nějaká chyba v tom druhém příkladě? Na stránce mi to nic nepíše, ale žádné stránkování se nezobrazí. |
||
AM_ Profil |
#9 · Zasláno: 16. 8. 2009, 10:28:09
Martin011
zkoušel jsi nějaký debugging? tj vypiš si klíčové proměnné, zjisti, kudy program prochází atd... Pokud se do zdrojáku nevypíše vůbec nic, znamená to, že program zřejmě ani neprojde podmínkou if ($celkem_radek>$pocet_radek) |
||
Časová prodleva: 15 let
|
0