id wird nicht übernommen

nordi

Erfahrenes Mitglied
Hi, ich hab ein kleines Problem. Ich hab eine Edit-Funktion in mein Gästebuch eingebaut. Man klickt einfach auf den gewünschten Eintrag und man wird dann auf die Edit-Seite weiterverlinkt. Die Einträge, die man editieren will, werden in einem Inputfeld dargestellt und werden durch die id übergeben. Aber im Inputfeld wird folgende Fehlermeldung angezeigt:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in/is/htdocs/wp1086253_Y654K8BBHW/www/content/admin/kommentar.php on line 40

In Zeile 40 ist folgendes: while ($row = mysql_fetch_object($ergebnis))

Komplettes Script hier:

PHP:
<form name="formular" method="post" action="kommentar_done.php">
	<input type="hidden" name="id" value="<? echo $_GET["id"];?>">
        <textarea name="komedit" cols="53" rows="5"><?php
  $verbindung2 = @mysql_connect("$dbhost","$dbuser","$dbpass");

if (!$verbindung2) {
		echo "Verbindung zur Datenbank ist nicht möglich!\n";
		exit;
	}

mysql_select_db($dbtable);
  $ergebnis = mysql_query("SELECT txt FROM $spirits_gb WHERE id = ".$_GET["id"]."");
  while ($row = mysql_fetch_object($ergebnis))
    {
      echo $row->txt;
    }
  ?></textarea>
  <input type="submit" name="senden" value="update">
      </form>

Wenn ich bei dem mysql_query das WHERE id = ".$_GET["id"]." rausnehme, funktioniert das Script wunderbar - aber es werden eben alle Einträge des Gästebuchs angezeigt, was ja nicht Sinn der Sache ist! Habt ihr vllt. Lösungsansätze?

Vielen Dank!
 
Versuch mal statt
while ($row = mysql_fetch_object($ergebnis))
mit
while ($row = mysql_fetch_assoc($ergebnis))

Laut der Fehlerausgabe ist es nen falscher Befehl und mit dem unteren t das bei mir immer...
 
Hängt wohl von der MySQL-Version aufm Server ab...
Bei mir geht es mit mysql_fetch_assoc()...
Der Vorschlag von bomberpilotmp3 scheint mir daher sehr zutreffend...^^

Und setz den Verbindungsaufbau zur DB in den HEAD jeder Seite, dann brauchst du das nicht immer extra machen...^^ Spart arbeit.

Heißt die Tabelle $spirits_gb oder woher kommt die Variable?

Versuch die DB-Abfragen etwas offener und somit übersichtlicher zu schreiben...
z.B.:
Code:
$sql = "SELECT
text
FROM
$spirits_gb //wenn die Tabelle so heißt sonst ".$spirits_gb."
WHERE
id = ".$_GET["id"]."
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());

while ($row = mysql_fetch_assoc($result)) 
{}
 
Zuletzt bearbeitet:
Die Fehlermeldung sagt eigentlich schon alles:
Code:
Übergebenes Argument ist kein gültiges MySQL-Ergebnis Resource

Das passiert unter anderem, wenn ein Fehler beim Senden des Querys auftritt. Eleganter ist:
PHP:
if ($result = mysql_query("SELECT 1;")) {
    $fetch = mysql_fetch_assoc($result);
} else {
    echo "Es trat ein Fehler auf";
}

Wenn $ergebnis zB nur false hält, da das Query nicht ordnungsgemäß durchgeführt werden konnte, hast du so keine Probleme mit entsprechend genannter Fehlermeldung.

btw: Ich empfehle dir, den Tableselect in die Überprüfung der Datenbankverbindung reinzupacken:
PHP:
if (!$verbindung2 || mysql_select_db($dbtable)) {
    echo "Verbindung zur Datenbank ist nicht möglich!";
    exit;
}
 
Hi, danke erstmal für die Hilfe! Jetzt kommt "Verbindung zur Datenbank ist nicht möglich!".. ich hab da also irgendwo einen kleinen Fehler drinnen..


PHP:
<form name="formular" method="post" action="kommentar_done.php">
	<input type="hidden" name="id" value="<? echo $_GET["id"];?>">
        <textarea name="komedit" cols="53" rows="5"><?php
  $verbindung2 = @mysql_connect("$dbhost","$dbuser","$dbpass");

if (!$verbindung2 || mysql_select_db($dbtable)) {
    echo "Verbindung zur Datenbank ist nicht möglich!";
    exit;
}  


mysql_select_db($dbtable);
  $ergebnis = mysql_query("SELECT txt FROM $spirits_gb WHERE id = ".$_GET["id"]."");
 if ($result = mysql_query("SELECT 1;")) {
    $fetch = mysql_fetch_assoc($result);
} else {
    echo "Es trat ein Fehler auf";
}  
    {
      echo $row->txt;
    }
  ?></textarea>
  <input type="submit" name="senden" value="update">
      </form>

Weißt du zufällig wo?
 
Das wird entweder bedeuten, dass die komplette Verbindung zur SQL-Datenbank nicht hinhaut oder die entsprechende DB-Tabelle nicht existiert. Da ich nicht nach sensibleren Daten fragen möchte, wäre es eventuell ganz gut, wenn du nochmal über sämtliche Angaben drüberschaust - Vor allem Benutzername, Passwort und eben Datenbankname, also $dbuser, $dbpass & $dbtable.
Dies tust du am besten zur Scriptlaufzeit via [phpf]var_dump[/phpf], da du so gleich kontrollieren kannst, ob die entsprechenden Variablen überhaupt gesetzt sind, wenn sie aus einer anderen Datei eingebunden werden sollten.
Des Weiteren kannst du die if-Anweisung auch nochmal aufschlüsseln:
PHP:
var_dump($verbindung2 = mysql_connect("$dbhost","$dbuser","$dbpass")); // sollte etwas, wie "Resource ID #123" zurückgeben oder false (dann liegt der Fehler hier)
var_dump($dbselect = mysql_select_db("$dbtable")); // sollte true ausgeben, ansonsten liegt der Fehler hier

if (!$verbindung2 || $dbselect) {
    exit;
}
 
Also die Daten stimmen alle! Ich hab jetzt nochmal deine Korrekture in das Script eingebaut.

PHP:
<?php
var_dump($verbindung2 = mysql_connect("$dbhost","$dbuser","$dbpass")); // sollte etwas, wie "Resource ID #123" zurückgeben oder false (dann liegt der Fehler hier)
var_dump($dbselect = mysql_select_db("$dbtable")); // sollte true ausgeben, ansonsten liegt der Fehler hier

if (!$verbindung2 || $dbselect) {
    exit;
}  

mysql_select_db($dbtable);
  $ergebnis = mysql_query("SELECT txt FROM $spirits_gb WHERE id = ".$_GET["id"]."");
 if ($result = mysql_query("SELECT 1;")) {
    $fetch = mysql_fetch_assoc($result);
} else {
    echo "Es trat ein Fehler auf";
}  
    {
      echo $row->txt;
    } 
  ?></textarea>
  <input type="submit" name="senden" value="update">
      </form>

Jetzt wird mir folgendes in derm Inputfeld angezeigt:

resource(3) of type (mysql link)
bool(true)


Was hat das zu bedeuten?
 
Zurück