Announcement

Collapse
No announcement yet.

Daten in MySql Datenbank über PHP ändern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Daten in MySql Datenbank über PHP ändern

    Hallo,
    ich habe da eine Fragen, ich habe eine Datenbank angelegt und 2 scripte gemacht, mit einem kann ich die Daten abrufen und mit dem anderem eintragen,
    jetzt möchte noch einen Script machen, mit dem ich bestehende Daten in ein Formular laden kann danach ändern und dürch das absenden wieder eintragen, wie mache ich so etwas am besten???

    Danke schon mal im Voraus.

    Gruß
    Konstantin
    fange nie auf aufzuhören, höre nie auf anzufangen...
    crazykoni.de

  • #2
    Hi,

    zum eintragen und ändern im HTML siehe
    http://de.selfhtml.org/navigation/html.htm#formulare
    und achte auf das Wörtchen 'value="xxx"'

    SQL-Änderungsanwesiung heißt UPDATE
    http://dev.mysql.com/doc/refman/5.1/de/update.html
    "A common mistake that people make
    when trying to design something completely foolproof
    is to underestimate the ingenuity of complete fools.
    "
    >>> Douglas Adams, Mostly Harmless
    -------------------------------------------------------
    Techcrawler.de | JaMT | deCHK | Extra-Bonus-Shopping.de | Scour

    Comment


    • #3
      Hallo
      also,
      ich habe jetzt noch mal probiert der bringt mir immer die Meldung
      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
      hier mein script.

      PHP Code:
      <?php
         
      include("inc.files/db_conect.inc.php");

               
      /*Variablen zum Einfügen der Daten in die Datenbank*/
            
      $id         =   $_POST["id"];
            
      $head       =   $_POST["head"];
            
      $url        =   $_POST["url"];
            
      $descript   =   $_POST["descript"];
            
      $username   =   $_POST["username"];
            
      $password   =   $_POST["password"];

               
      $aendern   =   "UPDATE my_links Set head = head, url = url, descript = descript, username = username, password = password)";

      ?>
      <form action="<?php echo $_POST["PHP_SEL"]; ?>" method="post">
      <?php

               $abfrage 
      "SELECT * FROM my_links WHERE id = 1";
               
      $ergebnis mysql_query($abfrage);
               while (
      $row mysql_fetch_object($ergebnis))
            if(!(
      $_POST['ok']))
                          {
                        echo 
      "

                                               <table>
                           <tr>
                                 <td colspan='2'><input value='
      $row->id' class='fields' name='id' type='text'>
                                 </td>
                           </tr>
                           <tr>
                                 <td class='content'>Bezeichnung</td>
                                 <td><input value='
      $row->head' class='fields' name='head' type='text'></td>
                           </tr>
                           <tr>
                                 <td class='content'>Website URL</td>
                                 <td><input value='
      $row->url' class='fields' name='url'></td>
                           </tr>
                           <tr>
                                 <td class='content''>Beschreibung</td>
                                 <td><textarea cols='50' rows='10' name='descript' class='fields'>
      $row->descript</textarea></td>
                           </tr>
                           <tr>
                                 <td class='content'>Username</td>
                                 <td><input value='
      $row->username' class='fields' name='username' type='text'></td>
                           </tr>
                           <tr>
                                 <td class='content'>Passwort</td>
                                 <td><input value='
      $row->password' class='fields' name='password' type='text'></td>
                           </tr>
                           <tr>
                                 <td><input type='submit' value='Daten senden' class='button' name='ok'></td>
                                 <td><input type='reset' value='Daten löschen' class='button'></td>
                              <br>
                              <hr>
                              <br><br>
                           </tr>
                     </table>
                                               "
      ;
                     }
                  else if(
      $_POST['ok'])
                     {
                              if(
      strlen($head) <1$error 1;
                              if(
      strlen($url)  <1$error 1;
                              if(
      strlen($username)  <1$error 1;
                              if(
      strlen($password) <1$error 1;

                      if(
      $error == 0)
                           {
                              
      //Variable zum Eintrag der Daten in die Datenbank
                                
      $aendern   =   mysql_query($aendern) or die (mysql_error());
                                   echo 
      "
                                              <html>
                                                 <head>
                                                    <meta http-equiv='refresh' content='5; URL=http://www.crazykoni.de/admin/db_abfrage.php'>
                                                 </head>
                                              <body>
                                              Ihre Daten wurden erfolgreich in die Datenbank eingetragen
                                                </body>
                                              </html>
                                              "
      ;
                           }
                      else
                           {
                                echo 
      "Es ist ein Fehler aufgetreten, bitte alle formulare ausfühlen!";
                           }
                     }
      ?>
      </form>
      Kann mir da vielleicht jemand weiterhelfen???

      Gruß
      Konstantin
      fange nie auf aufzuhören, höre nie auf anzufangen...
      crazykoni.de

      Comment


      • #4
        Originally posted by xxcoolxx View Post
        Kann mir da vielleicht jemand weiterhelfen???
        Klar, dein SQL stimmt nicht.
        Diese Zeile ist falsch:
        PHP Code:
        $aendern   =   "UPDATE my_links Set head = head, url = url, descript = descript, username = username, password = password)"
        Also, erstens ist hinten ein ), was ja nun den Fehler auslöst.
        Allerdings wird dir auch ohne ) das ganze nix bringen, da du deine Variablen nicht in das SQL Kommando bringst.

        Kurz, dein Kommando sollte so aussehen:
        PHP Code:
        $aendern   =   "UPDATE my_links Set head = ".$head."  ....... 
        Sollte das DB-FELD 'head' ein Textbasiertes Feld sein (VARCHAR, TEXT, ...), dann musst du noch ein " in das Kommando bringen, damit mySQL keinen Fehler meldet.
        PHP Code:
        $aendern   =   "UPDATE my_links Set head = \"".$head."\"  ....... 
        Den Rest habe ich erstmal nicht angesehen.
        "A common mistake that people make
        when trying to design something completely foolproof
        is to underestimate the ingenuity of complete fools.
        "
        >>> Douglas Adams, Mostly Harmless
        -------------------------------------------------------
        Techcrawler.de | JaMT | deCHK | Extra-Bonus-Shopping.de | Scour

        Comment


        • #5
          danke schon mal, das hat jetzt funktioniert,

          jetzt habe ich aber eine andere Frage,

          Ich habe einen Abfrage script, mit dem ich die ganze Datensätze aus der Datenbaks aufrufe. Kann ich das so machen, dass ich neben jedem datensatz einen Link auf den Änderungsscript einbaue, dass beim draufklicken die richtige ID eingetragen wird, angenohmen ich möchte den Datensatz mit der ID 4 ändern, dann suche ich den in der Tabelle klicke drauf und erhalte den Änderungsspript bei dem schon die ID 4 eingetragen ist...

          Ich hoffe, ich habe mein Problem verständlich beschrieben...
          fange nie auf aufzuhören, höre nie auf anzufangen...
          crazykoni.de

          Comment


          • #6
            Originally posted by xxcoolxx View Post
            Ich hoffe, ich habe mein Problem verständlich beschrieben...
            Klar, ich kenne nun zwar dein Abfragescript nicht, aber generell ist das kein Problem.
            Mal angenommen, du benutzt MYSQL_FETCH_OBJECT um deine Datensätze zu erhalten, dann kannst du mit
            PHP Code:
            echo "<a href=\"edit.php?id=".$result->ID."\">Diesen Datensatz editieren</a>"
            Auf die edit.php mit dem Parameter id=xyz umleiten.
            Diesen kannst du dann in der edit.php mittels $_GET["id"] wieder auslesen und im SQL benutzen (...WHERE ID=".$_GET["id"]."...).
            "A common mistake that people make
            when trying to design something completely foolproof
            is to underestimate the ingenuity of complete fools.
            "
            >>> Douglas Adams, Mostly Harmless
            -------------------------------------------------------
            Techcrawler.de | JaMT | deCHK | Extra-Bonus-Shopping.de | Scour

            Comment


            • #7
              hier ist der Abfrage script...
              PHP Code:
              <?php
                  
              include("inc.files/db_conect.inc.php");
              ?>

              <html>
              <head>
              <style type="text/css">
              .headline-1
                  {
                      font-family:arial;
                      font-size:15pt;
                      padding:5px;
                      color:white;
                      background-color:black;
                      border-left: 1px black solid;
                      border-top: 1px black solid;
                      border-bottom: 1px black solid;
                  }
              .headline-2
                  {
                      font-family:arial;
                      font-size:15pt;
                      padding:5px;
                      color:white;
                      background-color:black;
                      border-right: 1px black solid;
                      border-top: 1px black solid;
                      border-bottom: 1px black solid;
                  }
              .content-1
                  {
                      font-family:arial;
                      font-size:12pt;
                      vertical-align:top;
                      padding: 5px;
                      border-left: 1px black solid;
                      border-bottom: 1px black solid;

                  }
              .content-2
                  {
                      font-family:arial;
                      font-size:12pt;
                      vertical-align:top;
                      padding: 5px;
                      border-right: 1px black solid;
                      border-left: 1px black solid;
                      border-bottom: 1px black solid;
                  }
              </style>
              </head>
              <body>
              <table cellpadding="0" cellspacing="0" border="0" width="900" >
                                  <tr>
                                      <td class="headline-1">Nummer</td>
                                      <td class="headline-1">Bezeichnung</td>
                                      <td class="headline-1">Website URL</td>
                                      <td class="headline-1">Beschreibung</td>
                                      <td class="headline-1">Username</td>
                                      <td class="headline-2">Passwort</td>
                                  </tr>
              <?php
                  $abfrage 
              "SELECT * FROM my_links ORDER BY id";
                       
              $ergebnis mysql_query($abfrage);
                       while (
              $row mysql_fetch_object($ergebnis))
                           {
                                   echo
                               
              "

                                  <tr>
                                      <td class='content-1'>
              $row->id</td>
                                      <td class='content-1'>
              $row->head</td>
                                      <td class='content-1'><a href='"
              .$row->url."' target='_blank'>".$row->url."</a></td>
                                      <td class='content-1'>
              $row->descript</td>
                                      <td class='content-1'>
              $row->username</td>
                                      <td class='content-1'>
              $row->password</td>
                                                               <td class='content-2'><a href='update.php'>&auml;ndern</a></td>
                                  </tr>
                              "
              ;
                          }
              ?>
              </table>



              </body>
              </html>
              fange nie auf aufzuhören, höre nie auf anzufangen...
              crazykoni.de

              Comment


              • #8
                ok danke ich war zu langsam...
                kannst du es mir vielleicht anhand von meinem Abfrage Script bitte zeigen, wenn es geht...
                fange nie auf aufzuhören, höre nie auf anzufangen...
                crazykoni.de

                Comment


                • #9
                  Na komm, ein wenig eigenarbeit sollte schon kommen.

                  Du musst diese Zeile verändern:
                  PHP Code:
                  <td class='content-2'><a href='update.php'>&auml;ndern</a></td
                  Das $result in meinem Text musst du mit $row ersetzen, der Rest ist schaffbar und erhöht den Lerneffekt.
                  "A common mistake that people make
                  when trying to design something completely foolproof
                  is to underestimate the ingenuity of complete fools.
                  "
                  >>> Douglas Adams, Mostly Harmless
                  -------------------------------------------------------
                  Techcrawler.de | JaMT | deCHK | Extra-Bonus-Shopping.de | Scour

                  Comment


                  • #10
                    so, jetzt habe ich die beiden Scripts angepasst und wenn ich jetzt in dem Abfrage Script auf den link klicke, dann sehe ich in der Adress leiste von meinem Browser, dass er auch die richtige ID rausliest, dann kommt aber immer wieder eine Fehlermeldung.
                    Parse error: syntax error, unexpected '?' in /var/www/web53/html/admin/update.php on line 14
                    Das ist mein updatescript nach der änderung:
                    <?php
                    include("inc.files/db_conect.inc.php");
                    /*Variablen zum Einfügen der Daten in die Datenbank*/
                    $_GET["id"];
                    $head = $_POST["head"];
                    $url = $_POST["url"];
                    $descript = $_POST["descript"];
                    $username = $_POST["username"];
                    $password = $_POST["password"];

                    $aendern = "UPDATE my_links Set head = \"".$head."\", url = \"".$url."\", descript = \"".$descript."\", username = \"".$username."\", password = \"".$password."\" WHERE id=".$_GET["id"].";

                    ?>
                    <form action="<?php echo $_POST["PHP_SEL"]; ?>" method="post">
                    <?php

                    $abfrage = "SELECT * FROM my_links WHERE id = 1";
                    $ergebnis = mysql_query($abfrage);
                    while ($row = mysql_fetch_object($ergebnis))
                    if(!($_POST['ok']))
                    {
                    echo "

                    <table>
                    <tr>
                    <td class='content'>Bezeichnung</td>
                    <td><input value='$row->head' class='fields' name='head' type='text'></td>
                    </tr>
                    <tr>
                    <td class='content'>Website URL</td>
                    <td><input value='$row->url' class='fields' name='url'></td>
                    </tr>
                    <tr>
                    <td class='content''>Beschreibung</td>
                    <td><textarea cols='50' rows='10' name='descript' class='fields'>$row->descript</textarea></td>
                    </tr>
                    <tr>
                    <td class='content'>Username</td>
                    <td><input value='$row->username' class='fields' name='username' type='text'></td>
                    </tr>
                    <tr>
                    <td class='content'>Passwort</td>
                    <td><input value='$row->password' class='fields' name='password' type='text'></td>
                    </tr>
                    <tr>
                    <td><input type='submit' value='Daten senden' class='button' name='ok'></td>
                    <td><input type='reset' value='Daten löschen' class='button'></td>
                    <br>
                    <hr>
                    <br><br>
                    </tr>
                    </table>
                    ";
                    }
                    else if($_POST['ok'])
                    {
                    if(strlen($head) <1) $error = 1;
                    if(strlen($url) <1) $error = 1;
                    if(strlen($username) <1) $error = 1;
                    if(strlen($password) <1) $error = 1;

                    if($error == 0)
                    {
                    //Variable zum Eintrag der Daten in die Datenbank
                    $aendern = mysql_query($aendern) or die (mysql_error());
                    echo "
                    <html>
                    <head>
                    <meta http-equiv='refresh' content='5; URL=http://www.crazykoni.de/admin/db_abfrage.php'>
                    </head>
                    <body>
                    Ihre Daten wurden erfolgreich in die Datenbank eingetragen
                    </body>
                    </html>
                    ";
                    }
                    else
                    {
                    echo "Es ist ein Fehler aufgetreten, bitte alle formulare ausfühlen!";
                    }
                    }
                    ?>
                    </form>
                    fange nie auf aufzuhören, höre nie auf anzufangen...
                    crazykoni.de

                    Comment


                    • #11
                      Bei folgender Zeile
                      PHP Code:
                      $aendern "UPDATE my_links Set head = \"".$head."\", url = \"".$url."\", descript = \"".$descript."\", username = \"".$username."\", password = \"".$password."\" WHERE id=".$_GET["id"]."; 
                      mal hinten das ." entfernen, da dies den String wieder öffnet und somit das ganze im Syntaxfehler endet.
                      "A common mistake that people make
                      when trying to design something completely foolproof
                      is to underestimate the ingenuity of complete fools.
                      "
                      >>> Douglas Adams, Mostly Harmless
                      -------------------------------------------------------
                      Techcrawler.de | JaMT | deCHK | Extra-Bonus-Shopping.de | Scour

                      Comment


                      • #12
                        Hallo noch mal, jetzt bin ich wirklich am verzweifeln, ich habe jetzt die Zeile verbesert jetzt liest er auch die ID und alles, beim Absenden kommt aber wieder eine Fehlermeldung.

                        [QUOTE]
                        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 'WHERE id=4' at line 1
                        [QUOTE]

                        was ist da noch falsch
                        PHP Code:
                        <?php
                            
                        include("inc.files/db_conect.inc.php");
                                 
                        /*Variablen zum Einfügen der Daten in die Datenbank*/
                               
                        $id         =   $_GET["id"];
                               
                        $head       =   $_POST["head"];
                               
                        $url        =   $_POST["url"];
                               
                        $descript   =   $_POST["descript"];
                               
                        $username   =   $_POST["username"];
                               
                        $password   =   $_POST["password"];

                                 
                        $aendern   =   "UPDATE my_links Set head = \"".$head."\", url = \"".$url."\", descript = \"".$descript."\", username = \"".$username."\", password = \"".$password."\", WHERE id=".$_GET["id"];

                        ?>
                        <form action="<?php echo $_POST["PHP_SEL"]; ?>" method="post">
                        <?php

                                 $abfrage 
                        "SELECT * FROM my_links WHERE id=".$_GET["id"];
                                 
                        $ergebnis mysql_query($abfrage);
                                 while (
                        $result mysql_fetch_object($ergebnis))
                                if(!(
                        $_POST['ok']))
                                             {
                                             echo 
                        "

                                                                 <table>
                                                   <tr>
                                                          <td class='content'>Bezeichnung</td>
                                                          <td><input value='
                        $result->head' class='fields' name='head' type='text'></td>
                                                   </tr>
                                                   <tr>
                                                          <td class='content'>Website URL</td>
                                                          <td><input value='
                        $result->url' class='fields' name='url'></td>
                                                   </tr>
                                                   <tr>
                                                          <td class='content''>Beschreibung</td>
                                                          <td><textarea cols='50' rows='10' name='descript' class='fields'>
                        $result->descript</textarea></td>
                                                   </tr>
                                                   <tr>
                                                          <td class='content'>Username</td>
                                                          <td><input value='
                        $result->username' class='fields' name='username' type='text'></td>
                                                   </tr>
                                                   <tr>
                                                          <td class='content'>Passwort</td>
                                                          <td><input value='
                        $result->password' class='fields' name='password' type='text'></td>
                                                   </tr>
                                                   <tr>
                                                          <td><input type='submit' value='Daten senden' class='button' name='ok'></td>
                                                          <td><input type='reset' value='Daten löschen' class='button'></td>
                                                      <br>
                                                      <hr>
                                                      <br><br>
                                                   </tr>
                                            </table>
                                                                 "
                        ;
                                          }
                                      else if(
                        $_POST['ok'])
                                          {
                                                  if(
                        strlen($head) <1$error 1;
                                                  if(
                        strlen($url)  <1$error 1;
                                                  if(
                        strlen($username)  <1$error 1;
                                                  if(
                        strlen($password) <1$error 1;

                                            if(
                        $error == 0)
                                                  {
                                                     
                        //Variable zum Eintrag der Daten in die Datenbank
                                                       
                        $aendern   =   mysql_query($aendern) or die (mysql_error());
                                                           echo 
                        "
                                                                     <html>
                                                                         <head>
                                                                             <meta http-equiv='refresh' content='5; URL=http://www.crazykoni.de/admin/db_abfrage.php'>
                                                                         </head>
                                                                     <body>
                                                                     Ihre Daten wurden erfolgreich in die Datenbank eingetragen
                                                                        </body>
                                                                     </html>
                                                                     "
                        ;
                                                  }
                                            else
                                                  {
                                                       echo 
                        "Es ist ein Fehler aufgetreten, bitte alle formulare ausfühlen!";
                                                  }
                                          }
                        ?>
                        </form>
                        fange nie auf aufzuhören, höre nie auf anzufangen...
                        crazykoni.de

                        Comment


                        • #13
                          jetzt hat es geklapt, ich hatte einen , zuviel vor WHERE, deswegen hat es nicht funktioniert.
                          $aendern = "UPDATE my_links Set head = \"".$head."\", url = \"".$url."\", descript = \"".$descript."\", username = \"".$username."\", password = \"".$password."\", WHERE id=".$_GET["id"];
                          Danke für die Hilfe.
                          Was ich aber an dem ganzen nicht verstehe, ist die
                          id=".$_GET["id"]
                          anweisung, kanns du mir das genauer erklären...
                          fange nie auf aufzuhören, höre nie auf anzufangen...
                          crazykoni.de

                          Comment


                          • #14
                            Originally posted by xxcoolxx View Post
                            Was ich aber an dem ganzen nicht verstehe, ist die anweisung, kanns du mir das genauer erklären...
                            In $_GET als array stecken alle Parameter, die du in der Adresszeile an die URL anhängst. Du machst das mit
                            Code:
                            http://www.meineadresse.nix/meinscript.php?id=4&sonstwas=hallo&nochwas=2
                            Der Teil hinter dem ? steht in $_GET, die Parameter sind als Name/Wert-Paar abgebildet und werden durch die & getrennt.
                            In $_GET steht in dem Falle:
                            Code:
                            $_GET["id"] = 4
                            $_GET["sonstwas"] = "Hallo"
                            $_GET["nochwas"] = 2
                            Du kannst es dir auch mal mit
                            PHP Code:
                            var_dump($_GET); 
                            ausgeben, dann siehst du das ganze recht gut.
                            RTFM: http://de.php.net/manual/de/reserved.variables.get.php
                            "A common mistake that people make
                            when trying to design something completely foolproof
                            is to underestimate the ingenuity of complete fools.
                            "
                            >>> Douglas Adams, Mostly Harmless
                            -------------------------------------------------------
                            Techcrawler.de | JaMT | deCHK | Extra-Bonus-Shopping.de | Scour

                            Comment


                            • #15
                              Hallo,

                              nur mal als Anmerkung und Ergänzung: Man sollte nie - und damit meine ich wirklich nie - Daten aus $_GET, $_POST, $_REQUEST, $_COOKIE, etc. ungeprüft und ungefiltert in einen SQL-String einbauen. Dadurch wird das Script anfällig für SQL-Injection!
                              Die Daten sollten mindestens mit mysql_real_escape_string() maskiert werden. Ggfs. kann man auch noch mit strip_tags() alle Tags entfernen, wenn diese nicht explizit gewünscht sind.

                              Und übrigens wird in SQL ein String-Literal in einfache Hochkomma geschrieben und nicht in doppelte!

                              Gruß Falk
                              Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                              Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                              Comment

                              Working...
                              X