Archiv verlassen und diese Seite im Standarddesign anzeigen : MySQL Prob
Hazzardous 21-07-2004, 11:43 Hallo,
das folgende Skript wird mit Variablen gefüttert. Es ist ein Teil einer Sortierfunktion. Allerdings funktioniert es grade irgendwie nicht. Darum habe ich mal die "OR die...." angehängt. Es hakt sich zwar das Script auf, allerdings wird mir keine Fehlermeldeung ausgegeben.
Könntet ihr mal einen Blick drauf werfen?
if($csort_up) {
$sql_csort = "SELECT menusort FROM content
WHERE menusort < '$id' AND
status = 'subcategory' AND
m = '$valm'
ORDER BY menusort DESC LIMIT 1;";
$result_csort = mysql_query($sql_csort) OR die(mysql_error());
$row_csort = mysql_fetch_assoc($result_csort) OR die(mysql_error());
$sortchange = $row_csort["menusort"];
echo $sortchange;
$sql_csort_get_id_id = "SELECT id
FROM content
WHERE menusort = '$id' AND
status = 'subcategory' AND
m = '$valm'
ORDER BY id DESC LIMIT 1;";
$sql_csort_get_id_sortchange = "SELECT id
FROM content
WHERE menusort = '$sortchange' AND
status = 'category' AND
m = '$valm'
ORDER BY id DESC LIMIT 1;";
$result_csort_get_id_id = mysql_query($sql_csort_get_id_id)
OR die(mysql_error());
$result_csort_get_id_sortchange = mysql_query($sql_csort_get_id_sortchange)
OR die(mysql_error());
$row_csort_get_id_id = mysql_fetch_assoc($result_csort_get_id_id)
OR die(mysql_error());
$row_csort_get_id_sortchange = mysql_fetch_assoc($result_csort_get_id_sortchange)
OR die(mysql_error());
$idsort = $row_csort_get_id_id["id"];
$msort = $row_csort_get_id_sortchange["id"];
$sql_sort_entry_up2 = "UPDATE content SET
menusort='$sortchange'
WHERE id = '$idsort';";
$sql_sort_entry_up1 = "UPDATE content
SET menusort='$id'
WHERE id = '$msort';";
mysql_query($sql_sort_entry_up2) OR die(mysql_error());
mysql_query($sql_sort_entry_up1) OR die(mysql_error());
}
Das echo $sortchange wird schon nicht mehr angezeigt...
Schreibe 1000 mal "Ich will nie wieder so lange Zeilen posten"
Big Chief 21-07-2004, 11:48 Es wird keinerlei Fehlermeldung ausgegeben, sondern "nur" die Variable ist leer?
Wenn dem so ist, überprüf am besten mal die Query indem du sie direkt in PMA ausführst (nat. für die Vars die gleichen Werte einsetzen wie beim Funktionsaufruf) und schau ob überhaupt ein Datensatz gefunden wird.
Hazzardous 21-07-2004, 13:14 Egal was in dem "echo" steht, es kommt garnix bei raus. Kann auch text stehen. An der stelle passiert eben "OR die(..."
mrhappiness 21-07-2004, 14:20 if($csort_up) {
echo 'Kontrollausgabe<br />';
echo 'SQL:';
echo $sql_csort = "SELECT ...";
echo '<br />';
$result_csort = mysql_query($sql_csort) OR die(mysql_error());
$row_csort = mysql_fetch_assoc($result_csort) OR die(mysql_error());
echo $sortchange = $row_csort["menusort"];
# Rest
}jetzt sollte auf jeden fall was ausgegeben werden, es sei denn, die bedingung in deinem if ist nicht erfüllt
einen fehler in deinem select hab ich schon, aber den verrat ich dir nicht, das findest du schon raus, wenn du die fehlermeldung liest;
MaxP0W3R 21-07-2004, 14:26 hier querys ohne ;
Hazzardous 22-07-2004, 11:11 Hey,
ich habe nun einiges versucht. Aber:
Ich bekomme keine Fehlermeldung,
und
Eingetragen wird auch nix.
Was hast du denn gefunden?
Original geschrieben von Hazzardous
ich habe nun einiges versucht.
aha, einiges ...
Hazzardous 22-07-2004, 13:09 Original geschrieben von wahsaga
aha, einiges ...
Wieder ein Kommentar, den du dir sowas von hättest sparen können.
hf
du merkbefreiter !$&% checkst mal wieder gar nicht, worauf ich hinaus will.
sag uns doch endlich mal, was du versucht hast, und mit welchem ergebnis.
z.b. der vorschlag von big chief - du willst mir doch wohl nicht sagen, dass dabei überhaupt keine erkenntnis herausspringt, die weiterhelfen könnte?
aber vielleicht sollte man es sich in zukunft generell sparen, so einem lernunfähigen dummbeutel wie dir überhaupt noch weiterhelfen zu wollen.
bevor jetzt wieder die "nicht jeder wird als PHP-profi geboren"-leier kommt:
das "lernunfähig" ist nicht auf deine programmierkenntnisse bezogen, sondern darauf, dass du immer noch nicht begriffen hast, wie man eine halbwegs ordentliche problembeschreibung postet.
immer nur irgendso ein scheiß á la "hab einiges probiert" (das kann auch in der nase bohren gewesen sein, woher sollen wir beurteilen können, ob deine versuche irgendwelche erfolgsaussichten hatten?), oder "das funzt nicht!!!1".
du solltest langsam mal begreifen, dass es unglaublich schwer ist leuten weiterzuhelfen, die unfähig oder unwillens sind, ein mindestmaß an brauchbaren informationen herauszurücken.
Hazzardous 23-07-2004, 09:01 Alle querys. Gecheckt.
Veriablenübergabe. Gecheckt.
Syntax. Imho i.o.
eben alles was ich so checken kann habe ich versucht. Das was man eben macht wenn man Fehler sucht. Und da keine Fehlermeldung kommt. (!! Auch bei Big Chiefs Methode, zumindest bei mir nicht!!) liegt der Fehler wohl ausserhalb meines PHP Wissens.
PS:
Deine Persönlichen Beleidigungen sind gut.
... für einen 4 Jährigen. So ab jetzt stehst du auf meiner Ignorier-Liste, da von dir weder kritik noch sonst was kommt, sondern nur dumme Sprüche und Beleidigungen. Nun weiß ich auch wie DU 7000+ Posts bekommst. ...Und das von einem Mod...
jetzt sollte auf jeden fall was ausgegeben werden, es sei denn, die bedingung in deinem if ist nicht erfüllthast du das mal überprüft?
Hazzardous 23-07-2004, 14:18 Ja. habe ich. Bedingung ist erfüllt.
Hazzardous 26-07-2004, 13:37 So ich habe nun alle Sachen versucht, die mir angeboten wurden.
Die Bedinung ist erfüllt.
Mit diemysql error bekomme ich keine Fehlermeldung.
Variablen werden korrekt übergeben
Einen Syntaxfehler kann ich nicht finden.
:[
Hier nochmal der Code.
if($csort_up) {
$sql_csort = "SELECT menusort FROM content WHERE menusort < '$id' AND status = 'subcategory' AND m = '$valm' ORDER BY menusort DESC LIMIT 1;";
$result_csort = mysql_query($sql_csort) OR die(mysql_error());
$row_csort = mysql_fetch_assoc($result_csort) OR die(mysql_error());
$sortchange = $row_csort["menusort"];
echo $sortchange;
$sql_csort_get_id_id = "SELECT id FROM content WHERE menusort = '$id' AND status = 'subcategory' AND m = '$valm' ORDER BY id DESC LIMIT 1;";
$sql_csort_get_id_sortchange = "SELECT id FROM content WHERE menusort = '$sortchange' AND status = 'category' AND m = '$valm' ORDER BY id DESC LIMIT 1;";
$result_csort_get_id_id = mysql_query($sql_csort_get_id_id) OR die(mysql_error());
$result_csort_get_id_sortchange = mysql_query($sql_csort_get_id_sortchange) OR die(mysql_error());
$row_csort_get_id_id = mysql_fetch_assoc($result_csort_get_id_id) OR die(mysql_error());
$row_csort_get_id_sortchange = mysql_fetch_assoc($result_csort_get_id_sortchange) OR die(mysql_error());
$idsort = $row_csort_get_id_id["id"];
$msort = $row_csort_get_id_sortchange["id"];
$sql_sort_entry_up2 = "UPDATE content SET menusort='$sortchange' WHERE id = '$idsort';";
$sql_sort_entry_up1 = "UPDATE content SET menusort='$id' WHERE id = '$msort';";
mysql_query($sql_sort_entry_up2) OR die(mysql_error());
mysql_query($sql_sort_entry_up1) OR die(mysql_error());
}
if($csort_up) {
echo $sql_csort = "SELECT menusort FROM content WHERE menusort < '$id' AND status = 'subcategory' AND m = '$valm' ORDER BY menusort DESC LIMIT 1;";
$result_csort = mysql_query($sql_csort) OR die(mysql_error());
$row_csort = mysql_fetch_assoc($result_csort) OR die(mysql_error());
print_r($row_csort);
$sortchange = $row_csort["menusort"];
echo $sortchange;
usw...
oder weißt du, an welcher stelle abgebrochen wird?
Hazzardous 26-07-2004, 14:05 gleich im ersten Fall wird das Print nicht mehr ausgegeben.
Quickborner 26-07-2004, 14:51 Hallo,
mal ein paar Fragen:
echo $sql_csort = "SELECT ...";
dies wird höchstens true liefern, da es eine Zuweisung ist.
Schreib einmal nach $sql_csort="..:"; echo $sql_csort;
Hast Du wirklich eine Spalte 'm' in der Tabelle ?
MySql toleriert es zwar, aber es ist nicht konform, wenn Du nur
'menusort' selektierst, aber in der Where-Klausel Bezug auf andere
Spalten nimmst.
Prüfe doch spaßeshalber, was der mysql-Optimizer aus der Query macht,
mit
$tempsql= mysql_query("EXPLAIN SELECT ....");
$row=mysql_fetch_array($tempsql);
echo $row[0];
nice day
Quickborner
Hazzardous 27-07-2004, 14:36 Hi,
danke für die Hilfe.
Ich habe nun die fehlenden selections im zusammenhang mit dem where clauseln hinzugefügt. Leider ohne Erforlg.
$tempsql= mysql_query("EXPLAIN SELECT menusort, status, m FROM content WHERE menusort < '$id' AND status = 'subcategory' AND m = '$valm' ORDER BY menusort DESC LIMIT 1;");
$row=mysql_fetch_array($tempsql);
echo 'EchoRow='.$row[0];
Dort bekomme ich dann:
EchoRow=content
Hazzardous 27-07-2004, 15:06 Ich habe nochmal einnen Funktionierenden Code, dieser wird bei der Sortierung der Hauptmenüs verwendet. Er funktioniert tadellos.
Im Submenü Skript sind nur 2 änderungen: Die Zuweisung zu der Hauptkategorie durch WHERE m = '$valm' und Status = 'subkategorie' ansonsten sind die Skripte identisch.
Hier das funktionierende:
if($_POST["sortcode"])
{
$id = $_POST["sortcode"];
if($csort_up) {
$sql_csort = "SELECT menusort FROM content WHERE menusort < '$id' AND status = 'category' ORDER BY menusort DESC LIMIT 1;";
$result_csort = mysql_query($sql_csort);
$row_csort = mysql_fetch_assoc($result_csort);
$sortchange = $row_csort["menusort"];
$sql_csort_get_id_id = "SELECT id FROM content WHERE menusort = '$id' AND status = 'category' ORDER BY id DESC LIMIT 1;";
$sql_csort_get_id_sortchange = "SELECT id FROM content WHERE menusort = '$sortchange' AND status = 'category' ORDER BY id DESC LIMIT 1;";
$result_csort_get_id_id = mysql_query($sql_csort_get_id_id);
$result_csort_get_id_sortchange = mysql_query($sql_csort_get_id_sortchange);
$row_csort_get_id_id = mysql_fetch_assoc($result_csort_get_id_id);
$row_csort_get_id_sortchange = mysql_fetch_assoc($result_csort_get_id_sortchange);
$idsort = $row_csort_get_id_id["id"];
$msort = $row_csort_get_id_sortchange["id"];
$sql_sort_entry_up2 = "UPDATE content SET menusort='$sortchange' WHERE id = '$idsort';";
$sql_sort_entry_up1 = "UPDATE content SET menusort='$id' WHERE id = '$msort';";
mysql_query($sql_sort_entry_up2);
mysql_query($sql_sort_entry_up1);
}
Hier das nicht funktionierende:
if($_POST["sortcode"])
{
$id = $_POST["sortcode"];
echo 'id='.$id;
echo 'value m='.$valm;
if($csort_up) {
$sql_csort = "SELECT menusort, status, m FROM content WHERE menusort < '$id' AND status = 'subcategory' AND m = '$valm' ORDER BY menusort DESC LIMIT 1;";
$result_csort = mysql_query($sql_csort) OR die(mysql_error());
$row_csort = mysql_fetch_assoc($result_csort) OR die(mysql_error());
$sortchange = $row_csort["menusort"];
$sql_csort_get_id_id = "SELECT id, menusort, m FROM content WHERE menusort = '$id' AND status = 'subcategory' AND m = '$valm' ORDER BY id DESC LIMIT 1;";
$sql_csort_get_id_sortchange = "SELECT id, menusort, status, m FROM content WHERE menusort = '$sortchange' AND status = 'category' AND m = '$valm' ORDER BY id DESC LIMIT 1;";
$result_csort_get_id_id = mysql_query($sql_csort_get_id_id) OR die(mysql_error());
$result_csort_get_id_sortchange = mysql_query($sql_csort_get_id_sortchange) OR die(mysql_error());
$row_csort_get_id_id = mysql_fetch_assoc($result_csort_get_id_id) OR die(mysql_error());
$row_csort_get_id_sortchange = mysql_fetch_assoc($result_csort_get_id_sortchange) OR die(mysql_error());
$idsort = $row_csort_get_id_id["id"];
$msort = $row_csort_get_id_sortchange["id"];
$sql_sort_entry_up2 = "UPDATE content SET menusort='$sortchange' WHERE id = '$idsort';";
$sql_sort_entry_up1 = "UPDATE content SET menusort='$id' WHERE id = '$msort';";
mysql_query($sql_sort_entry_up2) OR die(mysql_error());
mysql_query($sql_sort_entry_up1) OR die(mysql_error());
}
mal ein paar Fragen:
echo $sql_csort = "SELECT ...";
dies wird höchstens true liefern, da es eine Zuweisung ist.
hast du es mal ausprobiert?
Hazzardous 27-07-2004, 15:59 Jo, kommt nix bei rum. ;(
Original geschrieben von Hazzardous
Jo, kommt nix bei rum. ;( ich meinte den poster :rolleyes:
jetzt mein ich dich: wenn du nicht mal in der lage, die zeile zu finden, wo der/ein fehler auftritt :dontknow: es wird sich bestimmt jemand auf deinen total chaotischen code stürzen.
Hazzardous 27-07-2004, 19:41 Original geschrieben von derHund
ich meinte den poster :rolleyes:
jetzt mein ich dich: wenn du nicht mal in der lage, die zeile zu finden, wo der/ein fehler auftritt :dontknow: es wird sich bestimmt jemand auf deinen total chaotischen code stürzen.
Ich habe jede Variable per echo ausgegeben. Jedes array. Einfach alles. Ich mach seit 4 Tagen nichts anderes als zu versuchen rauszubekommen wo der Fehler liegt. Und der code ist nicht chaotisch. Genie und Wahnsinn liegen dicht beieinander ;)
Ich verstehe nur nicht warum es bei dem funktionierenden Code klappt. Ich bin momentan, was dieses Stück PHP betrifft wie vernagelt und versteh die Welt nicht mehr. Und ohne professionelle Hilfe werde ich es kaum schaffen. Denn trotz etlichen versuchen die ich unternommen habe komme ich nicht auf den Fehler.
Trotzdem danke für deine Bemühungen.
Gruß
Hier das funktionierende::rolleyes: das heißt? wie weit läufts korrekt?
- stell error_reporting auf E_ALL!
- laß dir die queries per echo ausgeben ...
- laß das semikolon weg
- teste in php_my_admin o.ä.
- woher kommen die variablen?
...
ich seh noch tausend debug-möglichkeiten ;)
von wegen, der code wäre nicht chaotisch ...
echo $sql_csort = 'SELECT menusort FROM content WHERE menusort < '.$id.' AND status = "category" ORDER BY menusort DESC LIMIT 1';
Hazzardous 27-07-2004, 21:39 Original geschrieben von derHund
:rolleyes: das heißt? wie weit läufts korrekt?
- stell error_reporting auf E_ALL!
- laß dir die queries per echo ausgeben ...
- laß das semikolon weg
- teste in php_my_admin o.ä.
- woher kommen die variablen?
...
ich seh noch tausend debug-möglichkeiten ;)
von wegen, der code wäre nicht chaotisch ...
echo $sql_csort = 'SELECT menusort FROM content WHERE menusort < '.$id.' AND status = "category" ORDER BY menusort DESC LIMIT 1';
Das funktionierende läuft komplett durch! Ohne Fehler!
1. error_reporting : Gemacht! Keine Fehlermeldung
2. OR DIE mysql error : An allen Stellen gemacht! Skript hakt sich auf mal weiter vorne mal weiter hinten! Keine Fehlermeldung
3. Querys enthalten soweit das was sie enthalten sollen
4. Mit oder ohne Semikolon, es klappt niccht
5. Die Variablen kommen aus einem Form und werden korrekt übergeben.
:[
Das funktionierende läuft komplett durch! Ohne Fehler!
das rote ist vollständig rot, ohne grün oder blau .... :rolleyes:
3. Querys enthalten soweit das was sie enthalten sollen...
was funktioniert nicht?
stell einfach fest, bis zu welcher zeile sich dein schnipsel so verhält, wie er soll, und finde den fehler ...
und sag nicht, du findest die zeile nicht.
Payne_of_Death 27-07-2004, 23:57 ich muss @wahsage Recht geben irgendwo sinnlos.......
Ich begreifs net das Script nach und nach eingrenzen und dann schwupps kommt man zum Fehler. Spontan würde ich zunächst die SQL Statments bei PHPMYADMIN auf Ausgabe und Syntax überprüfen bevor ich an den Code gehe.......
|
|