Hibaüzenet amit a PHP Designer 8 nem vesz észre. Mi az? Mi a hiba?
Hali!
elég mérges vagyok mivel megvettem a php designer 8-at és nem vesz észre egy hibaüzenetet!
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/a9426947/public_html/7/images/kell/php.php on line 148
a kód pedig:
ez a php.php érintett része:
if ("4" == $op ){
$hozzaferes = $_SESSION['hozzaferes'];
if ($hozzaferes == "TRUE"){
session_start();
$nev = $_SESSION['nev'];
//ez hozza be a kapcsolódási adatokat!
$veh = '2';
include ("images/kell/php.php");
unset ($veh);
$con = mysql_connect ($host,$dbuser,$dbpass);
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db($dbname, $con);
$nev = $_SESSION['nev'] ;
$result = mysql_query("DELETE FROM zl WHERE user='$nev'");
while($row = mysql_fetch_array($result))
{
echo "<br>ön 3szor egymás után helytelen kódot adott meg.<br>Így a rendszerünk a biztonság érdekében eltávolította a rendszerbõl!<br>Próbálkozzon újra vagy kérjen segítséget az ügyfélszolgálattól!";
unset($_SESSION['nev']);
unset($_SESSION['alap']);
unset($_SESSION['email']);
unset($_SESSION['szerel']);
unset($_SESSION['hozzaferes']);
unset($_SESSION['md5']);
unset($_SESSION['id']);
echo "<meta http-equiv='refresh' content='3; ?v=reg' />";
}
mysql_close($con);
}else{echo "ennek a funkció eléréséhez be kell jelentkeznie!<meta http-equiv='refresh' content='2; ?v=8&error=4' />";}
}
törölni törölte a rendszerből csak nem írta ki a szöveget (ön 3szor egymás után........)
üdv.
segítségeteket várom!
ááá ez bonyolult!
a php.php több lapot rejt:
//config.php = 2
//loginconfig.php = 3
//törlés.php = 4
//alaplegeneráló.php = 5
és akkor ezeknek nem kell külön lapokat létrehozni!
ez NEKEM átláthatóbb!
a php designer 8 szerint ez a 148. sor:
while($row = mysql_fetch_array($result))
én ebbe semmilyen hibát nem láttam!
viszont ha ebben van a hiba akkor az alapgenerációban is kell , hogy legyen , mivel ez később volt mint az így azt másoltam ebbe majd átalakítottam.(huuuu)
csak ott valszeg azért nem mutat hibaüzenetet mert az átirányítás előtt mutatkozik meg(azaz nem látszik)
mert így találtam ki és pont.
de am a parancs lefut...törli a fickót!
persze hogy törli, hisz a mysql_query lefut, de a while ciklus nem futhat le, hisz DELETE sql paranccsal az nem futhat le! Másrészt, minek kell a while($row...stb.)?? Ha a cikluson belül mégcsak meg sem hívod egyszer sem a $row tömböt? Semmi értelme. Mellesleg nem is kaphat értéket a $row tömb, hisz nincs miből. Az egész while ciklus úgy ahogy van felesleges.
Plusz ha már átirányítasz valakit, akkor a honlap közepén mit keres egy meta tag? Ráadásul az egyik meta refresh a ciklusban található...nem túl szerencsés.
Megy itt a favágás rendesen. Ne bántsuk szegény php designert, nem az ő bűne.
Ahogy az előttem lévő is írta a delete query nem ad vissza resource-ot, így a mysql_fetch_array értelmezhetetlen a php számára.
áhááááá!
utolsónak:
az azért van mert még az előző kódrészletből ott maradt!(hmm)
szóval így működni-e kellene...nem?
if ("4" == $op ){
$hozzaferes = $_SESSION['hozzaferes'];
if ($hozzaferes == "TRUE"){
session_start();
$nev = $_SESSION['nev'];
//ez hozza be a kapcsolódási adatokat!
$veh = '2';
include ("images/kell/php.php");
unset ($veh);
$con = mysql_connect ($host,$dbuser,$dbpass);
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db($dbname, $con);
$nev = $_SESSION['nev'] ;
$result = mysql_query("DELETE FROM zl WHERE user='$nev'");
echo "<br>ön 3szor egymás után helytelen kódot adott meg.<br>Így a rendszerünk a biztonság érdekében eltávolította a rendszerbõl!<br>Próbálkozzon újra vagy kérjen segítséget az ügyfélszolgálattól!";
unset($_SESSION['nev']);
unset($_SESSION['alap']);
unset($_SESSION['email']);
unset($_SESSION['szerel']);
unset($_SESSION['hozzaferes']);
unset($_SESSION['md5']);
unset($_SESSION['id']);
echo "<meta http-equiv='refresh' content='3; ?v=reg' />";
mysql_close($con);
}else{echo "ennek a funkció eléréséhez be kell jelentkeznie!<meta http-equiv='refresh' content='2; ?v=8&error=4' />";}
}
am azért a lap közepén van a meta tag mert a headot csak utána zárjuk le!
na ezt nem akarom túlragozni mivel akkor le kéne vezetnem a létrehozási mikéntjét!
Ez a hiba konkrétan arra utal, hogy a mysql query hibás, vagyis ebben a részletben van a hiba:
"DELETE FROM zl WHERE user='$nev'"
Ezt én úgy szoktam ellenőrizni, hogy a hívás elé beszúrom a query string kijelzését. jelen esetben ezt:
print "DELETE FROM zl WHERE user='$nev'";
Ez az oldalon kijelzi magát a lekérdezés stringjét. Előfordulhat, hogy a változó ($nev) üresen kerül be, vagy a tábla rosszul van meghíva...
A kijelzett stringet aztán bemásolhatod a phpmyadmin query részébe, mert az több infót is adhat a lekérdezés hibájáról.
A hibaüzenet nem azt jelenti hogy a mysql lekérdezésben van a gond, tehát a DELETE igen is jó. A hibaüzenet azt jelenti, hogy nem lehet while-al végigfutni rajta, mivel a query nema d vissza tömbböt. Az végrehatódik és kész. Ezt többen is leírták.
if ($hozzaferes == "TRUE")... a TRUE-t nem kell idézőjelek közé tenni, és booleant így hasonlítunk össze: if($hozzaferes === TRUE)...
a session_start(); mindig az index fájl elején álljon!
$veh = '2'; - ha integer akar lenni akkor nem kell idézőjel, különben string lesz
mysql_connect-et ne tessék bele rakni a kód közepére, elején megnyitod és kész, ezt is beincludeolhatod az index fájlban. másrészről die-al ne kezeld, mert az csak annyit takar hogy félúton abbahagyja a kód futását. Akkor már inkább exit(), de inkább a kivételkezelést kellene átnézned
echo "<meta http-equiv='refresh' content='3; ?v=reg' />";
ezt ne így, hanem használd a php header(); függvényét, amúgy a header mindig a kód elejére kerüljön, minden kimenet elé
mysql_close($con); ez nem mindenféleképpen kell, mivel a mysql kapcsolat magától zárul ha a szerver normálisan van beállítva
}else{echo "ennek a funkció eléréséhez be kell jelentkeznie!<meta http-equiv='refresh' content='2; ?v=8&error=4' />";}
}
ennek semmi értelme, iszonyat csúnya
Drone007:
Ez a hiba konkrétan arra utal, hogy a mysql query hibás, vagyis ebben a részletben van a hiba:
"DELETE FROM zl WHERE user='$nev'"
ha elolvastad volna az előző hsz-eket akkor rájöhetnél mekkora marhaságot írtál. Amúgy ha a $nev üresen kerül be akkor sem fog hibát dobni. A phpmyadmin-ba nem másolgatunk semmit, hanem használjuk a mysql_error() függvényt!
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!