Mehere Datensätze aus Tabellenausgabe auf einmal speichern
Sub
- datenbank
0 Tom0 Sub0 Sub0 Frank (no reg)0 Sub
0
dedlfix
- php
Ich habe eine Seite die alle Datensätze einer Tabelle als textareas ausgibt. Auf dieser Seite will ich alle Datensätze in den textareas bearbeiten (klappt) und mit einem click speichern (klappt nicht).
Hier meine codes:
http://pastey.net/77012
Abgesehen davon, dass das UPDATE in der SAVE.php nicht ganz funktioniert, wie muss es richtig aussehen?
Dank!
Hello,
Abgesehen davon, dass das UPDATE in der SAVE.php nicht ganz funktioniert, wie muss es richtig aussehen?
Was klappt denn nicht beim Speichern?
Gibt es Fehlermeldungen?
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom

Was klappt denn nicht beim Speichern?
Gibt es Fehlermeldungen?
Nein keine, SAVE.php verhält sich normal, lädt die adding.php, die liest die Datensätze neu aus, aber Veränderungen wurden nicht gespeichert.
Habe SAVE.php schon zig mal verändert mit dem Ziel die Datensätze updaten zu lassen. Beim Bearbeiten der Sätze auf einer extra EDIT.php und dann SAVE.php, schien es mir so, als übernehme er die ID nicht, denn bei einem REPLACE INTO legt er einen neuen Datensatz an.
Hi,
deine SAVE.php, ADDING.php und EDIT.php haben offensichtlich Fehler.
Was erwartest du jetzt eigentlich? Eine Lösung mithilfe der allsehenden Glaskugel?
Ciao, Frank
deine SAVE.php, ADDING.php und EDIT.php haben offensichtlich Fehler.
sind verlinkt, EDIT.php wird gar nicht benutzt, aber trotzdem danke.
echo $begrüßung;
http://pastey.net/77012
Formularelemente, die abgeschickt werden sollen müssen sich innerhalb der <form>ular-Deklaration befinden. Und dann sollten die Elemente eindeutige nyme-Attribute bekommen, sonst hast du mit PHP Schwierigkeiten, die Werte einerseits wieder auseinanderzuhalten und andererseits dem ursprünglichen Datensatz zuzuordnen. Beispiel: <input name="foo[<?php echo $id ?>]" ...>. Daraus erzeugt PHP in $_POST['foo'] ein schönes Array mit den IDs als Keys.
echo "$verabschiedung $name";
@dedlfix: macht sinn, dass sonst alle den gleichen namen haben dachte ich mir schon, hoffte aber über die ID würde es dann eindeutig.
Jetzt habe ich 3 Probleme:
Die Ausgabe hat je Datensatz 2 Felder: title und content. title ist ein input feld, content eine textarea. mal vereinfacht dargestellt ohne select *:
<?
echo ( $zeile->em.' <input type="text" name="title" value="'.$zeile->title.'"></input>
<br /><textarea name="content">'.$zeile->content.'</textarea>
'.$zeile->em );
}}?>
Btw. $zeile->em am Anfang und Ende ist total überflüssig, echo zwingt mich aber irgendwie ohne tags anzufangen und zu enden :/
Ist $id allgemein oder muss ich meine primary key spalte ID aufrufen?
Habe mal probiert, aber natürlich falsch:
<?
echo ( $zeile->em.' <form><input type="text" name="foo[<?php echo '.$zeile->ID.' ?>]" value="'.$zeile->title.'"></input></form>
<br /><form><textarea name="foo[<?php echo '.$zeile->ID.' ?>]" rows="4" wrap="true" class="content2">'.$zeile->content.'</textarea></form>
'.$zeile->em );
}}?>
Also wo muss ich name="foo[<?php echo $id ?>]" jeweils unterbringen und wo $_POST['foo'] in der SAVE.php?
echo $begrüßung;
@dedlfix: macht sinn, dass sonst alle den gleichen namen haben dachte ich mir schon, hoffte aber über die ID würde es dann eindeutig.
Und wo bitteschön verknüpfst du die ID mit den Daten aus den Eingabefeldern, so dass du weißt, welches Datum zu welcher ID gehört? Wenn du x Eingabefelder mit dem Namen foo hast, dann musst du da irgendwie noch die ID unterbringen, sonst sind die Daten nicht zuzuordnen.
Btw. $zeile->em am Anfang und Ende ist total überflüssig, echo zwingt mich aber irgendwie ohne tags anzufangen und zu enden :/
echo ist ein Sprachkonstrukt. Es benötigt keine Klammern und man muss Strings auch nicht erst verknüpfen, um sie auszugeben. Einfach die Teilstrings mit Kommas getrennt aufführen reicht.
Ist $id allgemein oder muss ich meine primary key spalte ID aufrufen?
Weder beim Programmieren im Allgemeinen noch bei PHP im Speziellen kommt irgendwas aus der Luft geflogen :-) Du musst schon das, was du verwenden willst, irgendwie angeben.
Habe mal probiert, aber natürlich falsch:
<?
Wenn du möchtest, dass deine Scripte unter jeder Systemkonfiguration laufen, verwende <?php statt der Kurzform <?.
echo ( $zeile->em.' <form><input type="text" name="foo[<?php echo '.$zeile->ID.' ?>]" value="'.$zeile->title.'"></input></form>
<br /><form><textarea name="foo[<?php echo '.$zeile->ID.' ?>]" rows="4" wrap="true" class="content2">'.$zeile->content.'</textarea></form>
'.$zeile->em );
}}?>
Bevor du irgendwas kompliziertes unter Verwendung von mehreren Techniken zusammenbaust, solltest du dir die Grundlagen der einzelnen Techniken zu Gemüte führen. Zunächst schlage ich vor, liest du dich in das Thema Formulare in HTML ein.
Wenn du das hast, legst du dir ein paar Kenntnisse im Fehlersuchen in Programmen zu. Dazu gehört im Allgemeinen eine Ausgabe der beteiligen Werte, damit man sieht, womit man zu arbeiten gedenkt. Unter PHP gibt es dazu neben dem einfachen echo noch var_dump(), das etwas mehr Informationen zu einem Wert ausgibt, sowie print_r() für die Ausgabe von nichtskalaren Strukturen (Arrays, Objekte). Ebenfalls sollte man beim PHP-Entwickeln immer das error_reporting auf E_ALL (und display_errors auf on) stellen, um _alle_ Meldungen angezeigt zu bekommen.
Dann baust du schrittweise dein Zeug zusammen. Du könntest zunächst ein Formular mit zwei- oder dreimal den jeweiligen Eingabefeldern aus reinem statischen HTML zusammenbauen und das zu einem Script senden, das nur <pre><?php print_r($_POST); enthält. Damit siehst du, was dein Formular bewirkt, und was deine Änderungen am HTML-Code auf der Empfängerseite bewirken. Wenn du dann irgendwann überzeugt bist, dass das was dir das print_r() ausgibt reicht, um eindeutige UPDATE-Statements zu erzeugen, kannst du selbiges Handling hinzufügen. Usw. usf.
echo "$verabschiedung $name";
Danke für die ausführliche Antwort, ich lerne durch trial & error ;)
OK, werde mir das mal in ruhe durchlesen.
ok ich glaub ich hab's jetzt zumindest verstanden:
<form name="foo[<?php echo '.$zeile->ID.' ?>]" action="SAVE.php" method="post">
<?
echo ( $zeile->em.' <input type="text" name="title" class="title2" rows="1"
value="'.$zeile->title.'"></input>
<br /><textarea name="content" rows="4" wrap="true" class="content2">'.$zeile->content.'</textarea>
'.$zeile->em );
}}?>
<input type="submit" value="Alle Abschicken" class="Buttons">
</form>
und
$sql = "UPDATE adding ( title , content) WHERE ID = '".$_POST['foo']."'
VALUES ('".$_POST['title']."', '".$_POST['content']."')";
auch wenn das ergebnis bis jetzt das selbe ist