[GastForen Programmierung/Entwicklung PHP und MySQL mehrere Datensätze in einem Formular aktualisieren

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

mehrere Datensätze in einem Formular aktualisieren

Phips_CH
Beiträge gesamt: 74

9. Apr 2011, 14:06
Beitrag # 1 von 28
Bewertung:
(14171 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ich möchte ein Formular erstellen wo ich alle Datensätze aus einer mySQL Tabelle aktualisieren kann wo der Wert einer bestimmten Spalte mit dem URL-Parameter übereinstimmt.

für den einzelnen Datensatz ist es ohne funktioniert es.
nur kann ich den Bereich nich so Wiederholen, so wie ich es mir vorstelle.

ist es überhaupt möglich, mehrere Datensätze in einem Formular zu ändern?

Gruss
Phips_CH
X

mehrere Datensätze in einem Formular aktualisieren

crisies
  
Beiträge gesamt: 138

30. Apr 2011, 18:41
Beitrag # 2 von 28
Beitrag ID: #470284
Bewertung:
(14035 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi phips,

doch es müsste eigentlich gehen. entweder werden die post-felder als array übergeben feldname[] oder es wir pro feldgruppe einen index angehängt feldname_1. dann braucht es pro Datensatz natürlich noch eine ID, damit auch die richtigen Daten upgedatet werden.

gruss
chris.w


als Antwort auf: [#468815]

mehrere Datensätze in einem Formular aktualisieren

Phips_CH
Beiträge gesamt: 74

1. Mai 2011, 13:10
Beitrag # 3 von 28
Beitrag ID: #470310
Bewertung:
(14008 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo chris.w
besten Dank schonmal.
Jeder Datensatz besitztschon eine eindeutige ID.

Was würdest Du mir empfehlen?
ich hab von beiden Möglichkeiten (noch) keine Ahnung.

Gruss
Phips_CH


als Antwort auf: [#470284]

mehrere Datensätze in einem Formular aktualisieren

crisies
  
Beiträge gesamt: 138

2. Mai 2011, 18:24
Beitrag # 4 von 28
Beitrag ID: #470421
Bewertung:
(13976 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi phips,

1. verbinde dich mit der Datebank und mache einen loop über das Resultset. Beispiele dazu findest Du hier: http://www.php.net/mysql_query

2. Innerhalb dieses Loops, generierst Du die Formularfelder als Arrays, inkl. ID-Feld. Ungefähr so...

Code
<input type="hidden" name="id[]" value="$row['id_db']" /><input type="text" name="testfeld[]" value="$row['testfeld_db']" /> 


3. Auf der Seite wo Du die Formulardaten verarbeitest, machst Du einen Loop über das ID-Feld und updatest die dazugehörenden Felder/Daten in der Datenbank, mit den Daten aus den Formularfeldern desselben Index:

Code
foreach($_POST['id'] as $index => $value){ 
mysql_query("UPDATE db_name SET testfeld_db = '".mysql_real_escape_string($_POST['testfeld'][$index])."' WHERE id='".mysql_real_escape_string($value)."'")
}


Das sind alles Beispiele, welche natürlich noch ausprogrammiert werden müssten.

gruss
chris.w.


als Antwort auf: [#470310]

mehrere Datensätze in einem Formular aktualisieren

Phips_CH
Beiträge gesamt: 74

4. Mai 2011, 06:50
Beitrag # 5 von 28
Beitrag ID: #470527
Bewertung:
(13931 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Die Verbindung zur DB steht.

Ich möchte aber die Optionsschaltergruppe aktualisieren.
Geht das auch mit eine Array?

Dann werde ich mich mal mit Array befassen. :-)


als Antwort auf: [#470421]

mehrere Datensätze in einem Formular aktualisieren

crisies
  
Beiträge gesamt: 138

4. Mai 2011, 16:46
Beitrag # 6 von 28
Beitrag ID: #470635
Bewertung:
(13909 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi phips

ich weiss zwar nicht was du mit optionsschaltergruppen meinst, aber grundsätzlich können eigentlich alle felder als arrays übergeben werden. so zb. auch radiobuttons etc. Das problem dort, sofern alle gleich heissen, könnte aus der gesamten Gruppe nur ein Eintrag ausgewählt werden. Ich würde als einen Loop über die Datensätze machen. Dort drinn die jeweilige DB-DatensatzID zu jedem Formfeldnamen hinzufügen (name="feldeins_123") - damit sind diese unique - und ein hidden Feld als array mitgeben, in welchem alle ID's mitgeführt werden (type="hidden" name="ids[]" value="123"). Dieses Feld wird dann in der Bearbeitungsseite für den Loop gebraucht.

Code
foreach($_POST['ids'] as $value){  
mysql_query("UPDATE db_name SET feldeins_db = '".mysql_real_escape_string($_POST['feldeins_'.$value])."' WHERE id='".mysql_real_escape_string($value)."'")
}


gruss
chris.w.


als Antwort auf: [#470527]

mehrere Datensätze in einem Formular aktualisieren

Phips_CH
Beiträge gesamt: 74

4. Mai 2011, 17:18
Beitrag # 7 von 28
Beitrag ID: #470641
Bewertung:
(13904 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Genau Radiobuttons meinte ich.
Ein Datensatz besteht aus einer ID und zwei Spalten Mitgliedernummer und Terminnummer welche als Fremdschlüssel dienen.
Eine weitere Spalte dient als Status wo ich mit drei Radiobuttons entweder 1, 2 oder 3 reinschreiben möchte (Button1 -> Wert 1, Button2 -> Wert 2 und Button3 -> Wert 3). Und das bei allen Datensätze wo der Spalte mit der Terminummer mit einem Abfrage übereinstimmt.


als Antwort auf: [#470635]

mehrere Datensätze in einem Formular aktualisieren

crisies
  
Beiträge gesamt: 138

4. Mai 2011, 17:33
Beitrag # 8 von 28
Beitrag ID: #470642
Bewertung:
(13900 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ok das heisst du möchtest eigentlich ein formular erstellen über das du alle einträge dieser datenbank mit dem status updaten kannst und zwar jeweils für alle mit derselben terminnummer?

Wenn dem so ist, mache einen select über die Terminnummer-Tabelle, danach einen loop über dieses recordset und erstelle pro eintrag ein hidden feld für die terminnummer als array (dieses dient als id), sowie diese radiobuttons, mit dem durch die terminnummer ergäntzen feldnamen. in der bearbeitenden seiten, loopst du über das terminnummern array post feld und updatest alle einträge mit dieser nummer durch den übergebenen status aus dem entsprechenden radiobutton.

gruss
chris.w.


als Antwort auf: [#470641]

mehrere Datensätze in einem Formular aktualisieren

Phips_CH
Beiträge gesamt: 74

7. Mai 2011, 08:05
Beitrag # 9 von 28
Beitrag ID: #470856
Bewertung:
(13816 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
kurze Frage

Es funktioniert, Arrays anzulegen und mit echo auszugeben. Langsam versteh ich auch die Funktion und Vorteile von diesem Ding.

Aber was muss ich machen damit ich den Wert aus meiner DB im Array habe?
Das will bei mir noch nicht klapen.

Gruss
Phips_CH


als Antwort auf: [#470642]

mehrere Datensätze in einem Formular aktualisieren

Phips_CH
Beiträge gesamt: 74

9. Mai 2011, 07:12
Beitrag # 10 von 28
Beitrag ID: #470913
Bewertung:
(13756 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
durch rumprobieren hab ich es geschafft den ersten Datensatz in der Tabelle der Datenbank in das Array zu schreiben.

schreib ich dann in die Eckigen Klammern des Arrays die Datensatz ID?

Denn ich möchte ja am schluss alle Datensätze aus der Abfrage im Formular sehen. und jedem einen eigenen Status zuweisen.

Gruss
Phips_CH


als Antwort auf: [#470856]

mehrere Datensätze in einem Formular aktualisieren

crisies
  
Beiträge gesamt: 138

9. Mai 2011, 18:33
Beitrag # 11 von 28
Beitrag ID: #471003
Bewertung:
(13713 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi phips,

Entweder schreibst du die ID in die eckigen Klammern, damit kannst Du diese dann über den foreach als index wieder auslesen. oder Du machst für die ID ein eigenes Array-FormularFeld.

Ich würde es folgendermassen machen:

Code
<form action=""> 
<?php
// Datensätze aus der DB lesen
$result = mysql_query('SELECT * FROM ...');
// Durch loopen und erstellen der Formularfelder
while($row = mysql_fetch_array($result)){
echo '<input type="hidden" name="id[]" value="'.$row['id'].'" />';
echo '<input type="radio" name="status_'.$row['id'].'" value="1" />';
echo '<input type="radio" name="status_'.$row['id'].'" value="2" />';
echo '<input type="radio" name="status_'.$row['id'].'" value="3" />';
}
?>
<input type="submit" />
</form>


Dann nachdem das Formular versendet wurde werden die Werte in die Datenbank zurück geschrieben:

Code
<?php 
foreach($_POST['id'] as $id){
mysql_query('UPDATE SET status = '.$_POST['status_'.$id].' WHERE id = '.$id);
}
?>


mfg
chris.w.


als Antwort auf: [#470913]

mehrere Datensätze in einem Formular aktualisieren

Phips_CH
Beiträge gesamt: 74

10. Mai 2011, 14:21
Beitrag # 12 von 28
Beitrag ID: #471070
Bewertung:
(13673 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo chris.w.

ich hab jetzt alle id durch die ID des Datensatzes ersetzt und auch die Tabebbelnnamen so eingefügt wie sie in der DB benannt sind.

aber die Verbindung zur Datenbank funktioniert nur bedinngt. ich lese die ID der Datensätze in ein Texfeld aus. (Als Kontrolle) Das funktioniert auch nur die Radiobuttons liest er nicht aus. Ich hab schon alles mögliche versucht.

Ich kann den Fehler einfach nicht finden.

Code
<form action="">  
<?php // Datensätze aus der DB lesen
$result = mysql_query ('SELECT * FROM pobi_adrterm WHERE adte_IDter = 67');
// Durch loopen und erstellen der Formularfelder
while($row = mysql_fetch_array($result))
{
echo '<input type="text" name="id[]" value="'.$row[adte_ID].'" />';
echo '<input type="radio" name="adte_status'.$row[adte_ID].'" value="1" />';
echo '<input type="radio" name="adte_status'.$row[adte_ID].'" value="2" />';
echo '<input type="radio" name="adte_status'.$row[adte_ID].'" value="3" />';
}
?>
<input type="submit" />

</form>


<?php
foreach($_POST['adte_ID'] as $id)
{
mysql_query('UPDATE pobi_adrterm SET adte_status = '.$_POST['adte_ID'.$id].' WHERE adte_ID = '.$id);
}
?>


pobi_adterm => heisst bei mir die Tabelle
adte_ID => ist die Spalte mit der Datensatz ID
adte_terID => ein Fremdschlüssel
adte_status => währe der Status den ich mit den Radiobuttons aktualisieren möchte.

Gruss
Phips_CH


als Antwort auf: [#471003]

mehrere Datensätze in einem Formular aktualisieren

crisies
  
Beiträge gesamt: 138

10. Mai 2011, 18:00
Beitrag # 13 von 28
Beitrag ID: #471114
Bewertung:
(13655 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi phips,

ich denke das feld 'adte_ID' gibt es ja gar nicht ;) versuche es mal so:

Code
form action="">   
<?php // Datensätze aus der DB lesen
$result = mysql_query ('SELECT * FROM pobi_adrterm WHERE adte_IDter = 67');
// Durch loopen und erstellen der Formularfelder
while($row = mysql_fetch_array($result))
{
echo '<input type="text" name="id[]" value="'.$row[adte_ID].'" />';
echo '<input type="radio" name="adte_status'.$row[adte_ID].'" value="1" />';
echo '<input type="radio" name="adte_status'.$row[adte_ID].'" value="2" />';
echo '<input type="radio" name="adte_status'.$row[adte_ID].'" value="3" />';
}
?>
<input type="submit" />

</form>


<?php
foreach($_POST['id'] as $id)
{
mysql_query('UPDATE pobi_adrterm SET adte_status = '.$_POST['adte_status'.$id].' WHERE adte_ID = '.$id);
}
?>


gruss
chris.w.


als Antwort auf: [#471070]

mehrere Datensätze in einem Formular aktualisieren

Phips_CH
Beiträge gesamt: 74

11. Mai 2011, 17:26
Beitrag # 14 von 28
Beitrag ID: #471213
Bewertung:
(13608 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi chris.w.

Leider war dies nicht der Fehler. Mal nicht der Fehler der den Code am laufen hindert.

Aufällig ist, das nach dem Absenden eines Versuchs, in der URL "&id%5B%5D" steht und dahinter jeweils das ID der Datensätze die auch in den Textfeldern Angezeigt werden.

Wenn ih aktualisieren möcht, zeigt er mir manchmal nur den Submit Button und sonst gar nichts.

Hast du noch eine Idee? ;-)


als Antwort auf: [#471114]

mehrere Datensätze in einem Formular aktualisieren

crisies
  
Beiträge gesamt: 138

11. Mai 2011, 17:32
Beitrag # 15 von 28
Beitrag ID: #471214
Bewertung:
(13603 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi phips,

Code
<form method="post"> 


damit sollte das formular via post und nicht get versendet werden.

gruss
chris.w.


als Antwort auf: [#471213]
X