Keresés
Hírlevél
 
Kiemelt témák
»Hogyan védjem meg a portálomat?
»Google wave
»Assembly :: röviden
Állás/munka
»IPhone App elkészítése
»PHP Fejlesztőt keresünk Miskolcon!
»Profi sitebuildert keresünk projekt alapon
»PHP állás azonnali belépéssel Budaörsön
»PHP programozó munkát vállal
» több téma
Tudástár
?Php oldal sebessége.
Több adat kiírása.
?Flash-XML kommunikáció
?Eseménykezelés, form és usercontroll kapcsolat
?Javascript űrlapok
?Adatok táblába írás után kód van ékezet helyett
?C# progira skin
PHP-ban az if nem fut le
?Datagrid frissítése vb .net
?C# Linq"Sql Insert Sequence
?Visual basic - goto
Mi az a __nonnull() ???
?Bibrálás Nokia 3720-ban J2ME-vel
*Child class visible vagy sem?
*JAVA event a JPANEL-hez
» több téma
Társalgó
»Clipper kontra XP
»Melyik főiskola vagy egyetem?
»Programozás Nokia 3720c-2-re
»HTML szerkesztő
»Weblap véleményezés
»"Márió" jellegű játék írása pascal nyelven
»Windows Mobile programozás egyszerű programmal
»Html oldal küldése outlookkal
»Lelkesítő topic
»Javascript forrás visszaalakítása
» több téma
ASP  |  C#  |  C++  |  CSS  |  Delphi  |  Flash  |  HTML  |  Java  |  JavaScript  |  Pascal  |  Perl  |  PHP  |  Python  |  Visual Basic  |  Visual C++  |    »    

Tudástár

»

Else ág hibája

»

Else ág hibája

nyitotta: notcsak, idő: 2010.02.08., moderátor: Árnyék
  Értesítés változás esetén Felvétel kedvencekhez Küldés emailben Nyomtatható verzió

Kategóriák:Programozási nyelvek » PHP

Sorrend:
Időzóna:
Blokkméret:
Helló!

Készítettem egy egyszerű törlési progit, de nem ugy működik, ahogy kell.
Mert: kiírja, hogy "Nincs mit törölni", de ugyanakkor végrehajtódik a törlési metódus, tehát töröl is egyben!

<?
if ($_SESSION['belepett']== true)
{

 $sql="SELECT ID,KULDOSZAM FROM tabla WHERE (SZAMCIM='".$_SESSION['btelsz']."') AND (ID='".$tkid."')";
 $query = mysql_query($sql);
 if (!$query ) { die('Érvénytelen lekérdezés' . mysql_error()); }

 if (mysql_num_rows($query)!==0)
 {
  $sql="DELETE FROM tabla WHERE (SZAMCIM='".$_SESSION['btelsz']."') AND (ID='".$tkid."') LIMIT 1";
  $query = mysql_query($sql);
  if (!$query ) { die('Érvénytelen lekérdezés' . mysql_error()); }
  echo "Törölve!";
 }
 else
 {
   echo "Nincs mit törölni!";
 }

} else { echo "Nincs jogosultsága megtekinteni az oldalt"; }
?>
Mit nem veszek észre?
Biztos nem nézel el semmit?

Irasd ki mindenhol az $sql-eket, és akkor látod, merre jár.
 $sql="SELECT ID,KULDOSZAM FROM tabla WHERE (SZAMCIM='".$_SESSION['btelsz']."') AND (ID='".$tkid."')";

$tkid hol kap értéket?
Én ugy gondolom nem nézek el semmit, de a fő, hogy valóban letörli az adatbázisból az üzenetet, de mégis azt írja ki, hogy "Nincs mit törölni".


Most beírtam a törlési ágba egy echo "valami"; -t, de nem is írja ki, hogy "valami"....
Nem értem hol ronthattam el.
a fejlécben kap értéket/ index.php?tkid=2 /
mysql_query($sql);

helyett
mysql_query($sql) or die(mysql_error());

Kiír valamit?
Akkor
(ID='".$_GET['tkid']."')";
és van is valami módon átvitel vagy register_globals be van kapcsolva? Ha nincs bekapcsolva akkor nem képződik ilyen nevű változód.

Első esetben pl ilyenre gondolok:
$tkid = intval($_GET['tkid']);
Micu: kicseréltem (ID='".$_GET['tkid']."')";, de akkor is csak azt írja ki, hogy nincs mit törölni és ugyanúgy törli.

Frostech0: szépen kiírja a "21"-et, ha index.php?tkid=21 -ről linkelek.
és ami érdekes, hogy
nem ír ki semmit, ha mondjuk bebiggyesztek egy ilyen sort

 if (mysql_num_rows($query)!==0)
 {

echo "MŰKÖDJ!";

  $sql="DELETE FROM tabla WHERE (SZAMCIM='".$_SESSION['btelsz']."') AND (ID='".$tkid."') LIMIT 1";
  $query = mysql_query($sql);
  if (!$query ) { die('Érvénytelen lekérdezés' . mysql_error()); }
  echo "Törölve!";
 }
Tehát töröl, de nem írja ki, hogy "MŰKÖDJ"
echo "MŰKÖDJ!";
die("----");

