Ankündigung

Einklappen
Keine Ankündigung bisher.

Eingabe in einer datenbank.

Einklappen

Neue Werbung 2019

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

  • Eingabe in einer datenbank.

    Hallo, Zusammen.

    ich bin gerade beim aufbau einer Seite in PHP und inn Verbindung mit SQL.
    Dabei schau auch scripte auf Lernplattformen an und erlerne sie.

    nun habe ich Zwei Versionen. eine geht die andere nicht.

    Die URL zu den seiten und Quelle füge ich mit ein. Habe nur Anpassungen an die Verbindung zur DB gemacht. Beide Scripte LESEN die DB aus und geben Sie mir aus. Nur das einfügen in die DB geht nicht. Warum??

    Der geht, ist aber sehr viel script
    HTML-Code:
    https://www.php-kurs.com/db-neuen-datensatz-speichern.htm
    ::

    PHP-Code:
    <?php require 'inc/db.php';
    if (isset(
    $_POST['aktion']) and $_POST['aktion']=='speichern')
    {     
    $vorname "";     if (isset($_POST['vorname'])) {         $vorname trim($_POST['vorname']);     }     $nachname "";     if (isset($_POST['nachname'])) {         $nachname trim($_POST['nachname']);     }     $anmerkung "";     if (isset($_POST['anmerkung'])) {         $anmerkung trim($_POST['anmerkung']);     }     $erstellt date("Y-m-d H:i:s");     if ( $vorname != '' or $nachname != '' or $anmerkung != '' )     {         // speichern         $einfuegen = $db->prepare("                 INSERT INTO kontakte (vorname, nachname, anmerkung, erstellt)                  VALUES (?, ?, ?, NOW())                 ");         $einfuegen->bind_param('sss', $vorname, $nachname, $anmerkung);         if ($einfuegen->execute()) {             header('Location: index.php?aktion=feedbackgespeichert');             die();             echo "<h1>gespeichert</h1>";         }     }    } if (isset($_GET['aktion']) and $_GET['aktion']=='feedbackgespeichert') {     echo '<p class="feedbackerfolg">Datensatz wurde gespeichert</p>';     } $daten = array(); if ($erg = $db->query("SELECT * FROM kontakte")) {     if ($erg->num_rows) {         while($datensatz = $erg->fetch_object()) {             $daten[] = $datensatz;         }         $erg->free();     }    } if (!count($daten)) {     echo "<p>Es liegen keine Daten vor :(</p>"; } else { ?>     <table>         <thead>             <tr>                 <th>ID</th>                 <th>Vorname</th>                 <th>Nachname</th>                 <th>Anmerkung</th>                 <th>erstellt</th>             </tr>         </thead>         <tbody>             <?php             foreach ($daten as $inhalt) {             ?>                 <tr>                     <td><?php echo $inhalt->id?></td>                     <td><?php echo bereinigen($inhalt->vorname); ?></td>                     <td><?php echo bereinigen($inhalt->nachname); ?></td>                     <td><?php echo bereinigen($inhalt->anmerkung); ?></td>                     <td><?php echo $inhalt->erstellt?></td>                 </tr>             <?php             }             ?>         </tbody>     </table> <?php    } function bereinigen($inhalt='') {     $inhalt trim($inhalt);     $inhalt htmlentities($inhaltENT_QUOTES"UTF-8");     return($inhalt); } ?> <form action="" method="post">     <label>Vorname:          <input type="text" name="vorname" id="vorname">     </label>     <label>Nachname:          <input type="text" name="nachname" id="nachname">     </label>     <label>Anmerkung:          <textarea name="anmerkung" id="anmerkung"></textarea>     </label>     <input type="hidden" name="aktion" value="speichern">     <input type="submit" value="speichern"> </form>
    und der NICHT......
    HTML-Code:
    https://wiki.selfhtml.org/wiki/PHP/Tutorials/Datenbanken_mit_PHP
    PHP-Code:
    <?php

    require 'inc/db.php';
    $spalten = [
      
    'vorname' => 'Vorname',
      
    'nachname' => 'Nachname',
    'anmerkung' => 'anmerkung',
    ];

    ?>
    <!doctype html>
    <html lang="de">
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Titel</title>
      </head>
      <body>
        <table>
          <thead>
            <tr>
    <?php
    foreach ($spalten as $name) {
      echo 
    '<th>'htmlspecialchars($name), '</th>';
    }
    ?>
            </tr>
          </thead>
          <tbody>
    <?php
    $results 
    $dbh->query('SELECT * FROM `adressen`');

    foreach(
    $results as $result) {
      echo 
    '<tr>';

      foreach (
    $spalten as $schluessel => $name) {
        echo 
    '<td>'htmlspecialchars($result[$schluessel]), '</td>';
      }
     
      echo 
    '</tr>';
    }
    ?>
          <tbody>
        <table>
      </body>
    </htm
    <?php
    if(isset($_POST['neu'])) {
      
    $schluessel = [];
      
    $werte = [];
      
    $platzhalter = [];

      foreach (
    $spalten as $spalte => $name) {
          
    $schluessel[] = '`'.$spalte.'`';
          
    // Zu lange Eingaben kürzen
          
    if(mb_strlen($_POST[$spalte]) > 256) {
            
    $_POST[$spalte] = mb_substr($_POST[$spalte], 0256);
          }
          
    $werte[] = $_POST[$spalte]??'';
          
    $platzhalter[] = '?';
      }
      
    $werte[] = time();
    $query 'INSERT INTO `adressen` ('.implode(', '$schluessel).', `zuletzt_geaendert`)
                VALUES ('
    .implode(', '$platzhalter).')';
      
    $stmt $dbh->prepare($query);
      
    $stmt->execute($werte);
      
    header('Location: .');
      die();
    }
    ?>
    <form method="post">
      <fieldset>
        <legend>Neuer Eintrag</legend>
    <?php
    foreach($spalten as $schluessel => $name) {
      echo 
    '<label><input type="text" name="',
        
    htmlspecialchars($schluesselENT_QUOTES ENT_HTML5), '" maxlength="256"> ',
        
    htmlspecialchars($name),
        
    '</label><br>';
    }
    ?>
        <button name="neu" value="1">Eintragen</button>
      </fieldset>
    </form>

  • #2
    Willkommen hier im Forum!

    Was Du noch vor allen anderen Dingen (er-)lernen solltest, „… geht/funktioniert nicht“ ist keine gültige Fehlermeldung. Wo sollen wir da ansetzen um Dir zu helfen.
    Nur Du kennst Deine Programmierumgebung.

    Daher bitte immer die vollständige Fehlermeldung posten. Sollte Du keine Fehlermeldung sehen/haben, schalte die Fehleranzeige ein bzw. höher.
    Schaue ggf. auch in die entsprechenden Fehlerprotokolle auf dem Server bzw. in Deiner Umgebung.

    Hier wird niemand Scripte aus fremden unbekannten Quellen analysiere und Fehlersuche betreiben. Dies gilt Anfänger, Wiedereinsteiger als auch für Fortgeschrittene.

    Kommentar


    • #3
      Okay,
      also der erste code von php-kurs.com läuft ja ohne Probleme durch und die Eintragung geht in die Tabelle. der Zweite Code von Wiki.selfhtml liest die Tabelle aus. Erstellt auch die Eingabemaske für ein neuen Eintrag, jedoch sobald ich auf den Button Eintrag tippe geht die Eingabemaske weg. der Eintrag in der Tabelle wird nicht erzeugt. Neu Laden der Webseite, möchte dieser eine Information erneut senden. Macht es aber nicht. Nur über die Eingabe der Webadresse wird die Seite neu aufgebaut und alles ist beim Alten.
      Aktuellstes MYSQL mit PHP 8 auf ein WIN2022 Server . Seite wird auf separates System ( win 10 mit firefox )

      Kommentar


      • #4
        Fehlermeldungen?
        Einträge in Error-Logdateien?
        Fehleranzeige aktiviert bzw. höher geschaltet?

        Kommentar


        • #5
          Zitat von Tkey Beitrag anzeigen
          Okay,
          also der erste code von php-kurs.com läuft ja ohne Probleme durch und die Eintragung geht in die Tabelle. der Zweite Code von Wiki.selfhtml liest die Tabelle aus. Erstellt auch die Eingabemaske für ein neuen Eintrag, jedoch sobald ich auf den Button Eintrag tippe geht die Eingabemaske weg. der Eintrag in der Tabelle wird nicht erzeugt. Neu Laden der Webseite, möchte dieser eine Information erneut senden. Macht es aber nicht. Nur über die Eingabe der Webadresse wird die Seite neu aufgebaut und alles ist beim Alten.
          Aktuellstes MYSQL mit PHP 8 auf ein WIN2022 Server . Seite wird auf separates System ( win 10 mit firefox )
          bitte poste nicht einzelig.
          bitte debugge selbst:

          https://php-de.github.io/#debugging

          und, du hast in deinem aufbau zu viele parameter, webserver, browser,, formular...

          wenn du testen willst ob du was in eine db einfügen kannst, reichen wenige zeilen und eine cli-

          der rest wqurde dir ja schjon erklärt

          Kommentar


          • #6
            Crossposting: https://www.php-resource.de/forum/sq...iner-datenbank

            Kommentar


            • #7
              Bevor man in eine Tabelle etwas eintragen möchte muß man erst die entsprechende Datenbank und die dazugehörige Tabelle anlegen. Deine zwei Listings unterscheiden sich im Teil sql insert into 1. kontakt und 2.adresse Im ersten Listing scheint kein Eintrag zu erfolgen weil dieser teil nur Echos ausgibt. Und insert ino zu einem Kommentar ausgegliedert (außerkraft gesetzt)wurde?? Im zweiten Listing existiert wohl nicht die Tabelle?

              Kommentar

              Lädt...
              X