Daten in Textfeld einlesen

Autsch!
Stimmt, da habe ich nicht richtig hingesehen. :(

Gumbo hat es aber schon angedeutet.
Mit isset() kannst Du keine Vergleichung durchführen.
In Gumbo seinem Beispiel wird erst geprüft ob $_POST['submit'] überhaput gesendet wurde (sonst bekommst Du ein Notice), im gleichem Atemzug wird geprüft ob $_POST['submit'] den Wert "Update" enthält.
Ich mache es immer in getrennten if-Abfragen..... aber ich bin auch noch nie auf die Idee gekommen es zu kombinieren.
 
Ich habe jetzt beide Versionen ausprobiert (meine eigenen kommen noch dazu). Fehlanzeige.

Wieder die gleiche Fehlermeldung.

Die if-Abfrage ist ja OK. Der Fehler liegt irgendwo in der MySQL-Syntax.
 
An der if-Abfrage liegt es nicht. Ich habe es getestet. Die Daten würden gespeichert werden, wenn nur nicht dieser Haken in der MySQL-Syntax wäre. Sicherlich wieder so ein blöder Fehler und ich sehe diesen nicht.
 
Zuletzt bearbeitet:
So, bin wieder da ...

Habe mal eine error_reporting ( E_ALL ); eingebunden und folgendes ist dabei rausgekommen:

Notice: Undefined index: id

Notice: Undefined index: bearbeiten

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
 
Ich weiss nicht was Du da machst.
Deinen eigenen Aussagen zufolge hast Du $id definiert, PHP sagt aber etwas anderes.
Und über $bearbeiten hat sich PHP vorher ja wohl auch nicht beschwert.
Ich denke es währe besser wenn Du mal den ganzen Code zeigst..... und nicht vergessen anzugeben welche Datei welchen Dateinamen hat (sind doch mehrere Dateien?).
Es ist jedenfalls evtl. möglich dass das Problem nicht ausschliesslich am Query liegt.
 
Hallo zusammen,

vielen Dank für die vielen Anregungen und es hat mich auch ein Stück weitergebracht.

Wie schon gesagt, werden die Daten ohne Probleme ausgelesen und die UPDATE-Anfrage funktioniert jetzt zum Teil auch, d.h. wenn ich die WHERE-Klausel rausnehme und die Daten in geändertem Zustand speichere, werden diese auch übernommen, aber halt für die ganze Spalte. :mad:

Im moment kann ich nicht direkt auf den Datensatz zugreifen, das ich Speichern möchte und das verwirrt mich zurzeit ein bisschen.

Hier der Code:

HTML:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" name="form" enctype="multipart/form-data" method="post">

PHP:
error_reporting ( E_ALL );
if(isset($_GET['bearbeiten'])) {
    $bearbeiten = $_GET['bearbeiten'];
} else {
	$bearbeiten = '';
}

if(isset($_POST['id'])) {
    $id= $_POST['id'];
} else {
	$id = '';
}

// Rechnungen auslesen
$sql = mysql_query("SELECT * FROM Rechnungen WHERE ID= '".$bearbeiten."'") or die (mysql_error());
if(!$sql) {
	echo "<table><tr><td><span class='fehler'>Fehler bei der Auslesung der Abfrage!</span><br /><br /></td>\n</tr>";
	exit();
}

while($row = mysql_fetch_row($sql)) {

HTML:
<table>
<tr>
<td><input type="text" name="name" id="name" size="30" maxlength="50" value="<?php echo $row[2]; ?>"></td>
</tr>
</table>

PHP:
}

if(isset($_POST['submit']) && $_POST['submit'] == 'Update') {

// Daten in die Datenbank hinzufügen
$query = '
UPDATE
	`Rechnungen`
SET
	`anrede`    = "'.mysql_real_escape_string($_POST['anrede']).'",
	`name`      = "'.mysql_real_escape_string($_POST['name']).'",
	`vorname`   = "'.mysql_real_escape_string($_POST['vorname']).'",
	`strassenr` = "'.mysql_real_escape_string($_POST['strassenr']).'",
	`plz`       = "'.mysql_real_escape_string($_POST['plz']).'",
	`ort`       = "'.mysql_real_escape_string($_POST['ort']).'",
	`telefon`   = "'.mysql_real_escape_string($_POST['telefon']).'",
	`email`     = "'.mysql_real_escape_string($_POST['email']).'",
	`datum`     = "'.mysql_real_escape_string($_POST['datum']).'"
WHERE
	`ID` = "'.intval($id).'"
';
    if( mysql_query($query) or die (mysql_error()) ) {
        echo '<p class="ok">Die Rechnung wurde geändert!</p>';
    } else {
        echo '<p class="fehler">Fehler beim Ändern der Daten!</p>';
    }
}

Es kann sein, das euch diese Frage vielleicht Dumm vorkommt, aber ich Stelle diese einfach mal: Die Daten werden ja mit $_GET['bearbeiten'] ausgelesen. Müsste ich bei der WHERE-Klausel (UPDATE-Anfrage) auch $bearbeiten benutzen oder $id, um auf den Datensatz direkt zuzugreifen?

Habe es auch mit $bearbeiten versucht, aber es hat sich nichts getan. Mit der WHERE-Klausel mache ich immer noch etwas falsch, aber ich komme nicht darauf und wenn ich anstatt

`ID` = "'.intval($id).'" --> `ID` = "'.intval($_POST['id']).'" nehme erhalte ich eine NOTICE-Meldung:
Notice: Undefined index: id ... on line 141

Grüsse
 
Zuletzt bearbeitet:
Ich sende jetzt mal beide Seiten (admin.php und bearbeiten.php)

admin.php

HTML:
<form action="<?php echo $PHP_SELF; ?>" name="formular" enctype="multipart/form-data" method="post">

PHP:
// Rechnung aus Datenbank entfernen
if(isset($_GET['delete'])) {
	echo "<tr><td><span class='font12'>Die Rechnung mit der</span> <span class='fehler'>ID-Nr. " . $_GET['delete'] . "</span> <span class='font12'>endgültig löschen?</span> <input type='hidden' name='submit' value='loeschen'> <input type='image' id='submit' name='submit' src='images/loeschen.gif' value='loeschen' border='0'> <a href='administration.php'><img src='images/abbrechen.gif' border='0'></a><br /><br /></td>\n</tr>";
	if($_POST['submit'] == 'loeschen') {
	$sql = "DELETE FROM Rechnungen WHERE ID= ".$_GET['delete'];
	if(@mysql_query($sql)) {
		echo "<tr><td><span class='font12'>Die Rechnung mit der</span> <span class='fehler'>ID-Nr. " . $_GET['delete'] . "</span> <span class='font12'>wurde gelöscht.</span><br /><br /></td>\n</tr>";
	} else {
		echo "<tr><td><span class='fehler'>Fehler beim Löschen des Eintrages:</span><br /><br /></td>\n</tr>";
	}
	}
}

// Rechnungen abfragen
$result = @mysql_query("SELECT * FROM Rechnungen ORDER BY ID ASC");
if(!$result) {
	echo "<tr><td><span class='fehler'>Fehler bei der Ausführung der Abfrage!</span><br /><br /></td>\n</tr>";
	exit();
}

// Fehlermeldung: Zurzeit sind keine Rechnungen gespeichert
$anzahl = mysql_num_rows($result);
if($anzahl < 1) {
	echo "<tr><td><span class='fehler'>Zurzeit sind keine Rechnungen gespeichert!</span><br /><br /></td>\n</tr></table>";
	exit();
}

echo "<table width='100%' cellpadding='0' cellspacing='0' border='1' bordercolor='#999999'>";
echo "<tr>";
echo "<td align='center' bgcolor='#cccccc'><span class='font12bold'>ID</span></td>";
echo "<td align='center' bgcolor='#cccccc'><span class='font12bold'>Anrede</span></td>";
echo "<td align='center' bgcolor='#cccccc'><span class='font12bold'>Name</span></td>";
echo "<td align='center' bgcolor='#cccccc'><span class='font12bold'>Vorname</span></td>";
echo "<td align='center' bgcolor='#cccccc'><span class='font12bold'>Strasse, Nr.</span></td>";
echo "<td align='center' bgcolor='#cccccc'><span class='font12bold'>PLZ</span></td>";
echo "<td align='center' bgcolor='#cccccc'><span class='font12bold'>Ort</span></td>";
echo "<td align='center' bgcolor='#cccccc'><span class='font12bold'>Telefon</span></td>";
echo "<td align='center' bgcolor='#cccccc'><span class='font12bold'>E-Mail</span></td>";
echo "<td align='center' bgcolor='#cccccc'><span class='font12bold'>Rechnungstotal</span></td>";
echo "<td align='center' bgcolor='#cccccc'><span class='font12bold'>Datum</span></td>";
echo "<td align='center' bgcolor='#cccccc'><span class='font12bold'>Rechnung löschen</span></td>";
echo "<td align='center' bgcolor='#cccccc'><span class='font12bold'>Rechnung auslesen</span></td>";
echo "<td align='center' bgcolor='#cccccc'><span class='font12bold'>Rechnung bearbeiten</span></td>";
echo "<td align='center' bgcolor='#cccccc'><span class='font12bold'>Gesendet</span></td></tr>";

// Jeden Eintrag in einem Absatz anzeigen
while($row = mysql_fetch_array($result)) {
	$id = $row['ID'];
	$anrede = $row['anrede'];
	$name = $row['name'];
	$vorname = $row['vorname'];
	$strassenr = $row['strassenr'];
	$plz = $row['plz'];
	$ort = $row['ort'];
	$telefon = $row['telefon'];
	$email = $row['email'];
	$reto = $row['rechnungstotal'];
	$gesendet = $row['gesendet'];
	$datum = $row['datum'];
	
// Werte formatieren
$reto = number_format($reto, 2, ".", "'");

echo "<tr><td align='right'><span class='font12'>$id&nbsp;</td>";
echo "<td><span class='font12'>&nbsp;$anrede</span></td>";
echo "<td><span class='font12'>&nbsp;$name</span></td>";
echo "<td><span class='font12'>&nbsp;$vorname</span></td>";
echo "<td><span class='font12'>&nbsp;$strassenr</span></td>";
echo "<td><span class='font12'>&nbsp;$plz</span></td>";
echo "<td><span class='font12'>&nbsp;$ort</span></td>";
echo "<td><span class='font12'>&nbsp;$telefon</span></td>";
echo "<td><span class='font12'>&nbsp;$email</span></td>";
echo "<td align='right'><span class='font12'>$reto&nbsp;</span></td>";
echo "<td><span class='font12'>&nbsp;$datum</span></td>";
echo "<td align='center'><a href='$PHP_SELF?delete=$id'>Rechnung löschen</a>";
echo "<td align='center'><a href='$PHP_SELF/auslesen.php?auslesen=$id'>Rechnung auslesen</a></td>";
echo "<td align='center'><a href='$PHP_SELF/bearbeiten.php?bearbeiten=$id'>Rechnung bearbeiten</a></td>";
echo "<td align='center'><span class='font12'>$gesendet</span></td>";
}
echo "</tr></table>";

bearbeiten.php

HTML:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" name="form" enctype="multipart/form-data" method="post">

PHP:
error_reporting ( E_ALL );
if(isset($_GET['bearbeiten'])) {
    $bearbeiten = $_GET['bearbeiten'];
} else {
	$bearbeiten = '';
}
if(isset($_GET['id'])) {
    $id = $_GET['id'];
} else {
	$id = '';
}
if(isset($_POST['anrede'])) {
    $anrede= $_POST['anrede'];
} else {
	$anrede = '';
}
if(isset($_POST['vorname'])) {
    $vorname= $_POST['vorname'];
} else {
	$vorname = '';
}
if(isset($_POST['name'])) {
    $name= $_POST['name'];
} else {
	$name = '';
}
if(isset($_POST['strassenr'])) {
    $strassenr= $_POST['strassenr'];
} else {
	$strassenr = '';
}
if(isset($_POST['plz'])) {
    $plz= $_POST['plz'];
} else {
	$plz = '';
}
if(isset($_POST['ort'])) {
    $ort= $_POST['ort'];
} else {
	$ort = '';
}
if(isset($_POST['telefon'])) {
    $telefon= $_POST['telefon'];
} else {
	$telefon = '';
}
if(isset($_POST['email'])) {
    $email= $_POST['email'];
} else {
	$email = '';
}
if(isset($_POST['datum'])) {
    $datum= $_POST['datum'];
} else {
	$datum = '';
}

// Rechnungen auslesen
$sql = mysql_query("SELECT * FROM Rechnungen WHERE ID= '".$bearbeiten."'") or die (mysql_error());
if(!$sql) {
	echo "<table><tr><td><span class='fehler'>Fehler bei der Auslesung der Abfrage!</span><br /><br /></td>\n</tr>";
	exit();
}

while($row = mysql_fetch_row($sql)) {

HTML:
<table>
<tr>
<td><input type="text" name="name" id="name" size="30" maxlength="50" value="<?php echo $row[2]; ?>"></td>
</tr>
usw.
</table>

PHP:
}

if(isset($_POST['submit']) && $_POST['submit'] == 'Update') {

// Daten in die Datenbank hinzufügen
$query = '
UPDATE
	`Rechnungen`
SET
	`anrede`    = "'.mysql_real_escape_string($_POST['anrede']).'",
	`name`      = "'.mysql_real_escape_string($_POST['name']).'",
	`vorname`   = "'.mysql_real_escape_string($_POST['vorname']).'",
	`strassenr` = "'.mysql_real_escape_string($_POST['strassenr']).'",
	`plz`       = "'.mysql_real_escape_string($_POST['plz']).'",
	`ort`       = "'.mysql_real_escape_string($_POST['ort']).'",
	`telefon`   = "'.mysql_real_escape_string($_POST['telefon']).'",
	`email`     = "'.mysql_real_escape_string($_POST['email']).'",
	`datum`     = "'.mysql_real_escape_string($_POST['datum']).'"
WHERE
	`ID` = "'.intval($id).'"
';
    if( mysql_query($query) or die (mysql_error()) ) {
        echo '<p class="ok">Die Rechnung wurde geändert!</p>';
        echo $id . "<br />";
        echo $anrede . "<br />";
        echo $name . "<br />";
        echo $vorname . "<br />";
        echo $strassenr . "<br />";
        echo $plz . "<br />";
        echo $ort . "<br />";
        echo $telefon . "<br />";
        echo $email . "<br />";
        echo $datum;
    } else {
        echo '<p class="fehler">Fehler beim Ändern der Daten!</p>';
    }
}
 
Aus Deinen Schnippseln der Formulare ist kein GET ersichtlich, sondern nur POST.
Wenn dem tatsächlich so ist bzw. delete, bearbeiten und id nicht per URL übergeben werden, können $_GET['delete'], $_GET['bearbeiten'] und $_GET['id'] auch nicht funktionieren.
 
Zurück