Autor Zpráva
Karoll305
Profil *
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
Zisti si rozdiel medzi AND a OR
ninja
Profil
LIKE %".$user."%


zmen to na
LIKE '%".$user."%'
bohyn
Profil *
$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 *
bohyn
Co je spatneho na pretypovani promenne pomoci (int) nebo intval(...)? Jinak samozrejme addslashes a htmlspecialchars tam jsou nadbytecne.
bohyn
Profil *
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 *
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
Karoll305

Protože to máš furt blbě. Dej si tam
$sql=("SELECT * FROM users WHERE user LIKE '%".$user."%'") or die (mysql_error()); 
Karoll305
Profil *
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
Karoll305

A co dáváš do mysql_fetch_array() ???
Karoll305
Profil *
while($result=mysql_fetch_array($sql)){
.. vypis datov ...
}
DJ Miky
Profil
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
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 *
BetaCam
no ano ... ale preco mne to nevypise nic iba tu chybu ?
BetaCam
Profil
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 *
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
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 *
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
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 *
BetaCam
aha jo mas pravdu :D hehe ... no dikec ...

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