Daten in Textfeld einlesen

Cemil

Erfahrenes Mitglied
Hallo,

Was stimmt an diesem Code nicht? Kann keinen Fehler finden, aber trotzdem erhalte ich folgende Fehlermeldung:

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource ...

PHP:
$sql = "
	SELECT * FROM 
		`Rechnungen` 
	Where 
		`ID` = $id";
$result = mysql_query($sql);

while($row = mysql_fetch_row($result)) {
	echo '
	<table>
	<tr>
	<td>'.$row[2].'</td>
	</tr>
	<tr>
	<form>
	<td><input type="text" name="name" value="'.$row[2].'"</td>
	</form>
	</tr>
	</table>';
}

Habe das ganze auch mit GET versucht, aber fehlanzeige:

PHP:
Where 
	`ID` = ".$_GET['id'];

Grüsse
 
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource ...
bedeutet, dass das MySQL-Query schiefgelaufen ist.
Probiers mal mit mysql_error().
Also
PHP:
$result = mysql_query($sql) or die(mysql_error());

Edit: außerdem würde ich
PHP:
Where 
        `ID` = '".$id."'";
schreiben.
 
Lass dir doch ganz einfach die Fehlermeldung ausgeben:
PHP:
$query = '
	SELECT
	        *
	  FROM
	        `Rechnungen`
	  WHERE
	        `ID` = '.intval($id).'
	';
$result = mysql_query($query)
	or die(mysql_error());

while( $row = mysql_fetch_row($result) ) {
	echo '<p>'.htmlspecialchars($row[2]).': <input type="text" name="name" value="'.htmlspecialchars($row[2]).'"</p>';
}
 
Hallo,

vielen Dank für die Antworten.

Ich habe den Code von Gumbo übernommen.

Ich denke, der Code funktioniert jetzt schon, weil ich erhalte keine Fehlermeldung. :rolleyes:

Diese Seite wird über die Seite admin.php aufgerufen und zwar wie folgt:

PHP:
// Rechnungen bearbeiten
if(isset($_GET['bearbeiten'])) {
$result = @mysql_query("SELECT * FROM Rechnungen WHERE ID= ".$_GET['bearbeiten']);
if(!$result) {
	echo "<table><tr><td><span class='fehler'>Fehler bei der Auslesung der Abfrage!</span><br /><br /></td>\n</tr>";
	exit();
}
}

und hier der link:

Code:
<a href='$PHP_SELF/bearbeiten.php?bearbeiten=$id'>Rechnung bearbeiten</a>

Ich denke, das bei der Übergabe der Daten irgendetwas schief läuft.
 
Du erhältst aufjedenfall keine Fehlermeldung, weil du sie unterdrückst ... das @ vor dem mysql_query unterdrückt Fehlermeldungen ;)
Also mach das mal weg ... und mysql_error() ist immer nützlich.

Code:
<a href="".$PHP_SELF."/bearbeiten.php?bearbeiten=".$id."">Rechnung bearbeiten</a>
So würde ich den Hyperlink schreiben. Man muss daran denken die Variablen in einem String auch abzugrenzen, nicht dass sie als String behandelt werden ...

Edit: und $_SERVER['PHP_SELF'] zu schreiben ist auch besser, ich glaub $PHP_SELF funktioniert nicht überall.
 
Welche Funktion zur Validierung oder Maskierung der Daten sinnvoll ist, hängt ganz vom erwarteten/erlaubten Datentyp und dessen Einsatz ab.
Bei Ganzzahl-IDs bietet sich allgemein etwa die intval()-Funktion an. Bei Dateinamen ohne Pfadangabe beitet sich etwa die basename()-Funktion an, die alles bis auf den Dateinamen entfernt.
 
...und da bin ich wieder.

Sorry, das ich nicht sofort antworten konnte, aber ich kam erst jetzt dazu.

Das @ vor mysql_query habe ich rausgenommen und danach in beide Seiten (admin.php und bearb.php) die mysql_error-Funktion eingebaut. Sobald ich die Seite bearb.php über admin.php aufrufe, erhalte ich eine leere Seite. Keine Fehlermeldungen.

Ich habe sicherheitshalber error_reporting auf E_ALL gestellt und da kommt nur die Meldung:

Notice: Undefined variable: id in ...

Habe das ganze auch mal so ausprobiert, aber Fehlanzeige:

PHP:
while( $row = mysql_fetch_array($result) ) {
    echo "<p>" . $row["name"] . "</p>";
}

Bei der Übergabe der Daten läuft irgendetwas schief, aber ich weiss nicht was ...
 
Zurück