Autor | Zpráva | ||
---|---|---|---|
Karoll305 Profil * |
#1 · Zasláno: 21. 10. 2008, 23:15:33
ahojte mam tento kod na vyhladavanie ale pise mi to chybu v sql dotaze a neviem preco...
pise tuto chybu ak je poslany funktion.... Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in if(isset($_POST['funktion'])){ $user = addslashes(htmlspecialchars($_POST['mitglied'])); $geschlecht = (int)addslashes(htmlspecialchars($_POST['geschlecht'])); $plz = (int)addslashes(htmlspecialchars($_POST['plz'])); $wohnort = addslashes(htmlspecialchars($_POST['wohnort'])); if($_POST['funktion'] == "1"){ $sql=("SELECT * FROM mesta WHERE user LIKE %".$user."%"); }elseif($_POST['funktion'] == "2"){ $sql=("SELECT * FROM mesta WHERE geschlecht LIKE %".$geschlecht."%"); }elseif($_POST['funktion'] == "3"){ $sql=("SELECT * FROM mesta WHERE plz LIKE %".$plz."% OR wohnort LIKE %".$wohnort."%"); }elseif($_POST['funktion'] == "1" AND $_POST['funktion'] == "2" AND $_POST['funktion'] == "3"){ $sql=("SELECT * FROM mesta WHERE plz LIKE %".$plz."% OR wohnort LIKE %".$wohnort."% AND user LIKE %".$user."% AND geschlecht LIKE %".$geschlecht."%"); }elseif($_POST['funktion'] == "1" AND $_POST['funktion'] == "2"){ $sql=("SELECT * FROM mesta WHERE user LIKE %".$user."% AND geschlecht LIKE %".$geschlecht."%"); }elseif($_POST['funktion'] == "1" AND $_POST['funktion'] == "3"){ $sql=("SELECT * FROM mesta WHERE user LIKE %".$user."% AND plz LIKE %".$plz."% OR wohnort LIKE %".$wohnort."%"); }elseif($_POST['funktion'] == "2" AND $_POST['funktion'] == "3"){ $sql=("SELECT * FROM mesta WHERE geschlecht LIKE %".$geschlecht."% AND plz LIKE %".$plz."% OR wohnort LIKE %".$wohnort."%"); } } |
||
tiso Profil |
#2 · Zasláno: 22. 10. 2008, 00:19:18
Zisti si rozdiel medzi AND a OR
|
||
ninja Profil |
#3 · Zasláno: 22. 10. 2008, 00:55:10
LIKE %".$user."% zmen to na LIKE '%".$user."%' |
||
bohyn Profil * |
#4 · Zasláno: 22. 10. 2008, 08:54:55
$plz = (int)addslashes(htmlspecialchars($_POST['plz']));
Tohle je naprostej nesmysl pouzij misto toho: $plz = $_POST['plz'] + 0; Jiank po SQL dotazu si vzdycky overuj jestli to nevyhodilo chybu pri ladeni muzes pouzit napr.: if(mysql_errno()) { echo mysql_errno().": ".mysql_error(); } nebo si na to napsat fci ktera pri ladeni vypise chybu do stranky a pri ostrem provozu pak do logu: $result = mysql_query(...) or debug_sql(mysql_errno(), mysql_error(), __FILE__, __LINE__); function debug_sql() {...} |
||
Sicario Profil * |
#5 · Zasláno: 22. 10. 2008, 10:48:53
bohyn
Co je spatneho na pretypovani promenne pomoci (int) nebo intval(...)? Jinak samozrejme addslashes a htmlspecialchars tam jsou nadbytecne. |
||
bohyn Profil * |
#6 · Zasláno: 22. 10. 2008, 11:43:14
Sicario:
„Co je spatneho na pretypovani promenne pomoci (int) nebo intval(...)? Jinak samozrejme addslashes a htmlspecialchars tam jsou nadbytecne.“ na (int) samozrejme nic spatneho neni, ale addslashes a htmlspecialchars tak sou jak pest na oko $plz = $_POST['plz'] + 0; a $plz = (int)$_POST['plz']; udela samozrejme to same |
||
Karoll305 Profil * |
#7 · Zasláno: 22. 10. 2008, 19:27:34
tede testuju tu funkci 1
if($_POST['funktion'] == "1"){ $sql=("SELECT * FROM users WHERE user LIKE %".$user."%") or die (mysql_error()); ale fakt nevim proc pise tu stejnou chybu co delam spatne ... ? ... } |
||
BetaCam Profil |
#8 · Zasláno: 22. 10. 2008, 19:48:48
Karoll305
Protože to máš furt blbě. Dej si tam $sql=("SELECT * FROM users WHERE user LIKE '%".$user."%'") or die (mysql_error()); |
||
Karoll305 Profil * |
#9 · Zasláno: 22. 10. 2008, 19:54:28
BetaCam
dal sem a zase pise tuto chybu Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\www\wamp\www\nano-netz\mitglieder_suchen.php on line 51 |
||
BetaCam Profil |
#10 · Zasláno: 22. 10. 2008, 19:59:16
Karoll305
A co dáváš do mysql_fetch_array() ??? |
||
Karoll305 Profil * |
#11 · Zasláno: 22. 10. 2008, 20:13:49
while($result=mysql_fetch_array($sql)){ .. vypis datov ... } |
||
DJ Miky Profil |
#12 · Zasláno: 22. 10. 2008, 20:29:01
A vrátí se ti vůbec nějaké řádky / vyhovuje té podmínky nějaký záznam? Měl bys mezi query() a fetch_array() ještě kontrolovat počet řádků pomocí mysql_num_rows(), pokud se ti něco vrátilo.
|
||
BetaCam Profil |
#13 · Zasláno: 22. 10. 2008, 20:46:47 · Upravil/a: BetaCam
DJ Miky
No to není až tak potřeba. mysql_query() vždy vrátí resource bez ohledu na to jestli byl nebo nebyl vrácen nějaký řádek. EDIT: Samozdřejmě pokud se bavíme o SELECTu pouze pokud dotaz selže vrací FALSE Pokud by sme se bavili o INSERT, UPDATE atd. tak tam se zas vrací TRUE nebo FALSE při selhání. |
||
Karoll305 Profil * |
#14 · Zasláno: 22. 10. 2008, 20:52:52
BetaCam
no ano ... ale preco mne to nevypise nic iba tu chybu ? |
||
BetaCam Profil |
#15 · Zasláno: 22. 10. 2008, 20:59:35 · Upravil/a: BetaCam
Karoll305
„no ano ... ale preco mne to nevypise nic iba tu chybu ?“ Pokud ti mysql_query nevyhazuje chybu. Tak vidím jedno logické vysvětlení, které s velkou pravděpodobností zapříčiňuje u tebe tuto chybu : Nemáš proměnou $sql vůbec inicializovanou. Důvod : Chybí ti else větev u podmínek nahoře a s velkou pravděpodobností kontroluješ blbou $_POST proměnnou takže se ti proměnná $sql vůbec nenaplní. EDIT : Možná že to tím není, ale z logiky věci mi to přijde jako nejpravděpodobnější příčina |
||
Karoll305 Profil * |
#16 · Zasláno: 22. 10. 2008, 21:22:58
s kontroloval sem vsetko ... no i kdys dam jen jeden sql
tenhle jednoduchej $sql=("SELECT * FROM mitglieder") or die (mysql_error()); tak mi to napise stejne tu chybu tu vam dam celej kod akcia funguje post som kotroloval if(isset($_POST['funktion'])){ $user = addslashes(htmlspecialchars($_POST['mitglied'])); $geschlecht = (int)$_POST['geschlecht']; $plz = (int)$_POST['plz']; $wohnort = addslashes(htmlspecialchars($_POST['wohnort'])); if($_POST['funktion'] == "1"){ $sql=("SELECT * FROM mitglieder WHERE user LIKE '%".$user."%'") or die (mysql_error()); } } if(isset($_POST['funktion'])){ while($result=mysql_fetch_array($sql)){ ... vypisi } } |
||
BetaCam Profil |
#17 · Zasláno: 22. 10. 2008, 21:29:24
Karoll305
Dej sem kód formuláře, kterým to odesíláš. „$sql=("SELECT * FROM mitglieder") or die (mysql_error()); “ no a ten dotaz si dal kam?? |
||
Karoll305 Profil * |
#18 · Zasláno: 22. 10. 2008, 22:00:53
BetaCam
no odstranil sem ty if ... a dal sem tam jeden sql ... tu je kod formulare <form method="POST" action=""> <table class="table_0"> <tr> <th><input name="funktion" value="1" type="checkbox">Mitglied:</th><td><input name="mitglied" type="text"></td> </tr> <tr> <th><input name="funktion" value="2" type="checkbox">Geschlecht:</th><td> <input name="geschlecht" value="2" type="radio">Weiblich <input name="geschlecht" value="1" type="radio">Männlich </td> </tr> <tr> <th><input name="funktion" value="3" type="checkbox">plz, wohnort:</th><td><input name="plz" type="text"> <input name="wohnort" type="text"></td> </tr> <tr> <td colspan="2" rowspan="1"><input name="suchen_action" value="Suchen" type="submit"></td> </tr> </table> </form> |
||
BetaCam Profil |
#19 · Zasláno: 22. 10. 2008, 22:56:03
Karoll305
Aha tak omluva sem blb. Protože opravdu nekoukám. $sql=("SELECT * FROM mitglieder WHERE user LIKE '%".$user."%'") or die (mysql_error()); je hovadina protože to vůbec nepošleš DB chybí ti tam mysql_query() takže si ho tam všude doplň takto : $sql=mysql_query("SELECT * FROM mitglieder WHERE user LIKE '%".$user."%'") or die (mysql_error()); |
||
Karoll305 Profil * |
#20 · Zasláno: 22. 10. 2008, 23:21:10
BetaCam
aha jo mas pravdu :D hehe ... no dikec ... |
||
Časová prodleva: 15 let
|
0