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?

  • chim
    antwortet
    Alles klar seh ich mir an

    Einen Kommentar schreiben:


  • hausl
    antwortet
    Im Normalfall brauchst du diese beiden gar nicht explizit ausführen, PHP räumt da selbst auf (Stichwort "Garbage Collector").

    Einen Kommentar schreiben:


  • chim
    antwortet
    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!

    Einen Kommentar schreiben:


  • hausl
    antwortet
    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

    Einen Kommentar schreiben:

Lädt...
X