UPDATE mit PDO

das sieht sehr übersichtlich aus.
Folgend ist mein unfertiges Script..

PHP:
$pdo = new PDO('mysql:host=xxx;dbname=xxx', 'xxx', 'xxx');

$daten_aendern = array();
$daten_aendern['fa_vorname'] = $_POST["fa_vorname"];
$daten_aendern['fa_nachname'] = $_POST["fa_nachname"];

$parameter = $_GET["parameter"];

$statement = $pdo->prepare("SELECT * FROM bw WHERE bw_code = :bw_code");
$statement->execute(array(':bw_code' => $parameter));  
while($row = $statement->fetch()) {

$sql = "update bw set fa_vorname = :fa_vorname, fa_nachame = :fa_nachname where bw_code = :parameter";
$sth = $pdo->prepare($sql);
$sth->bindParam(':parameter', $parameter, PDO::PARAM_INT);
$sth->bindParam(':fa_vorname', $daten_aendern['fa_vorname'], PDO::PARAM_STR);
$sth->bindParam(':fa_nachname', $daten_aendern['fa_nachname'], PDO::PARAM_STR);
$sth->execute();

<form action="#" method="post">
<div class="row">       
                                <div class="col-lg-6 col-xs-12">
                                        <div class="form-group">
                                            <label for="fa_vorname">Vorname:</label>
                                            <input type="text" class="form-control" id="fa_vorname" name="fa_vorname" value="'.$row["fa_vorname"].'">
                                          </div>
                                </div>
                                <div class="col-lg-6 col-xs-12">
                                        <div class="form-group">
                                            <label for="fa_nachname">Nachname:</label>
                                            <input type="text" class="form-control" id="fa_nachname" name="fa_nachname" value="'.$row["fa_nachname"].'">
                                          </div>
                                </div>
                        <hr />


                       
                        <input type="hidden" class="form-control" id="bw_code" name="bw_code" value="'.$row["bw_code"].'">
                        <button type="submit" class="btn btn-success btn-sm">Bewerbung ändern</button>
</form>


}

Doch leider ist noch irgendwo der WURM drin
 
Und wie zeigt sich dieser Wurm?

Achja, der ganze Update-Teil sollte nur ausgeführt werden, wenn du mittels eines Submit des Formulars auf die Seite kommst. Im Moment wird es auch beim ersten Aufruf ausgeführt.

Und des weiteren. Wennd u mit submit auf die Seite kommst, dann hast du den $_GET nicht.

Du hast auch vergessen mit einem echo() zu arbeiten oder den PHP-Teil für die Ausgabe zu schliessen.

Dein <div class="row"> ist nicht geschlossen.

Im Endeffekt komme ich auf etwa sowas (ungetestet). Sollte es nicht gehen, bitte beschreibe was nicht geht. WIe sich das zeigt.
PHP:
<?php
$pdo = new PDO('mysql:host=xxx;dbname=xxx', 'xxx', 'xxx');
 
if($_SERVER['REQUEST_METHOD'] == 'POST'){
   //Das Formular wurde abgeschickt
   $parameter = $_POST['bw_code'];
   $fa_vorname = $_POST['fa_vorname'];
   $fa_nachname = $_POST['fa_nachname'];
  
   $sql = 'update bw set fa_vorname = :fa_vorname, fa_nachame = :fa_nachname where bw_code = :bw_code';
   $sth = $pdo->prepare($sql);
   $sth->bindParam(':bw_code', $parameter, PDO::PARAM_INT);
   $sth->bindParam(':fa_vorname', $fa_vorname, PDO::PARAM_STR);
   $sth->bindParam(':fa_nachname', $fa_nachname, PDO::PARAM_STR);
   $sth->execute();
}else{
   //Kein Formular wurde abgechckt
   $parameter = $_GET['parameter'];
}