Mit csinál?
felettébb érdekes... nem hiszem hogy sokat számít de kicserélnéd a <? -t <?php -re?
De már kértem:
Minden lekérdezés
Irasd ki mindenhol az $sql-eket, és akkor látod, merre jár.
Kiírja, hogy:
MŰKÖDJ----
De ha kiveszem a die-t, akkor ugyanúgy nem irja ki, hogy működj, tehát a die-kijavítja
Szerintem újratölti az oldal magát


 if (mysql_num_rows($query)!==0)
 {

  $sql="DELETE FROM tabla WHERE (SZAMCIM='".$_SESSION['btelsz']."') AND (ID='".$tkid."') LIMIT 1";
  $query = mysql_query($sql) or die('Érvénytelen lekérdezés' . mysql_error());

echo $sql;
  echo "Törölve!";
die("-----");
 }

Most mit csinál?
"Nincs mit törölni"
Kicseréltem, de nem az volt a hiba
 if (mysql_num_rows($query)!==0)
 {

echo "MŰKÖDJ!";

  $sql="DELETE FROM tabla WHERE (SZAMCIM='".$_SESSION['btelsz']."') AND (ID='".$tkid."') LIMIT 1";

echo "1: $sql<br>";
die("---"); // Ha itt jó, vedd ki ezt a sort
  $query = mysql_query($sql) or die('Érvénytelen lekérdezés' . mysql_error());

echo "2";
die("---"); // Ha itt jó, vedd ki ezt a sort

  echo "Törölve!";

die("---"); // Ha itt jó, ?????

 }
a másodiknál már nem írja ki:
---
Tehát hibás a másodiknál.
Tehát ha echo "1.." utáni die-t kivetted, akkor nem írta az echo 2-t?

mysql_query($sql) or die('Érvénytelen lekérdezés' . mysql_error());
nem írta ki echo 2-t, és akkor csak azt írta ki, hogy
"Nincs mit törölni!"
és ugye még volt mit törölni?
hát akkor nem, ha ujra betölti az oldalt, de nem töltetem be ujra
nem értem még mindig, mi a hiba.
Csak amit elmondtál, hogy lehet ujratölti az oldalt.... mert akkor már valóban nincs mit törölni.
Óóó, de bonyolult az élet
Micu, a "die" az végül is miért javítja meg?
Azért, mert a die() megakadályozza, hogy az oldal újratöltéséért felelős rész lefusson.
Értem.
De miért akarja újratölteni? Hol van az a sor, ami miatt ujratölti?
Valójában tényleg csak 1 rekordot akarsz törölni? Nem lehet, hogy ez az egész egy ciklusban van, és így ciklusfordulatonként egyessével törlöd az üzeneteket? Csak mert ekkor egyszerre kellene az SQL-lel az összes üzenetet törölni az IN (halmaz) módszerrel. A te hibád ebben az esetben az, hogy a ciklusfordulatonként nem módosítod se a $_SESSION['btelsz']-t, se a $tkid-t. Szóval ciklusban van az egész?
Nincs ciklusba, de bemásoltam a kérdésembe a teljes forráskódot, ott láthatod te is.
Még mindig nem hagy nyugodni ez a probléma, ami végül is megoldódott a "die" beírásával, de nem értem a hibát, azaz hogy hol van benne a ciklus:

<?
if ($_SESSION['belepett']== true)
{

 $sql="SELECT ID,KULDOSZAM FROM tabla WHERE (SZAMCIM='".$_SESSION['btelsz']."') AND (ID='".$tkid."')";
 $query = mysql_query($sql);
 if (!$query ) { die('Érvénytelen lekérdezés' . mysql_error()); }

 if (mysql_num_rows($query)!==0)
 {
  $sql="DELETE FROM tabla WHERE (SZAMCIM='".$_SESSION['btelsz']."') AND (ID='".$tkid."') LIMIT 1";
  $query = mysql_query($sql);
  if (!$query ) { die('Érvénytelen lekérdezés' . mysql_error()); }
  echo "Törölve!";
 }
 else
 {
   echo "Nincs mit törölni!";
 }

} else { echo "Nincs jogosultsága megtekinteni az oldalt"; }
?>
Én nem tudok programozni, csak amennyit suliban tanultam turbo pascalt, szóval lehet, hogy valamit én nézek el
Belépés
E-mail cím:
Jelszó:

RSS források
-Hírek
-Cikkek
-Fórumok
Top pontgyűjtők
»Micu1.770
»Árnyék810
»vinie530
»Frostech0440
»Riha400
»pelz350
»djjjozsi310
»stl290
»klorand250
»NevemTeve230
Hírek
»Letölthető a Mozilla Jetpack SDK első kiadása
»Saját alkalmazásboltot nyitott a Google
»Súlyos sebezhetőség minden Apache kiszolgálóban
»Natív 3D-s támogatás a legújabb Android fejlesztőkészletben
»A Windows titkos eredete
» több hír
PC Fórum hírek
»Nem boldogul az legújabb merevlemezekkel az XP és a Linux
»Átírják a Firefox licencszerződését
»Több tízezer nebuló a Microsuliban
»Sebezhető az Internet Explorer és az Opera is
»Még márciusban megjelenik az Intel nyolcmagos szerverlapkája
»Hamis Core i7 processzorokat árultak a neten
»Korábban jön a Windows 7 Service Pack 1
»Április elejétől lesz kapható az iPad
Tagi blogok
»USB
»PHP, mint sablonmotor egyszerűen
»Én és linux
»Coming out