Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Verschiedene generierte Formulare, einzeln abspeichern lassen.

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Verschiedene generierte Formulare, einzeln abspeichern lassen.

    Hallo PHP Profis,

    Ich habe mir vor ner Woche ein PHP Buch "PHP 5.5 und MySQL 5.6" vom dpunkt Verlag zugelegt.

    Darin gibt es ein Tutorial über Eingabefelder in Mysql speichern, das ganze aber immer aufgeteilt in 2 Dateien "anzeigen.php und bearbeiten.php"

    Meine Intention war das ganze in einem Dokument darzustellen.
    Und das ist mein Problem

    Hier ist der Code zum auslesen der Mysql Datenbank, je nach dem wieviel Daten ich drin habe erstellt mir die Schleife die Eingabefelder hintereinander weg. Das funktioniert auch problemlos.

    PHP-Code:
    <?php
    require_once "db_daten_aktuell.php";
    $stmt $mysqli->prepare("SELECT id, titel, pfad, text FROM referenz"); 
      
    $stmt->execute();
      
    $stmt->bind_result($id$titel$pfad$text);
      while(
    $stmt->fetch()) {
         
    echo 
    "<img src='https://xxx/$titel'>";
    $name basename($titel'.jpg');
    echo 
    "<form method='post' action='home2.php'>";
    echo 
    "Titel <br />";
    echo 
    "<input type='text' name='titel' value='<$name>' /><br />";
    echo 
    "Pfad <br />";
    echo 
    "<input type='text' name='pfad' value='<$pfad>' /><br />";
    echo 
    "Text <br />";
    echo 
    "<textarea name='text' rows='5' cols='30'><$text></textarea><br />";
    echo 
    "<input type='hidden' name='id' value='<$id>' />";
    echo 
    "<input type='submit' name='speichern' />";
    echo 
    "</form>";    
    echo 
    "<br />";
      }
      
    $stmt->close();
    $mysqli->close(); 
      
    ?>
    Jetzt möchte ich gerne die Texte ändern können und danach mit dem "submit" button speichern.

    Hierbei bekomme ich aber keine Reaktion zurück und die Änderungen werden leider nicht gespeichert:

    PHP-Code:
     <?php
     
    if (isset($_POST['speichern']))
    {
     
    $id = (int)$_POST["id"]; 
      
    $stmt $mysqli->prepare("UPDATE referenz 
            SET titel=?, pfad=?, text=? WHERE id=?"
    ); 
        
    $titel $_POST["titel"];
        
    $pfad $_POST["pfad"];
        
    $text $_POST["text"];
        
    $stmt->bind_param("sssi"$titel$pfad$text$id);
        
    $stmt->execute();

      }

     
    ?>
    Könnt Ihr mich in die richtige Richtung bringen?

  • #2
    Hallo,

    mach da die spitzen Klammern weg <$name> ->$name

    Und bei solchen Blöcken empfiehlt es sich eher so zu schreiben:

    PHP-Code:
    ?> (für Ende PHP)
    <form method='post' action='home2.php'>
    Titel <br /> 
    <input type='text' name='titel' value='<?php echo $name?>' /><br /> 
    Pfad <br /> 
    <input type='text' name='pfad' value='<?php echo $pfad?>' /><br /> 
    Text <br /> 
    <textarea name='text' rows='5' cols='30'><?php echo $text?></textarea><br /> 
    <input type='hidden' name='id' value='<?php echo $id?>' /> 
    <input type='submit' name='speichern' /> 
    </form>     
    <br /> 

    <?php
    // hier gehts weiter mit PHP
    Und beim entwickeln immer ganz oben im Script error_reporting aktivieren:

    PHP-Code:
    error_reporting(-1);
    ini_set('display_errors'1); 
    Und wenn es nicht funktioniert - debuggen: http://php-de.github.io/jumpto/leitfaden/
    Bei mysqli gibt es _error Funktionen die kannst du abfragen ob es Fehler gab. http://php.net/manual/de/mysqli.error.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


    • #3
      Vielen Dank!

      Das war es was ich brauchte!

      Meine Fehler waren:

      Ich habe den Zugang zur Datenbank bereits nach der Ausgabeschleife geschlossen
      PHP-Code:
         $stmt->close();
      $mysqli->close(); 
      Daher konnte das Script nicht mehr auf die Daten zugreifen!

      Kommentar


      • #4
        Im Normalfall brauchst du diese beiden gar nicht explizit ausführen, PHP räumt da selbst auf (Stichwort "Garbage Collector").
        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
          Alles klar seh ich mir an

          Kommentar

          Lädt...
          X