//Daten erst nach einem möglichen Update auslesen
$sth = $pdo->prepare('SELECT * FROM bw WHERE bw_code = :bw_code');
$sth->bindParam(':bw_code', $parameter, PDO::PARAM_INT);
$sth->execute(); 
while($row = $sth->fetch()) {
?>
   <form action="#" method="post">
       <div class="row">    
           <div class="col-lg-6 col-xs-12">
               <div class="form-group">
                   <label for="fa_vorname">Vorname:</label>
                   <input type="text" class="form-control" id="fa_vorname" name="fa_vorname" value="<?php echo $row["fa_vorname"]; ?>">
               </div>
           </div>
           <div class="col-lg-6 col-xs-12">
               <div class="form-group">
                   <label for="fa_nachname">Nachname:</label>
                   <input type="text" class="form-control" id="fa_nachname" name="fa_nachname" value="<?php echo $row["fa_nachname"]; ?>">
               </div>
           </div>
           <hr />
           <input type="hidden" class="form-control" id="bw_code" name="bw_code" value="'.$row["bw_code"].'">
           <button type="submit" class="btn btn-success btn-sm">Bewerbung ändern</button>
       </div>
   </form>
<?php
}
?>
 
Achja, der ganze Update-Teil sollte nur ausgeführt werden, wenn du mittels eines Submit des Formulars auf die Seite kommst. Im Moment wird es auch beim ersten Aufruf ausgeführt.
Und wie ändere ich dies ?

Und des weiteren. Wennd u mit submit auf die Seite kommst, dann hast du den $_GET nicht.
Nein.. Der Parameter wird von der vorigen Seite mit geliefert..Dort habe ich eine Ausgabetabelle mit allen Eintragungen und für jede bw_code einen Änderungsbutton. Der bw_code wird somit mitgeliefert.

Du hast auch vergessen mit einem echo() zu arbeiten oder den PHP-Teil für die Ausgabe zu schliessen.
hatte ich vergessen mit zu kopieren..

Dein <div class="row"> ist nicht geschlossen.
Jetzt ja...

Hier der Komplette Qelltextnoch mal neu überarbeitet...
PHP:
$pdo = new PDO('mysql:host=xxx;dbname=xxx', 'xxx', 'xxx');

$daten_aendern = array();
$daten_aendern['fa_vorname'] = $_POST["fa_vorname"];
$daten_aendern['fa_nachname'] = $_POST["fa_nachname"];

$parameter = $_GET["parameter"];

$sql = "update bw set fa_vorname = :fa_vorname, fa_nachame = :fa_nachname where bw_code = :parameter";
$sth = $pdo->prepare($sql);
$sth->bindParam(':parameter', $parameter, PDO::PARAM_INT);
$sth->bindParam(':fa_vorname', $daten_aendern['fa_vorname'], PDO::PARAM_STR);
$sth->bindParam(':fa_nachname', $daten_aendern['fa_nachname'], PDO::PARAM_STR);
$sth->execute();


$statement = $pdo->prepare("SELECT * FROM bw WHERE bw_code = :bw_code");
$statement->execute(array(':bw_code' => $parameter));  
while($row = $statement->fetch()) {

echo '

<div class="container">
    <form action="#" method="post">
        <div class="row">       
            <div class="col-lg-6 col-xs-12">
                <div class="form-group">
                    <label for="fa_vorname">Vorname:</label>
                    <input type="text" class="form-control" id="fa_vorname" name="fa_vorname" value="'.$row["fa_vorname"].'">
                </div>
            </div>
            <div class="col-lg-6 col-xs-12">
                <div class="form-group">
                    <label for="fa_nachname">Nachname:</label>
                    <input type="text" class="form-control" id="fa_nachname" name="fa_nachname" value="'.$row["fa_nachname"].'">
                </div>
            </div>
        </div>
        <hr />
        <button type="submit" class="btn btn-success btn-sm">Bewerbung ändern</button>
    </form>
</div>';

}
mysql_close();

In der Datenbank steht Klaus Rudolph und dies wird auch im Inputtfeld fa_vorname und fa_nachname ausgegeben..
Jetzt schreibe ich Beta Klein rein, klicke auf den Button und der alte Name bleibt bestehen. Auch in der Datenbank ändert sich nicht !
Link http://silberschlag.creativpur.com/eingabe/ausgabe.php

ich hatte schon mal so ein ähnliches Problem..Da kam der Server nicht mit den Kürzeln klar.. Einer der mit half hat dann eine Kleinigkeit geändert und dann lief es..
Die Seite liegt auf Strato
 
Na super....
Jetzt funktioniert sogar mein riesen Formular..
Habe alles so wie dank Deines Scripts in mein Änderungsformular übernommen...
Dabei habe ich verdammt viel gelernt... Vielen, vielen Dank..
 

Neue Beiträge

Zurück