Ankündigung

Einklappen
Keine Ankündigung bisher.

Datensatz Bearbeiten

Einklappen

Neue Werbung 2019

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

  • Datensatz Bearbeiten

    Hallo Zusammen, ich habe ein Tabelle die gefüllt ist mit Daten aus mysql.
    Ich habe in der letzten Spalte jeweils einen Button "änden". Mit Hilfe dieses Buttons soll ein Form öffnen, bei dem ich die Daten abändern und die Datenbank "Updaten" kann.
    Mein Code:
    bearbeiten.php
    PHP-Code:
    <?php
    include('../db_connect.inc.php');
    $aktuelle_id $_GET['id']

      
    $abfrage "SELECT * FROM verzeichniss WHERE id = $aktuelle_id"
        
    $ergebnis mysql_query($abfrage); 
        while(
    $row mysql_fetch_object($ergebnis)) 

     
    ?>
    <html> 
    <body> 

    <form action="speichern.php" method="post"> 
      <table> 
        <tr> 
          <td>ID:</td><td><? echo "$aktuelle_id"; ?></td> 
        </tr> 
        <tr> 
         <td>IDa:</td><td><input type="text" name="id" VALUE="<?php echo     
            
    mysql_result($ergebnis0"id");?>"></td> 
         </tr> 
        <tr> 
         <td>Name:</td><td><input type="text" name="Name" VALUE="<?php echo     
            
    mysql_result($ergebnis0"Name");?>"></td> 
         </tr> 
         <tr> 
           <td>Vorname:</td><td><input type="text" name="Vorname" size="14" VALUE="<?php echo  
           
    mysql_result($ergebnis0"Vorname");?>"></td> 
         </tr> 
         <tr> 
            <td>Festnetz:</td><td><input type="text" name="Festnetz" size="14" VALUE="<?php echo  
            
    mysql_result($ergebnis0"Festnetz");?>"></td> 
         </tr> 
          <tr> 
            <td>Handy:</td><td><input type="text" name="Handy" size="14" VALUE="<?php echo  
            
    mysql_result($ergebnis0"Handy");?>"></td> 
         </tr> 
       </table> 
    <br> 
    <input type="submit" value="OK"> 
    </form> 

    </body> 
    </html>

    speichern.php
    PHP-Code:
    <?php 
        
    include('../db_connect.inc.php');
      
    ?> 

      <?php 
        $aktuelle_id
    =$_POST['id']; 
        
    $Name=$_POST['Name']; 
        
    $Vorname=$_POST["Vorname"];  
        
    $Festnetz=$_POST["Festnetz"];  
        
    $handy=$_POST["Handy"];
       
        
    $query "UPDATE verzeichniss 
                  SET Name='
    $Name',  
                      Vorname='
    $Vorname', 
                      Festnetz='
    $Festnetz
                       Handy='
    $Handy
                  WHERE id = '
    $aktuelle_id' ";  

        
    $result mysql_query($query); 
      
    ?>
    Leider wird die Seite nicht geladen.
    Wenn ich die Abfrage:
    PHP-Code:
       $abfrage "SELECT * FROM verzeichniss WHERE id = $aktuelle_id"
        
    $ergebnis mysql_query($abfrage); 
        while(
    $row mysql_fetch_object($ergebnis)) 
    herausnehme wird mir die Seite geladen (jedoch ohne Inhlate)

    was mache ich falsch beim Laden der Daten?

  • #2
    Von gerade aus dem anderen Thread.

    Zitat von hausl Beitrag anzeigen
    ...

    Übrigens, schau mal deinen Code mal genau an und lasse den mal validieren, du wiederholst in der DB-Schleife zu viel... momentan nämlich dein gesamtes HTML. Lass den mal drüber laufen, staune und behebe. http://validator.w3.org/

    [..]

    Und das sie mysql_ Erweiterung bald nicht mehr funktonieren wird sei hier auch noch erwähnt. http://php.net/manual/en/migration55.deprecated.php
    Ich empfehle dir dringends Grundlagen! http://www.php.de/php-einsteiger/489...rundlagen.html

    Deine DB-Erweiterung ist veraltet, deine Querys unsicher (SQL-Injection) und SELECT * ist auch pfui und du prüfst die $_POST-Daten von "außen" nichtmal anssatzweise.

    Lese/Lernstoff:
    http://php-de.github.io/jumpto/sql-injection/
    http://php-de.github.io/jumpto/code-smells/#select-
    und Grundlagen wurden bereits erwähnt.

    LG
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Da dies zurzeit eine Offline Seite ist kann ich den validator leider nicht verwenden. Ich werde mich auf jedenfall mit den Grundlagen beschäftigen, danke

      Kommentar


      • #4
        Da dies zurzeit eine Offline Seite ist kann ich den validator leider nicht verwenden.
        http://validator.w3.org/#validate_by_input

        HTML-Quellcode aus Browser einfach mit Copy&Paste reinkopieren, ferrtig.
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Zitat von schnibli Beitrag anzeigen
          Da dies zurzeit eine Offline Seite ist kann ich den validator leider nicht verwenden.
          Falsch, du kannst den erzeugten HTML-Code kopieren und in den Validator einfügen. Oder du nutzt den Firefox mit installiertem Addon WebDeveloper, dann kannst du das direkt aus dem Firefox machen.
          Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

          Kommentar


          • #6
            Wo kann ich dies beim WebDeveloper einsehen? sorry die blöde frage

            Kommentar


            • #7
              Oder du nutzt den Firefox mit installiertem Addon WebDeveloper
              https://addons.mozilla.org/de/firefo...web-developer/

              ?!

              LG
              The string "()()" is not palindrom but the String "())(" is.

              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                Firefox -> Extras -> Add-ons -> Add-Ons suchen -> Web Developer eingeben -> Installieren
                Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

                Kommentar


                • #9
                  Hallo zusammen,
                  Danke ich habe es bis jetzt so gelöst:
                  PHP-Code:
                  <?php
                  include('../db_connect.inc.php');

                  $sql "SELECT
                                  id, 
                                  Name, 
                                  Vorname, 
                                  Festnetz, 
                                  Handy 
                                  FROM
                                  verzeichniss
                             WHERE
                                  ID = '"
                  .mysql_real_escape_string($_GET['id'])."'";

                  $result mysql_query($sql) OR die(mysql_error());

                  while(
                  $row mysql_fetch_assoc($result)) {

                         echo 
                  "<form action='index.php?Seite=speichern.php&action=senden'
                             method='POST'>"
                  ;

                         echo 
                  "ID: 
                             "
                  .$row['id']."<br>";
                         echo 
                  "Name: 
                            <input type='text' name='Name' size='20' value='"
                  .$row['Name']."'><br>";
                         echo 
                  "Vorname: 
                            <input type='test' name='Vorname' size='20' value='"
                  .$row['Vorname']."'><br>";
                         echo 
                  "Festnetz: 
                            <input type='text' name='Festnetz' size='20' value='"
                  .$row['Festnetz']."'><br>";
                         echo 
                  "Handy: 
                            <input type='text' name='Handy' size='20' value='"
                  .$row['Handy']."'><br>";
                         echo 
                  "<input type='submit' value='Speichern'>";

                         echo 
                  "</form>";

                  }
                  ?>

                  Kommentar


                  • #10
                    PHP-Code:
                    echo "<form action='index.php?Seite=speichern.php&action=senden'
                               method='POST'>"

                    Dafür gäbe es hidden Felder.

                    --

                    Was nach wie vor noch offen ist, die mysql_ Erweiterung wird es bald nicht mehr geben dh besser gleich auf PDO oder mysqli_ umsteigen und prepared Statments nutzen, dann kannst du dir auch das real_escape_string sparen, das ist da inklusive.

                    http://php.net/manual/en/migration55.deprecated.php

                    LG
                    The string "()()" is not palindrom but the String "())(" is.

                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar


                    • #11
                      Ich bin dran dies abzuändern:
                      PHP-Code:
                      <?php
                      include('../db_connect_i.inc.php');
                      //sql befehl
                      $sql 'SELECT * 
                              FROM verzeichniss where id=17'
                      ;

                      $erg $db->query ($sql) or die ("Fehlermeldung=".$db->error());



                      while((
                      $row $erg->fetch_assoc()) !== Null){

                      $a=$row["id"];
                      $b=$row["Name"];
                      $c=$row["Vorname"];
                      $d=$row["Festnetz"];
                      $e=$row["Handy"];
                      }
                      ?>

                      <form method="POST" action="speichern.php">
                      <input name="name" value="<?php echo $a?>"><br>
                      <input name="vorname" value="<?php echo $b?>"><br>
                      <input name="festnetz" value="<?php echo $c?>"><br>
                      <input name="handy" value="<?php echo $d?>"><br>
                      <input type=submit name=submit value="Formular absenden">
                      </form>
                      Jedoch weis ich nicht wie ich die übergabe der id richtig programmiere

                      bez. wie der Updatebefehl aussehn sol bei mysqli

                      Kommentar


                      • #12
                        so kommen die daten nun in speichern.php an:
                        PHP-Code:
                        <?php 
                        include('../db_connect.inc.php');
                        $id = isset($_POST['id']) ? $_POST['id'] : '';
                        $name = isset($_POST['name']) ? $_POST['name'] : '';
                        $vorname = isset($_POST['vorname']) ? $_POST['vorname'] : '';
                        $festnetz = isset($_POST['festnetz']) ? $_POST['festnetz'] : '';
                        $handy = isset($_POST['handy']) ? $_POST['handy'] : '';
                        echo 
                        "$id";
                        echo 
                        "$name";
                        echo 
                        "$vorname";
                        echo 
                        "$festnetz";
                        echo 
                        "$handy"
                        $sql "UPDATE verzeichniss 
                                   SET  id = '" 
                        .$_POST["id"] . "'
                                        Name = '" 
                        $_POST["name"] . "' ,  
                                         Vorname = '" 
                        $_POST["vorname"] . "' ,  
                                          Festnetz = '" 
                        $_POST["festnetz"] . "'   
                                          Handy = '" 
                        $_POST["handy"] . "'   
                                   WHERE id = '" 
                        $_POST["id"] . "' "
                         
                        $update mysql_query($sql);
                         
                        ?>
                        jedoch krieg ich keinen Funktionierenden update befehl mit mysqli hin kann mir jemand helfen?

                        Kommentar


                        • #13
                          Zitat von schnibli Beitrag anzeigen
                          jedoch krieg ich keinen Funktionierenden update befehl mit mysqli hin
                          Das heißt was?

                          Und wieso prüfst du die Post-Variablen mit isset und schreibst sie dabei um, um dann doch wieder $_POST zu nehmen? Und wieso schreibst du was von mysqli*, wenn du mysql* benutzt? Und wieso werden die Daten nicht vorher escaped und wieso nutzt du in deinem Fall lein mysql_error??? Fragen über Fragen bei dem grausamen PHP-Code.
                          Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

                          Kommentar


                          • #14
                            PHP-Code:
                            $sql "UPDATE verzeichniss 
                                       SET  id = '" 
                            .$_POST["id"] . "'
                                            Name = '" 
                            $_POST["name"] . "' ,  
                                             Vorname = '" 
                            $_POST["vorname"] . "' ,  
                                              Festnetz = '" 
                            $_POST["festnetz"] . "'   
                                              Handy = '" 
                            $_POST["handy"] . "'   
                                       WHERE id = '" 
                            $_POST["id"] . "' "
                            Unbedingt anschauen: http://php.net/manual/de/mysqli.quic...statements.php
                            The string "()()" is not palindrom but the String "())(" is.

                            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                            PHP.de Wissenssammlung | Kein Support per PN

                            Kommentar


                            • #15
                              So das Update habe ich jetzt mit mysqli geschafft, jedoch nur mit einem Parameter.
                              Wie muss ich dies anstellen damit mehrere geupdatet werden.
                              PHP-Code:
                              Ich würde gerne mit Update arbeiten sorry,
                              Nun ich habe es mal so geschafft:
                              [code]​<?php 
                              include('../db_connect_i.inc.php');

                              $id = isset($_POST['id']) ? $_POST['id'] : '';
                              $name = isset($_POST['name']) ? $_POST['name'] : '';
                              $vorname = isset($_POST['vorname']) ? $_POST['vorname'] : '';
                              $festnetz = isset($_POST['festnetz']) ? $_POST['festnetz'] : '';
                              $handy = isset($_POST['handy']) ? $_POST['handy'] : '';

                              // show errors (remove this line if on a live site)
                              mysqli_report(MYSQLI_REPORT_ERROR);

                              // MySQL data
                              //$email = "daniel@world.edu";
                              //$country = "Indonesia";

                              $stmt $db->prepare("UPDATE verzeichniss SET Name = ? WHERE id = ?");
                              $stmt->bind_param('ss'$name,
                              $id
                              );
                              $stmt->execute();
                              $stmt->close();
                              header ("Location:verzeichniss.php"); 
                              ?>
                              [/code]
                              dies habe ich wie folgt gelöst :
                              ​<?php
                              include('../db_connect_i.inc.php');
                              $id = isset($_POST['id']) ? $_POST['id'] : '';
                              $name = isset($_POST['name']) ? $_POST['name'] : '';
                              $vorname = isset($_POST['vorname']) ? $_POST['vorname'] : '';
                              $festnetz = isset($_POST['festnetz']) ? $_POST['festnetz'] : '';
                              $handy = isset($_POST['handy']) ? $_POST['handy'] : '';
                              // show errors (remove this line if on a live site)
                              mysqli_report(MYSQLI_REPORT_ERROR);
                              // MySQL data
                              //$email = "daniel@world.edu";
                              //$country = "Indonesia";
                              $stmt = $db->prepare("UPDATE verzeichniss SET Name = ?, Vorname = ?, Festnetz = ?, Handy = ? WHERE id = ?");
                              $stmt->bind_param('ssssi', $name, $vorname, $festnetz, $handy,
                              $id
                              );
                              $stmt->execute();
                              $stmt->close();
                              header ("Location:verzeichniss.php");
                              ?>

                              Kommentar

                              Lädt...
                              X