UPDATE in MySQL via PHP

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • UPDATE in MySQL via PHP

    Hi zusammen,

    Ich habe folgendes Problem, folgendes soll passieren:

    1. Ein Formular in welches eine ID eingegeben wird (funktioniert)

    2. Ein FOrmular in welchem die zuvor durch ID angegebenen Daten ausgegeben werden und verändert werden können (funktioniert)

    3. Die Daten sollen in der MySQL gespeichert werden (funktioniert NICHT)

    Ich bekomme keinerlei Fehlermeldung, und weiß auch nicht mehr wirklich weiter ... kann es mit dem POST Befehl zu tun haben? Bin ich da auf der richtigen Spur?

    Hier nun mal meine Codes:

    editform.php
    PHP-Code:
    <html>

    <
    head>
        <
    title>&Auml;ndern eines Kunden</title>
        <
    link rel="stylesheet" type="text/css" href="style_ff.css">
    </
    head>
    <
    body><BR>
    <
    form action=editsum.php method=post>
      <
    CENTER>
      <
    TABLE border="0" cellpadding="0" cellspacing="0" width="90%">
        <
    tr>
        <
    td width="41%"><div align="right">ID:
                <
    input NAME="id" TYPE="text" id="id" VALUE SIZE="15" MAXLENGTH="15"
            </
    div></td>
        <
    td width="59%">
              <
    div align="left">
      <
    input TYPE="submit" VALUE="Datensatz ändern" >
    &
    nbsp;&nbsp;
      <
    input TYPE="reset" VALUE="Zurücksetzen" >
                </
    div></td>
        </
    tr>
      </
    TABLE>
    </
    CENTER>
    </
    form>
    <
    p align="center"><a href="index.php">Zurück zur Startseite</a></p>
    </
    body>
    </
    html
    editsum.php:

    PHP-Code:
    <HTML>
    <head>
        <title>Einfügen eines Datensatzes</title>
        <link rel="stylesheet" type="text/css" href="style_ff.css">
    </head>

    <body bgcolor="#FFFFFF">
    <?php
    error_reporting
    (E_ALL);
      include (
    "db.inc");
      
    $id $_POST['id'];
      
    // Verbindung zum Datenbankserver herstellen
      
    $link=mysql_pconnect($dbserver$dbuser$dbpasswd );
      if (
    $link == FALSE)
      {
        echo 
    "<p><b>Leider kann keine Verbindung zur Datenbank hergestellt werden. Bitte
        versuchen Sie es später noch einmal.\n"
    ;
        echo 
    "</BODY></HTML>\n"// HTML Dokument abschliessen
        
    exit (); // PHP-Script beenden
      
    }

      
    // Datenbank auswaehlen
      
    $dblink=mysql_select_db($dbname);
      if (
    $dblink == FALSE)
      {
        echo 
    "<p><b>Leider kann die Datenbank nicht geöffnet werden. Bitte
        versuchen Sie es später noch einmal.\n"
    ;
        echo 
    "</BODY></HTML>\n"// HTML Dokument abschliessen
        
    exit (); // PHP-Script beenden
      
    }

      
    $query "SELECT emailid,id,firstname,acctcode,faxnumber FROM userdata
            WHERE id = 
    $id ";
      
    $result mysql_query($query);
      
    $num mysql_Num_Rows($result);

      if (
    $num != 0):
    ?>

    <FORM ACTION="editfin.php" METHOD="post">
      <table border="0" cellpadding="0" cellspacing="0" width="98%"> 
        <tr>
        <td width="100%">&nbsp;<div align="center">
        <center>
        <div align="center"></div>
        <table width="48%" align="center" cellpadding="0" cellspacing="0">
        <!-- Erzeugen der Eingabefelder für das Formular --> 
          <TR>
            <TD width="47%"> Kundennummer: </TD>
            <TD width="53%"><?php echo "$id?><INPUT TYPE="hidden" NAME="id" VALUE="<? echo "$id"; ?>"></TD>
          </TR> 
          <TR>
            <TD width="47%"> Emailadresse: </TD>
            <TD width="53%"> <INPUT TYPE="text" NAME="emailid" VALUE="<?php echo mysql_result($result0"emailid");?>"
            SIZE="40" MAXLENGTH="40"></TD>
          </TR> 
          <TR>
            <TD width="47%">Accounting Code : </TD>
            <TD width="53%"> <INPUT TYPE="text" NAME="acctcode" VALUE="<?php echo mysql_result($result0"acctcode");?>"
            SIZE="20" MAXLENGTH="20"> </TD>
          </TR> 
          <TR>
            <TD width="47%"> Faxnummer: </TD>
            <TD width="53%"> <INPUT TYPE="text" NAME="faxnumber" VALUE="<?php echo mysql_result($result0"faxnumber");?>"
            SIZE="30" MAXLENGTH="30"> </TD>
          </TR> 
          <TR>
            <TD width="47%"> Vorname: </TD>
            <TD width="53%"> <INPUT TYPE="text" NAME="firstname" VALUE="<?php echo mysql_result($result0"firstname");?>"
            SIZE="30" MAXLENGTH="30"> </TD>
          </TR> 

        </TABLE> 
        <p>&nbsp;</p>
        <div align="center">
          <INPUT TYPE="submit" VALUE="&Auml;nderung Abspeichern"> 
        </div>
    </FORM>
    </tr><?php else: echo "Eintrag nicht vorhanden";
    endif;
    mysql_freeresult($result);
    mysql_close();
    ?>
    <p align="center"><a href="index.php">Zur&uuml;ck zur Startseite</a><a href="index.html"></a></p>
    </BODY> 
    </HTML>
    und die editfin.php

    PHP-Code:
    <HTML> 
    <HEAD> 
        <TITLE> Ergebnis Kunden ändern</TITLE> 
        <link rel="stylesheet" type="text/css" href="style_ff.css">
    </HEAD> 
    <BODY> 

    <CENTER>
      <? 
      error_reporting(E_ALL);
      include ("db.inc");
      // Verbindung zum Datenbankserver herstellen
      $link=mysql_pconnect($dbserver, $dbuser, $dbpasswd);
      if ($link == FALSE)
      {
        echo "<p><b>Leider kann keine Verbindung zur Datenbank hergestellt werden. Bitte
        versuchen Sie es später noch einmal.\n";
        echo "</BODY></HTML>\n"; // HTML Dokument abschliessen
        exit (); // PHP-Script beenden
      }

      // Datenbank auswaehlen
      $dblink=mysql_select_db($dbname);
      if ($dblink == FALSE)
      {
        echo "<p><b>Leider kann die Datenbank nicht geöffnet werden. Bitte
        versuchen Sie es später noch einmal.\n";
        echo "</BODY></HTML>\n"; // HTML Dokument abschliessen
        exit (); // PHP-Script beenden
      }

      $id=$_POST['id'];
      $emailid=$_POST["emailid"];
      $acctcode=$_POST["acctcode"];
      $faxnumber=$_POST["faxnumber"]; 
      $firstname=$_POST["firstname"];
      

      $query = "UPDATE userdata 
        SET emailid='$emailid', 
            acctcode='$acctcode', 
             faxnumber='$faxnumber',
            firstname='$firstname', 
            WHERE id = $id"; 

      $result=mysql_query($query);
      mysql_close(); 

      print"<p><blockquote>Kundennummer: <b>$id</b> wurde geändert.<p> </blockquote>"; 
    ?>
    </CENTER>

    <p align="center"><a href="index.php">Zur&uuml;ck zur Startseite</a><a href="eingabe.php"></a><a href="index.php"></a></p>
    </BODY>
    </HTML>
    Wer weiß weiter?

    Danke schon mal fürs drüberschaun

  • #2
    Re: UPDATE in MySQL via PHP

    Also zunächst solltest Du erstmal die grundsätzlichen Fehler aus allen Skripten entfernen:

    1. korrektes HTML
    Schau dir mal die editform.php an:
    PHP-Code:
    <form action=editsum.php method=post//  FALSCH
    <form action="editsum.php" method="post"// RICHTIG 
    2. SQL-Injections
    editsum.php:
    PHP-Code:
    $id $_POST['id']; // AUA!!!! ganz böse
    $id = (int)$_POST['id']; // Besser 
    editfin.php:
    PHP-Code:
    // ganz schlecht
    $id=$_POST['id'];
    $emailid=$_POST["emailid"];
    $acctcode=$_POST["acctcode"];
    $faxnumber=$_POST["faxnumber"]; 
    $firstname=$_POST["firstname"];

    // besser, aber nicht perfekt
    $id=(int)$_POST['id'];
    $emailid=mysql_real_escape_string($_POST['emailid']);
    $acctcode=mysql_real_escape_string($_POST['acctcode']);
    $faxnumber=mysql_real_escape_string($_POST['faxnumber']); 
    $firstname=mysql_real_escape_string($_POST['firstname']); 
    Wegen deines Problems solltest Du mal ein bisken Debug-Code einbauen (editfin.php):
    PHP-Code:
    <HTML> 
    <HEAD> 
        <TITLE> Ergebnis Kunden ändern</TITLE> 
        <link rel="stylesheet" type="text/css" href="style_ff.css">
    </HEAD> 
    <BODY> 

    <CENTER>
      <?php

      
    // Anzeigen der per POST übergebenen Werte
      
    echo '<pre>';
      
    print_r($_POST);
      echo 
    '</pre>';
     
      
    error_reporting(E_ALL);
      include (
    "db.inc"); 
      ...
    Ich denke, also bin ich.
    Manche sind trotzdem!

    Kommentar


    • #3
      Hi

      DAANKE erst mal für deine Antwort Okay, habe die Stellen ausgebessert welche du mir geraten hast (werde nachher ma im SQL Buch schmökern was du mir da für Verbesserungen ans Herz gelegt hast.

      Was mittlerweile auf funktioniert ist das Schreiben (ging bereits vor deinen Thread .... aber nur das erste Feld, hier denke ich habe ich einfach noch einen Denkfehler.

      Hier die Passage die schreibt:

      PHP-Code:
       $query "UPDATE `userdata` 
        SET `emailid`='"
      .$_POST['emailid']."' WHERE `id`='".$_POST['id']."'"
      Nun möchte ich "mehr" Daten ändern können, es gibt z.B. noch ein Feld Vorname im Formular ....

      Sollte für nen Profi ne Kleinigkeit sein mir da noch zu helfen, dann geb ich auch schon wieder brav Ruhe


      --EDIT

      HABS ALLEIN gefunden, ein , hat gefehlt *anshirnlang*
      Zuletzt geändert von RealFairPlayer; 13.01.2006, 13:49.

      Kommentar

      Lädt...
      X