Mein Projekt Telefonbuch

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

  • Mein Projekt Telefonbuch

    Hallo,

    ich hänge gerade ein wenig und hoffe ihr könnt mir weiterhelfen! Ich bin absoluter PHP neuling und lerne noch. Ich komme nicht aus der IT und mache das hier einfach zum spass :-)

    Nun mein Problem, ich habe ein Php skript geschrieben, teilweise aus büchern genommen und modifiziert, aber gerade komme ich nicht weiter.

    ich arbeite an einer Seite auf der ich meine Datensätze suchen, eintragen und verändern kann, die ersten beiden möglichkeiten habe ich schon erreicht.

    Hier mal mein Code:
    PHP-Code:

    <?php
    error_reporting
    (-1);
    ini_set('display_errors'1);
    if(isset(
    $_POST["gesendet"]) && $_POST["nachname"] != "") {
    $con mysqli_connect("localhost""root""xxx""Telefonbuch");
    $sql "SELECT perso_id, nachname, vorname, strasse, plz, ort, telefonnummer, handynummer, email, webseite, nachricht FROM personen"
       
    " WHERE nachname LIKE '" $_POST["nachname"] . "%'";
    $res mysqli_query($con$sql);
    $num mysqli_num_rows($res);
    if(
    $num 0) { echo "<h3>Ergebnis:</h3><br><br>";



    echo 
    "<table border='1'>";
    echo 
    "<tr> <th></th> <td>Nachname</th> <td>Vorname</th> <th>Strasse</th> <th>Plz</th> <th>Ort</th> <th>Telefonnummer</th> <th>Handynummer</th> <th>Email</th> <th>Webseite</th> <th>Notiz</th> </tr>";

    while (
    $dsatz mysqli_fetch_assoc($res))
    {
        echo 
    "<tr>";
        echo 
    "<td><input type='radio' name='auswahl'";
        echo 
    " value='" $dsatz["perso_id"] . "'></td>";
        echo 
    "<td>"    $dsatz["nachname"] . "</td>";
        echo 
    "<td>"    $dsatz["vorname"] . "</td>";
        echo 
    "<td>" $dsatz["strasse"] . "</td>";
        echo 
    "<td>"    $dsatz["plz"] . "</td>";
        echo 
    "<td>"    $dsatz["ort"] . "</td>";
        echo 
    "<td>"    $dsatz["telefonnummer"] . "</td>";
        echo 
    "<td>"    $dsatz["handynummer"] . "</td>";
        echo 
    "<td>"    $dsatz["email"] . "</td>";
        echo 
    "<td>"    $dsatz["webseite"] . "</td>";
        echo 
    "<td>"    $dsatz["nachricht"] . "</td>";
        echo 
    "</tr>";
        
    }
    echo 
    "</table>";
    echo 
    "<br><br><br>";
    echo 
    "<input type='submit' name='uebergeben' value='Datensatz bearbeiten'>";
    echo 
    "<br><br>";

    } else { echo 
    "<h3>Keine Ergebnisse!</h3><br><br><br>";
    }

    /* if(isset($_POST["auswahl"]) && $_POST["uebergeben"])) {
        header("Location: db.einzel_b.php");
        exit;
    } else {
        echo "Bitte einen Datensatz auswählen"; 
    } */



    mysqli_close($con);
    }
    ?>
    Im grunde läuft das skript schon ganz gut, also die suche nach datensätzen, sie werden aufgrundlage des suchbegriffs angezeigt und sind auch per radio type auswählbar, lediglich das uebergeben an die datei db_einzel_b.php wenn ich auf auf den submitbutton mit name = uebergeben drücke, klappt noch nicht!

    Steinigt mich bitte nicht, ich habe meine lösung die leider nciht funzt in Kommentarzeichen eingeschlossen.

    Über tipps / anregungen zur funktionalität wäre ich dankbar.

    Ich weiss auch das mein code noch einige sicherheitsaspekte verträgt, wie gesagt ich lerne noch :-)

    Gruß,

    Helge

  • #2
    Hey HelgeHH,


    dein Ansatz ist leider nicht so richtig. Es gibt sehr viele wege um dies zu lösen, ich kann dir gerne meinen Ansatz vorschlagen. Wenn du einzelne Datensätze bearbeiten möchtest, dann brauchst du nur dir ID des Datensatzes mithilfe von $_GET weitergeben und auf der anderen Seite diese ID in der Datenbank abfragen und den Datensatz herausholen und diese in einem Formular packen und den Formular dann mit $_POST absenden und den Datensatz dann aktualisieren. Ich zeige dir mal ein Beispiel wie ich es mache.


    z.b. Die Tabelle könnte so aussehen:
    Du fügst in die letzte spalte eine Aktionen spalte und dort übergibst du die ID mithilfe von $_GET auf die Seite wo es bearbeitet werden soll.

    PHP-Code:
    <table border="1">
     <tr>  <th>ID</th>  <th>Nachname</th>  <th>Vorname</th>  <th>Strasse</th>  <th>Plz</th>  <th>Ort</th>  <th>Telefonnummer</th>  <th>Handynummer</th>  <th>Email</th> 
      <th>Webseite</th>  <th>Notiz</th>  <th>Aktionen</th> </tr>
    <?php
    while ($dsatz mysqli_fetch_assoc($res)) {?>
     <tr>
      <td><?php echo $dsatz["perso_id"]; ?></td> 
      <td><?php echo $dsatz["nachname"]; ?></td> 
      <td><?php echo $dsatz["vorname"]; ?></td> 
      <td><?php echo $dsatz["strasse"]; ?></td> 
      <td><?php echo $dsatz["plz"]; ?></td>
      <td><?php echo $dsatz["ort"]; ?></td>
      <td><?php echo $dsatz["telefonnummer"]; ?></td> 
      <td><?php echo $dsatz["handynummer"?></td> 
      <td><?php echo $dsatz["email"]; ?></td> 
      <td><?php echo $dsatz["webseite"]; ?></td> 
      <td><?php echo $dsatz["nachricht"]; ?></td>  <td><a href="db.einzel_b.php?id=<?php echo $dsatz["perso_id"]; ?>">Bearbeiten</a></td>
     </tr><?php
         

    ?></table>
    So damit hast du schonmal die ID weitergegeben an db.einzel_b.php.
    Jetzt musst du die ID abfangen und diesen Datensatz in einem Formular anzeigen. z.B:


    <div>
    PHP-Code:
    <?php

    $personal_id 
    $_GET["id"]; //hier wird die ID abgefangen


       
    if(isset($_POST["aktualisieren"])) {      $nachname $_POST["nachname"];      $vorname $_POST["vorname"]; 
          
    und so weiter bis du alle formular felder hast und danach speicherst du  
          
    die abgesendete Daten in der Datenbank mithilfe von UPDATE   
      else {    
    $con mysqli_connect("localhost""root""xxx""Telefonbuch");     $sql "SELECT perso_id, nachname, vorname, strasse, plz, ort, telefonnummer, handynummer, email, webseite,      nachricht FROM personen WHERE perso_id = '$personal_id'"
        
    $res mysqli_query($con$sql);
       
    $dsatz mysqli_fetch_assoc($res);?>  

    <form method="post">  
    <input type="text" name="nachname" value="<?php echo $dsatz["nachname"]; ?>">  
    und so weiter kannst du alle inputs machen 

    <input type="submit" name="aktualisieren" value="Aktualisieren">   </form> 

    <?php }
    Ich hoffe das war ein wenig hilfreich. Du kannst den URL mit benutzen, ich denke es ist einfacher als wie du es versucht hast. So hnlich kannst du auch mit löschen arbeiten.


    Mfg
    Flava




    PS: Tut mir leid, leider ist die Strukturierung durcheinander gegangen, deswegen ist alles ein wenig versetzt, eventuell kannst du dir den Code mithilfe von einem Editor anschauen
    Zuletzt geändert von Flavaslava; 29.03.2019, 22:35.

    Kommentar


    • #3
      Hallo Flava,

      danke erstmal für deine ausführliche Antwort, ich muss mich da erstmal reinlesen und reindenken, ist wie du schon selber sagst ein ganz anderer Ansatz als mein code :-)

      ich werde ihn ausprobieren und gebe dann bescheid, bzw. stelle nachfragen wenn sich noch welche für mich ergeben :-)

      danke nochmal ,

      gruß,

      Helge

      Kommentar


      • #4
        Hallo,

        habe mich mit flavas lösung beschäftigt aber leider habe ich es nicht hinbekommen, ständig eine weiße Seite und keine Fehlerausgabe :/


        Jetzt sieht das ganze so aus:



        wenn ich aendern.php aufrufe, werden mir automatisch alle datensätze aus der datenbank angezeigt ( siehe bild aendernneuweb.jpg ). Ich kann dann einen Datensatz auswählen und an db_einzel_b.php ( siehe bild db_einzel_bweb.jpg ) übergeben, der datensatz wird dann angezeigt und kann bearbeitet werden , änderungen werden dann über db_einzel_c.php per update befehl an die datenbank übertragen!

        soweit , so gut, funktionalität besteht !

        Das einzige, was mich jetzt noch stört, ist das wenn ich aendern.php aufrufe, alle datensätze in der datenbank aufgerufen werden, bei 20 datensätzen noch übersichtlich, aber kommen mehr dazu, wird es schwierig!

        Hat jemand noch ne idee, wie ich vorgehen kann oder was ich machen kann um nicht alle datensätze automatisch angezeigt zu bekommen? Gibt es ne einfache Filterfunktion oder Suchmöglichkeit die ich einfügen kann ohne den ganzen code umschreiben zu müssen? :-)

        Für Anregungen / Tipps wäre ich echt dankbar!

        gruß,

        Helge




        Hier der Code von aendern.php:

        PHP-Code:

        <body>    
        <nav id="nav">
            
                <ul>
                   <li><a href="index.php">Suchen</a></li>
                   <li><a href="eintragen.php">Eintragen</a></li>
                   <li><a href="#" class="aktiv">&Auml;ndern</a></li>
                  <!-- <li><a href="loeschen.php">Löschen</a></li> -->
                
                </ul>
        </nav>
        <p class="webinet">Mein Adressbuch</p><br><br><br>
            
        <br><br>
        <div class="format">
        <H2><p><b>Treffen Sie Ihre Auswahl:</b></p></h2><br><br>

        <form action = "db_einzel_b.php" method= "post">
        <?php

           $con 
        mysqli_connect("localhost""root""xxx""telefonbuch");
           
        $res mysqli_query($con"SELECT * From personen ORDER BY nachname");
           echo 
        "<table border='1'>";
           echo 
        "<tr>";
           echo 
        "<td></td> <td>Nachname</td> <td>Vorname</td> <td>Strasse</td> <td>Plz</td> <td>Ort</td> <td>Telefonnummer</td> <td>Handynummer</td> <td>Email</td> <td>Webseite</td> <td>Nachricht</td>";
           echo 
        "</tr>";

        while (
        $dsatz mysqli_fetch_assoc($res))
        {
        echo 
        "<tr>";
        echo 
        "<td><input type='radio' name='auswahl'";
        echo 
        " value='" $dsatz["perso_id"] . "'></td>";
        echo 
        "<td>" $dsatz["nachname"] . "</td>";
        echo 
        "<td>" $dsatz["vorname"] . "</td>";
        echo 
        "<td>" $dsatz["strasse"] . "</td>";
        echo 
        "<td>" $dsatz["plz"] . "</td>";
        echo 
        "<td>" $dsatz["ort"] . "</td>";
        echo 
        "<td>" $dsatz["telefonnummer"] . "</td>";
        echo 
        "<td>" $dsatz["handynummer"] . "</td>";
        echo 
        "<td>" $dsatz["email"] . "</td>";
        echo 
        "<td>" $dsatz["webseite"] . "</td>";
        echo 
        "<td>" $dsatz["nachricht"] . "</td>";
        echo 
        "</tr>";
        }
        echo 
        "</table>";

        mysqli_close($con);
        ?>
        <br><br><br>
        <p><input type="submit" value="Datensatz anzeigen"></p>
        <br><br><br>
        </form>
        </div>
        </body>
        Hier der Code von db_einzel_b.php :

        PHP-Code:

        <body>

        <nav id="nav">
            
                <ul>
                   <li><a href="index.php">Suchen</a></li>
                   <li><a href="eintragen.php">Eintragen</a></li>
                   <li><a href="aendern.php">&Auml;ndern</a></li>
                  <!-- <li><a href="loeschen.php">Löschen</a></li> -->
                </ul>
        </nav>
        <p class="webinet">Mein Adressbuch</p><br><br><br>
        <br>
        <br>
        <div id="ausgabe">
        <?php
        if (isset($_POST["auswahl"]))
        {
            
        $con mysqli_connect("localhost""root""xxx""telefonbuch");
            
        $sql "SELECT * FROM personen WHERE perso_id = " $_POST["auswahl"];
            
        $res mysqli_query($con$sql);
            
        $dsatz mysqli_fetch_assoc($res);
            
            echo 
        "<p><h2>Bitte neue Inhalte Eintragen und speichern:</h2></p><br><br>";
            echo 
        "<form action = 'db_einzel_c.php' method = 'post'>";
            echo 
        "<fieldset>";
            
            echo 
        "<p>Vorname:</p><input class='selbst' name='vorname' value='" $dsatz["vorname"] . "'> ";
            echo 
        "<p>Nachname:</p><input class='selbst' name='nachname' value='" $dsatz["nachname"] . "'> ";
            echo 
        "<p>Strasse:</p><input class='selbst' name='strasse' value='" $dsatz["strasse"] . "'> ";
            echo 
        "<p>Plz:</p><input class='selbst' name='plz' value='" $dsatz["plz"] . "'> ";
            echo 
        "<p>Ort:</p><input class='selbst' name='ort' value='" $dsatz["ort"] . "'> ";
            echo 
        "<p>Telefonnummer:</p><input class='selbst' name='telefonnummer' value='" $dsatz["telefonnummer"] . "'> ";
            echo 
        "<p>Handynummer:</p><input class='selbst' name='handynummer' value='" $dsatz["handynummer"] . "'> ";
            echo 
        "<p>Email:</p><input class='selbst' name='email' value='" $dsatz["email"] . "'> ";
            echo 
        "<p>Webseite:</p><input class='selbst' name='webseite' value='" $dsatz["webseite"] . "'> ";
            echo 
        "<p>Notiz:</p><input class='selbst1' name='nachricht' value='" $dsatz["nachricht"] . "'> ";
            echo 
        "<input type='hidden' name='oripn' value='" $_POST["auswahl"] . "'>";
            echo 
        "<br>";
            echo 
        "<p><input type='submit' value='Speichern'>";
            
            echo 
        "</fieldset>";
            echo 
        "</form>";
            
            
        mysqli_close($con);
        }
        else
            echo 
        "<p><h2>Keine Auswahl getroffen!</h2></p>";
            echo 
        "<br><br>";
            echo 
        "<p>Bitte einen <a href='aendern.php'>Datensatz </a>w&auml;hlen!</p>";

        ?>
        </div>

        </body>

        Und hier mein Code für db_einzel_c.php :

        PHP-Code:

        <?php
            $con 
        mysqli_connect("localhost""root""xxx""telefonbuch");
            
        $sql "UPDATE personen SET"
               
        " vorname = '" $_POST["vorname"] . "',"
               
        " nachname = '" $_POST["nachname"] . "',"
               
        " strasse = '" $_POST["strasse"] . "',"
               
        " plz = '" $_POST["plz"] . "',"
               
        " ort = '" $_POST["ort"] . "',"
               
        " telefonnummer = '" $_POST["telefonnummer"] . "',"
               
        " handynummer = '" $_POST["handynummer"] . "',"
               
        " email = '" $_POST["email"] . "',"
               
        " webseite = '" $_POST["webseite"] . "',"
               
        " nachricht = '" $_POST["nachricht"] . "'"
               
        " WHERE perso_id = " $_POST["oripn"];
               
        mysqli_query($con$sql);
               
        /*
               $num = mysqli_affected_rows($con);
               if($num > 0) echo "Betroffen: $num<br>";
               else         echo "Betroffen: 0<br>";
               */
               
        mysqli_close($con);
        ?>
        Angehängte Dateien
        Zuletzt geändert von HelgeHH; 30.03.2019, 16:59.

        Kommentar


        • #5
          Zitat von HelgeHH Beitrag anzeigen
          Hallo,

          ich hänge gerade ein wenig und hoffe ihr könnt mir weiterhelfen! Ich bin absoluter PHP neuling und lerne noch. Ich komme nicht aus der IT und mache das hier einfach zum spass :-)

          Nun mein Problem, ich habe ein Php skript geschrieben, teilweise aus büchern genommen und modifiziert, aber gerade komme ich nicht weiter.

          ich arbeite an einer Seite auf der ich meine Datensätze suchen, eintragen und verändern kann, die ersten beiden möglichkeiten habe ich schon erreicht.

          Hier mal mein Code:
          PHP-Code:

          <?php
          error_reporting
          (-1);
          ini_set('display_errors'1);
          if(isset(
          $_POST["gesendet"]) && $_POST["nachname"] != "") {
          $con mysqli_connect("localhost""root""xxx""Telefonbuch");
          $sql "SELECT perso_id, nachname, vorname, strasse, plz, ort, telefonnummer, handynummer, email, webseite, nachricht FROM personen"
             
          " WHERE nachname LIKE '" $_POST["nachname"] . "%'";
          $res mysqli_query($con$sql);
          $num mysqli_num_rows($res);
          if(
          $num 0) { echo "<h3>Ergebnis:</h3><br><br>";



          echo 
          "<table border='1'>";
          echo 
          "<tr> <th></th> <td>Nachname</th> <td>Vorname</th> <th>Strasse</th> <th>Plz</th> <th>Ort</th> <th>Telefonnummer</th> <th>Handynummer</th> <th>Email</th> <th>Webseite</th> <th>Notiz</th> </tr>";

          while (
          $dsatz mysqli_fetch_assoc($res))
          {
              echo 
          "<tr>";
              echo 
          "<td><input type='radio' name='auswahl'";
              echo 
          " value='" $dsatz["perso_id"] . "'></td>";
              echo 
          "<td>"    $dsatz["nachname"] . "</td>";
              echo 
          "<td>"    $dsatz["vorname"] . "</td>";
              echo 
          "<td>" $dsatz["strasse"] . "</td>";
              echo 
          "<td>"    $dsatz["plz"] . "</td>";
              echo 
          "<td>"    $dsatz["ort"] . "</td>";
              echo 
          "<td>"    $dsatz["telefonnummer"] . "</td>";
              echo 
          "<td>"    $dsatz["handynummer"] . "</td>";
              echo 
          "<td>"    $dsatz["email"] . "</td>";
              echo 
          "<td>"    $dsatz["webseite"] . "</td>";
              echo 
          "<td>"    $dsatz["nachricht"] . "</td>";
              echo 
          "</tr>";
              
          }
          echo 
          "</table>";
          echo 
          "<br><br><br>";
          echo 
          "<input type='submit' name='uebergeben' value='Datensatz bearbeiten'>";
          echo 
          "<br><br>";

          } else { echo 
          "<h3>Keine Ergebnisse!</h3><br><br><br>";
          }

          /* if(isset($_POST["auswahl"]) && $_POST["uebergeben"])) {
              header("Location: db.einzel_b.php");
              exit;
          } else {
              echo "Bitte einen Datensatz auswählen"; 
          } */



          mysqli_close($con);
          }
          ?>
          Im grunde läuft das skript schon ganz gut, also die suche nach datensätzen, sie werden aufgrundlage des suchbegriffs angezeigt und sind auch per radio type auswählbar, 19216811-login.info lediglich das uebergeben an die datei db_einzel_b.php wenn ich auf auf den submitbutton mit name = uebergeben drücke, klappt noch nicht!

          Steinigt mich bitte nicht, ich habe meine lösung die leider nciht funzt in Kommentarzeichen eingeschlossen.

          Über tipps / anregungen zur funktionalität wäre ich dankbar.

          Ich weiss auch das mein code noch einige sicherheitsaspekte verträgt, wie gesagt ich lerne noch :-)

          Gruß,

          Helge

          Thank you

          Kommentar

          Lädt...
          X