Updateformular - Anzeige in Feldern fehlt

Mirko_Boehm

Grünschnabel
Hallo

Vielleicht kann mir jemand einen Tipp geben. Ich habe ein Updateformular wo in der URL die id (http://www.meineurl.de/cp/update.php?nr=41883882) angegeben ist. ich kann im Formular eine neue emailadresse angeben und dann die entsprechende emailadresse updaten. das funktioniert auch einwandfrei.

nun möchte ich aber dass das formularfeld nicht leer ist sondern die alte emailadresse vorhanden ist. wie kann ich das bewerkstelligen?

mein vorhandener code:

PHP:
<?php


$formularAnzeigen = false;
if (!empty($_POST["senden"]) && (
     empty($_POST["update"])))
      {
        $formularAnzeigen = true;
        echo '<span style="color: #FF0000; font-size: x-large;">Bitte Update bestätigen.</span>';
      } 
      else if (empty($_POST["senden"]))
      {
        $formularAnzeigen = true;  
      }
if ($formularAnzeigen)
{

    
        ?>

  <form name="kontaktFormular" method="post" action="<?=$_SERVER[PHP_SELF].'?nr='.$auftragnr; ?>">
  <table width="600" border="0">    
   <!--eMail--><tr><td>E-Mail Adresse: *</td><td><input name="eMail" type="text" value="<?=$_POST['eMail']; ?>" /></td></tr>  
   <!--Update--><tr><td>Auftrag <?php echo $auftragnr ?> ändern?:</td><td><select name="update"><option <?=($_POST['update']=='')?'selected':''?>></option><option <?=($_POST['update']=='nein')?'selected':''?>>nein</option><option <?=($_POST['update']=='ja')?'selected':''?>>ja</option></select></td></tr>
   <!--senden--><tr><td colspan="2"><div align="center"><input name="senden" type="submit" value="Senden" /></div></td></tr>
  </table>
  </form>
  
<?php

}
else
{
  $eMail=$_POST['eMail']; 
  $update=$_POST['update'];
  
  if ($update =="ja")
  {
    mysql_query("UPDATE auftrag SET eMail = '$eMail' WHERE auftragnr = '$auftragnr'") or die( mysql_error());

    $result = mysql_query("SELECT * FROM auftrag WHERE auftragnr = '$auftragnr' ") or die( mysql_error());
    $row = mysql_fetch_array($result);
    $eMailneu=$row['eMail'];

  echo "neue E-Mailadresse: ".$eMailneu." im Auftrag ".$auftragnr;

    }
    else
  {
    echo "Es wurde keine Änderung des Auftrages vorgenommen." ;
  }


}
?>
 
Ich glaub ich versteh nicht ganz was du meinst.

Soll die alte/vorhandene eMail Adresse angezeigt werden wenn die Seite geladen wird um sie dann zu überschreiben oder soll nach dem Ändern angezeigt werden das die eMail Adresse von "alteadresse" in "neueadresse" geändert wurde
 
wenn ich das formular das erste mal aufrufe soll die alte also noch momentane emailadresse angezeigt werden.

dann trag ich die neue emailadresse ein und geh auf senden. dann wird die neue emailadresse in die datenbank eingegeben und wieder ausgegeben.

das update funktioniert nur beim ersten aufruf ist mein feld leer anstatt dass die alte emailadresse angezeigt wird
 
Du mußt beim ersten Aufruf der Seite die Variable $_POST["eMail"] mit dem enstprechenden Wert belegen.

Wenn der Wert noch nicht vorhanden ist, musst du eben diese Abfrage ausführen:

PHP:
$result = mysql_query("SELECT eMail FROM auftrag WHERE auftragnr = '$auftragnr' LIMIT 1") or die( mysql_error()); 
$row = mysql_fetch_array($result); 
$_POST['eMail'] = $row['eMail'];


Dann wird das Feld gefüllt.
 
ich habs nun...

bevor das formular aufgerufen hab hab ich nun einfach die aktuelle emailadresse ausgelesen und als $_POST['eMail'] definiert

Code:
$sql = "SELECT * FROM `auftrag` where `auftragnr` = $auftragnr";
$ergebnis = mysql_query($sql) or die( mysql_error());
$row = mysql_fetch_object($ergebnis);
$_POST['eMail']=$row->eMail;


es funktioniert einwandfrei... hoffe nur es ist auch korrekt
 
Stimmt schon, aber schau dir nochmal meinen Eintrag an.

Wenn du nur die eMail Adresse braucht, warum fragst du dann alle Felder ab. Außerdem brauchtst du nur einen Eintrag aus der DB und kannst es somit mit LIMIT verkürzen!!
 
Danke für deinen Beitrag!

das mit dem limit ist eine super idee!

ich frage alle felder ab da das formular nachdem es nun funktioniert ausgebaut wird denn man soll die möglichkeit haben alle 25 felder zu aktualisieren.

du hast natürlich recht das man sonst nur email raussuchen müsste!
 
Zurück