Scriptschreiber
Grünschnabel
Klar. Liegt immer noch am selben: Error-Reporting umstellen. Denn Notizen werden auch ausgegeben. Aber etwas ist mir noch aufgefallen. Mit den IDs. Wenn du das Formular abgeschickt hast kannst du ja logischerweise keine ID von der URL holen. Da ist es in der POST Variable gespeichert. Also in die IF-Else Abfrage noch eine Variable einbauen welche dafür sorgt dass die richtige ID gesetzt ist.
Hier nochmals der überarbeitete Code mit umgestelltem Error-Reporting
PHP:<?php error_reporting(E_ALL ^ E_NOTICE); require("inc/wmaconfig.inc.php"); require("inc/wmafunc1.php"); // Daten speichern if($_SERVER['REQUEST_METHOD'] == 'POST') // Beim Senden vom Formular { $error = ''; // Fehlervariable // Variablen holen und Vorbereiten $id= $_POST['id']; // ID festlegen bei POST $vorname = mysql_prepare_string(trim($_POST['vorname'])); $nachname = mysql_prepare_string(trim($_POST['nachname'])); $strasse = mysql_prepare_string(trim($_POST['strasse'])); $plz = mysql_prepare_string(trim($_POST['plz'])); $telnr = mysql_prepare_string(trim($_POST['telnr'])); $homepage = mysql_prepare_string(trim($_POST['homepage'])); $email = mysql_prepare_string(trim($_POST['email'])); // Daten checken // Wenn die Eingabe Leer ist (trim löscht unnötige Leerzeichen) // Dann wird die Fehlermeldung angehängt. // Zum Schluss wissen wir welche Daten falsch waren. $error .= (empty($vorname)) ? 'Kein Vorname angegeben!<br>' : ''; $error .= (empty($nachname)) ? 'Kein Nachname angegeben!<br>' : ''; $error .= (empty($strasse)) ? 'Keine Strasse angegeben!<br>' : ''; $error .= (empty($plz)) ? 'Keine Plz angegeben!<br>' : ''; $error .= (empty($telnr)) ? 'Keine Telnr. angegeben!<br>' : ''; $error .= (empty($homepage)) ? 'Keine Hp angegeben!<br>' : ''; $error .= (empty($email)) ? 'Keine EMail angegeben!<br>' : ''; // Wenn $error leer ist // war kein Fehler also können wir speichern if(empty($error)) { //Updaten $sql = sprintf("UPDATE `%s` SET vorname='%s', nachname='%s', strasse='%s', hsnr='%s', plz='%s', ort='%s', telnr='%s', homepage='%s', email='%s' WHERE id = '%u'", $tab, $vorname, $nachname, $strasse, $plz, $telnr, $homepage, $email, $id); // Fehler anhängen $res = @mysql_query($sql) or $error .= "Fehler: " . mysql_error(); if ($res) { // Erfolgsmeldung setzen oder umleiten $error .= "Erfolgreich"; // header("Location: url"); } } } else // Wenn nicht das Formular abgeschickt wurde { // Probieren die ID von der URL zu holen $id = $_GET['id']; } // Daten laden $sql = sprintf("SELECT * FROM `$tab` WHERE `id` = '%u'", $id); $res = @mysql_query( $sql ) or $error .= "Fehler: " . mysql_error() ); // Fehler bei Falscher ID $data = mysql_fetch_assoc( $res ); ?>
Wenn jetzt noch eine Warnung kommt stimmt was komplett mit der Server-Config nicht. Tut mir Leid wegen der falschen Version aber ich weiß nicht was du in den inkludierten Dateien machst und deine DB-Aussieht darum kann ich nichts testen.
Gruß Daniel
Hallo Daniel,
habe mit deiner neuen Vorgabe getestet.
Fehler: $res = @mysql_query( $sql ) or $error .= "Fehler: " . mysql_error() ); // Fehler bei Falscher ID
Eine ) zuviel. Die habe ich entfernt und bekomme nach wie vor den undefined index: id.
Kann es sein das es vielleicht an php Version 5.23 oder Mysql 5.0.45 liegt? Ich teste das ganze mit xampp 1.6.3a.
Was ich noch gerne wisen würde ist, wo ich denn diesen Code einsetzen muß?
Code:
function mysql_prepare_string($Param, $resource=null)
{
// String holen
$string = $Param;
// Je nach aktivierten Modulen Quotes und Slashes entfernen
if(get_magic_quotes_gpc())
{
if(ini_get('magic_quotes_sybase'))
{
$string = str_replace("''", "'", $string);
}
else
{
$string = stripslashes($string);
}
}
// Wenn keine Resource angegeben wurde
if(is_null($resource))
{
// Mysql-Escape Funktion ohne Resource ausführen
return mysql_real_escape_string($string);
}
else
{
// Mysql-Escape Funktion mit Resource ausführen
return mysql_real_escape_string($string, $resource);
}
}
Ich werde dann diese Tage mal xampp neu installieren und mal schauen ob es daran gelegen hat.
Erst nochmal vielen Dank für deine Mühe.