PHP formular zum bearbeiten der daten in einer sqlDB, warum gehts nicht?

silasRV

Grünschnabel
man ich kommt nicht drauf....

ich hab mir n scirpt gebastelt, welche daten auf ner db ausliest, diese dann in textfeldern darstellt, nun will ich wenn ich in das entsprechende textfeld den inhalt änder er es automatisch in die db schreibt über den befehl update!

aber irgendwie funktioniert das nicht richtig,

Das Problem ist, wenn ich auf bearbeiten klicke werden mir meine daten wie gewünscht in den textfeldern angezeigt, nun wenn ich diese abändere und auf den submit button klicke, werde ich wieder zur normalen seite weitergeleit aber kein wert wurde verändert!

das ganze ist hier zu betrachten... http://silasap.dnsalias.org/users/schule/page/kunden/kunden/dbedit.php

ihr könnt ruhig mal probieren zu bearbeiten, aber nicht löschen, diese funktion geht ja
einfach bearbeiten werte verändern, und dann "Ändern" klicken.. aber es geht nichts :(

hier mal der code.. vielleicht hat von euch jemand ne idee

Code:
<html><body><div align="center">
<h1>NewsletterDatenbank bearbeiten</h1>
<?
//Verbindung herstellen

$host = "localhost";
$user = "root";
$pw = "";
$dbl = "bookdb";

$db = mysql_connect($host, $user, $pw) or die
  ("Keine Verbindung moeglich");
  mysql_select_db($dbl) or die
  ("Die Datenbank existiert nicht");

// Daten &auml;ndern

  $vorname = $HTTP_POST_VARS["vorname"];


if ($edit) {
if ($submit) {


$sql = "UPDATE kunde SET vorname='$vorname', nachname='$nachname', strasse='$strasse', hausnr='$hausnr', plz='$plz', ort='$ort', telefon='$telefon', telefax='$telefax', geb='$geb', date='$date' WHERE knr='$edit'";


$result = mysql_query($sql,$db);


}
else {
$sql = "SELECT * FROM kunde WHERE knr=$edit";
$result = mysql_query($sql,$db); 
$data = mysql_fetch_array($result);
?>


<form method="get" action="dbedit.php?edit='.$daten[knr]'">
    <table border="0" align="center">
<tr>
<td>Knr.:</td><td>
<input type="hidden" name="knr" value="<? echo $data["knr"] ?>"></td>
</tr><tr>
<td>Vorname:</td><td>
<input type="text" name="vorname" value="<? echo $data["vorname"] ?>" size="30"></td>
<td>Nachname:</td><td>
<input type="text" name="nachname" value="<? echo $data["nachname"] ?>" size="30"></td>
</tr><tr>
<td>Straße:</td><td>
<input type="text" name="strasse" value="<? echo $data["strasse"] ?>" size="30"></td>
<td>Haus Nr..:</td><td>
<input type="text" name="hausnr" value="<? echo $data["hausnr"] ?>" size="30"></td>
</tr><tr>
<td>Plz</td><td>
<input type="text" name="plz" value="<? echo $data["plz"] ?>" size="30"></td>
<td>Wohnort:</td><td>
<input type="text" name="ort" value="<? echo $data["ort"] ?>" size="30"></td>
</tr><tr>
<td>Tele. No.:</td><td>
<input type="text" name="telefon" value="<? echo $data["telefon"] ?>" size="30"></td>
<td>Fax No.:</td><td>
<input type="text" name="telefax" value="<? echo $data["telefax"] ?>" size="30"></td>
</tr><tr>
<td>Geb. Dat.:</td><td>
<input type="text" name="geb" value="<? echo $data["geb"] ?>" size="30"></td>
<td>Erstellungs Dat.:</td><td>
<input type="text" name="date" value="<? echo $data["date"] ?>" size="30"></td>
</tr><tr><td>
<input type="submit" name="submit" value="&Auml;ndern">
</td></tr></table></form>
    <?
}
}


//Daten l&ouml;schen
if($clear) mysql_query("DELETE FROM kunde WHERE knr=$clear",$db);

//Daten auslesen
$result = mysql_query("SELECT * FROM kunde",$db);
?>

<table border="1" cellspacing="0" cellpadding="2" align="center">
<tr>
<td><b>KNr:</b></td>
<td><b>Vorname:</b></td>
<td><b>Nachname.</b></td>
<td><b>Straße:</b></td>
<td><b>Hausnr.:</b></td>
<td><b>PLZ:</b></td>
<td><b>Wohnort:</b></td>
<td><b>Tel Nr.:</b></td>
<td><b>Fax Nr.:</b></td>
<td><b>Geb.:</b></td>
<td><b>Angelegt:</b></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<? while ($daten = mysql_fetch_array($result)) { ?>
<tr>
<td><? echo $daten[knr]; ?></td>
<td><? echo $daten[vorname]; ?></td>
<td><? echo $daten[nachname]; ?></td>
<td><? echo $daten[strasse]; ?></td>
<td><? echo $daten[hausnr]; ?></td>
<td><? echo $daten[plz]; ?></td>
<td><? echo $daten[ort]; ?></td>
<td><? echo $daten[telefon]; ?></td>
<td><? echo $daten[telefax]; ?></td>
<td><? echo $daten[geb]; ?></td>
<td><? echo $daten[date]; ?></td>
<td><a href="<? echo ''.$PHP_SELF.'?clear='.$daten[knr].'' ?>">löschen</a></td>
<td><a href="<? echo ''.$PHP_SELF.'?edit='.$daten[knr].'' ?>">bearbeiten</a></td>
</tr>
<? } ?>
</table></div></body></html>
 
Zuletzt bearbeitet:
1. einrücken
2. &auml;<<< schreibt man nich in kommentaren
3. Wie wärs wenn du mal deinen Fehler einkreist indem du zwischenwerte mit Echo ausgibts?
 
1.....
2. ist doch egal, in html wird dann richtig ausgegeben
3. ich weiß ja wo der fehler liegt bzw. glaube es mal zu wissen...

ich denke es liegt an der obrigen if schleifen

if ($edit){
if (submit) {


das er die submit schleiße einfach nicht aufruft!

mfg
 
silasRV hat gesagt.:
1.....
2. ist doch egal, in html wird dann richtig ausgegeben
3. ich weiß ja wo der fehler liegt bzw. glaube es mal zu wissen...

ich denke es liegt an der obrigen if schleifen

if ($edit){
if (submit) {


das er die submit schleiße einfach nicht aufruft!

mfg
Zu 1 und 2: Schön hör einfach nicht auf mich und hilf dir selbst :rolleyes: :mad:
 
ist register_globals auf off? dann kanns nicht gehen mit $http... und $edit weil die Variable nicht bekannt ist.
Versuche $_POST['vorname'] etc

Zum Prüfen sollte man immer print_r ausgeben lassen, so kommt man schnell zum Fehler
 
register_globals = On

das mit der edit funktion geht ja.

ich mein das mit &uuml; hat ja nichts damit zu tun.. ist nur ne förmlichkeit! und das einrücken ja auch wenn ich mich da täusche belehr mich gern!

ich glaub wirklich das der in die if ($submit) garnicht reinkommt! also wenn ich auf submit klick der einfach die edit bedinung ja nicht ansteht und er somit einfach nur wieder alles ausgibt!

mein neuer quelltext:

PHP:
<html><body><div align="center">
<h1>NewsletterDatenbank bearbeiten</h1>
<?
//Verbindung herstellen

$host = "localhost";
$user = "root";
$pw = "";
$dbl = "bookdb";

$db = mysql_connect($host, $user, $pw) or die
  ("Keine Verbindung moeglich");
  mysql_select_db($dbl) or die
  ("Die Datenbank existiert nicht");

// Daten aendern

  $vorname = $HTTP_POST_VARS["vorname"];
  $nachname = $HTTP_POST_VARS["nachname"];
  $strasse = $HTTP_POST_VARS["strasse"];
  $hausnr = $HTTP_POST_VARS["hausnr"];
  $plz = $HTTP_POST_VARS["plz"];
  $ort = $HTTP_POST_VARS["ort"];
  $telenr = $HTTP_POST_VARS["telefon"];
  $telefax = $HTTP_POST_VARS["telefax"];
  $geb = $HTTP_POST_VARS["geb"];
  $date = $HTTP_POST_VARS["date"];


if ($edit) {
    if ($submit) {


$sql = "UPDATE kunde SET vorname='$vorname', nachname='$nachname', strasse='$strasse', 

hausnr='$hausnr', plz='$plz', ort='$ort', telefon='$telefon', telefax='$telefax', 

geb='$geb', date='$date' WHERE knr='$edit'";


$result = mysql_query($sql,$db);


     }
  else {
$sql = "SELECT * FROM kunde WHERE knr=$edit";
$result = mysql_query($sql,$db); 
$data = mysql_fetch_array($result);
?>


<form method="post" action="dbedit.php">
    <table border="0" align="center">
<tr>
<td>Knr.:</td><td>
<input type="hidden" name="knr" value="<? echo $data["knr"] ?>"></td>
</tr><tr>
<td>Vorname:</td><td>
<input type="text" name="vorname" value="<? echo $data["vorname"] ?>" size="30"></td>
<td>Nachname:</td><td>
<input type="text" name="nachname" value="<? echo $data["nachname"] ?>" size="30"></td>
</tr><tr>
<td>Straße:</td><td>
<input type="text" name="strasse" value="<? echo $data["strasse"] ?>" size="30"></td>
<td>Haus Nr..:</td><td>
<input type="text" name="hausnr" value="<? echo $data["hausnr"] ?>" size="30"></td>
</tr><tr>
<td>Plz</td><td>
<input type="text" name="plz" value="<? echo $data["plz"] ?>" size="30"></td>
<td>Wohnort:</td><td>
<input type="text" name="ort" value="<? echo $data["ort"] ?>" size="30"></td>
</tr><tr>
<td>Tele. No.:</td><td>
<input type="text" name="telefon" value="<? echo $data["telefon"] ?>" size="30"></td>
<td>Fax No.:</td><td>
<input type="text" name="telefax" value="<? echo $data["telefax"] ?>" size="30"></td>
</tr><tr>
<td>Geb. Dat.:</td><td>
<input type="text" name="geb" value="<? echo $data["geb"] ?>" size="30"></td>
<td>Erstellungs Dat.:</td><td>
<input type="text" name="date" value="<? echo $data["date"] ?>" size="30"></td>
</tr><tr><td>
<input type="submit" name="submit" value="&Auml;ndern">
</td></tr></table></form>
    <?
    }
}


//Daten loeschen
if($clear) mysql_query("DELETE FROM kunde WHERE knr=$clear",$db);

//Daten auslesen
$result = mysql_query("SELECT * FROM kunde",$db);
?>

<table border="1" cellspacing="0" cellpadding="2" align="center">
<tr>
<td><b>KNr:</b></td>
<td><b>Vorname:</b></td>
<td><b>Nachname.</b></td>
<td><b>Straße:</b></td>
<td><b>Hausnr.:</b></td>
<td><b>PLZ:</b></td>
<td><b>Wohnort:</b></td>
<td><b>Tel Nr.:</b></td>
<td><b>Fax Nr.:</b></td>
<td><b>Geb.:</b></td>
<td><b>Angelegt:</b></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<? while ($daten = mysql_fetch_array($result)) { ?>
<tr>
<td><? echo $daten[knr]; ?></td>
<td><? echo $daten[vorname]; ?></td>
<td><? echo $daten[nachname]; ?></td>
<td><? echo $daten[strasse]; ?></td>
<td><? echo $daten[hausnr]; ?></td>
<td><? echo $daten[plz]; ?></td>
<td><? echo $daten[ort]; ?></td>
<td><? echo $daten[telefon]; ?></td>
<td><? echo $daten[telefax]; ?></td>
<td><? echo $daten[geb]; ?></td>
<td><? echo $daten[date]; ?></td>
<td><a href="<? echo ''.$PHP_SELF.'?clear='.$daten[knr].'' ?>">löschen</a></td>
<td><a href="<? echo ''.$PHP_SELF.'?edit='.$daten[knr].'' ?>">bearbeiten</a></td>
</tr>
<? } ?>
</table></div></body></html>
 
Hallo!

2 Dinge:
1.: Achte bitte auf die Groß-/Kleinschreibung (siehe Netiquette).
2.: Überprüfst Du mit
HTML:
if($edit)
ob edit übergeben wurde? Dann versuch's mal lieber mit
HTML:
if(isset($edit))
das sollte eher funktionieren.

redlama
 
Ja, das mache ich!

Nur das Edit ist nicht das Problem, das Prob. ist, dass die Submit Funktion nicht geht.

ich glaube es ist folgt

Wenn ich auf bearbeiten klicke, sende ich ein Edit an nr damit ist die if Bedinung erfült, nun wird überprüft ob noch ein submit forliegt, dies liegt aber nicht vor also wird nur mal daten ausgegeben in den entsrpechenden text feldern,

Nun drück ich auf Submit, es wird Submit übermittelt aber kein Edit mehr. Also wird die Edit Bedinung nicht erfüllt somit kommt er garnicht erst bis zum Submit und alles bringt nichts..

d.h. es müsste wenn ic hauf submit klicke eine edit und ein submit gesendet werden und nicht nur allein das submit

Oder liege ich da falsch?

hab das mit

if(isset($edit))
if(isset($submit))

auf probiert, nichts geholfen!

MFG silas
 
Na dann mach doch mal das, was Sicaine Dir vorhin schon geraten hat.
Lass Dir mal ein paar echo's ausgeben. Am besten so:
PHP:
echoe "1<br>";
if($edit) {
  echo "2<br>"; 
  if($submit) { 
    echo "3<br>";
Daran siehst Du, ob er wirklich in die "if($edit)" Schleife läuft oder nicht. Das grenzt die Fehlerquelle schon ein wenig ein.

redlama
 
ja genau, dass habe ich jetzt grad gemacht!

und zwar

PHP:
if($edit) { echo "1<br>"; 
if($submit) { echo "2<br>";


$sql = "UPDATE kunde SET vorname='$vorname', nachname='$nachname', strasse='$strasse', hausnr='$hausnr', plz='$plz', 

ort='$ort', telefon='$telefon', telefax='$telefax', geb='$geb', date='$date' WHERE knr='$edit'";


$result = mysql_query($sql,$db);


     }
  else {
$sql = "SELECT * FROM kunde WHERE knr=$edit";
$result = mysql_query($sql,$db); 
$data = mysql_fetch_array($result);

?>


<form method="post" action="<? echo $PHP_SELF?>">
    <table border="0" align="center">
<tr>
<td>Knr.:</td><td>
<input type="hidden" name="knr" value="<? echo $data["knr"] ?>"></td>
</tr><tr>
<td>Vorname:</td><td>
<input type="text" name="vorname" value="<? echo $data["vorname"] ?>" size="30"></td>
<td>Nachname:</td><td>
<input type="text" name="nachname" value="<? echo $data["nachname"] ?>" size="30"></td>
</tr><tr>
<td>Straße:</td><td>
<input type="text" name="strasse" value="<? echo $data["strasse"] ?>" size="30"></td>
<td>Haus Nr..:</td><td>
<input type="text" name="hausnr" value="<? echo $data["hausnr"] ?>" size="30"></td>
</tr><tr>
<td>Plz</td><td>
<input type="text" name="plz" value="<? echo $data["plz"] ?>" size="30"></td>
<td>Wohnort:</td><td>
<input type="text" name="ort" value="<? echo $data["ort"] ?>" size="30"></td>
</tr><tr>
<td>Tele. No.:</td><td>
<input type="text" name="telefon" value="<? echo $data["telefon"] ?>" size="30"></td>
<td>Fax No.:</td><td>
<input type="text" name="telefax" value="<? echo $data["telefax"] ?>" size="30"></td>
</tr><tr>
<td>Geb. Dat.:</td><td>
<input type="text" name="geb" value="<? echo $data["geb"] ?>" size="30"></td>
<td>Erstellungs Dat.:</td><td>
<input type="text" name="date" value="<? echo $data["date"] ?>" size="30"></td>
</tr><tr><td>
<input type="submit" name="submit" value="&Auml;ndern">
</td></tr></table></form>
    <?
    }
}

Ergebnis:

1 wird angezeigt...
2 nicht, und das heißt das die update funktion nicht ausgeführt wird, bzw. es garnicht erst bis zu dieser if submit anweißung kommt! :(

habt ihr eine idee!?
 
Zurück