Zur Navigation

Id auslesen [3]

21 Jörg Kruse

OK, wenn du bei "Auswahl anzeigen" schon die Änderungen duchführst, benötigst du auf der Folgeseite kein zweites Änderungs-Formular, dann kannst du dort gleich updaten.

Die Daten müssen aber auc hhier jeweils in einem Array übertragen werden, mit der Kunden-ID als Key, damit diese im Folge-Script der ID zugeordnet werden können. Außerdem sollte die Schleife erst nach der Ausgabe geschlossen werden.

$abfrage_kunden1 = mysql_query("SELECT * FROM Bestand WHERE kunde = '$auswahl' AND status = 'neu' ORDER BY datum ASC");
while($row_kunden1 = mysql_fetch_array($abfrage_kunden1))
{
   $kunden_id = $row_kunden1['id'];
   $kunden_kunde[$kunden_id] = $row_kunden1['kunde'];
   $kunden_bestand[$kunden_id] = $row_kunden1['bestand'];

?>
<tr>
<td><input name="ids[]" type="checkbox" value="<?php echo $kunden_id ; ?>" class="eingabe4" /></td>
<td><input name="daten[<?php echo $kunden_id ?>]" type="text" value="<?php echo $kunden_datum[$kunden_id] ; ?>" class="eingabe1" /></td>
<td><input name="mitarbeiter[<?php echo $kunden_id ?>]" type="text" value="<?php echo $kunden_bearbeiter[$kunden_id] ; ?>" class="eingabe2" /></td>
</tr>
<?php
}

Im Folgescript kannst du dann die Daten in einer Schleife updaten. Ich würde es dann in etwa so probieren:

$ids = $_POST['ids'];
$daten = $_POST['daten'];
$bearbeiter = $_POST['mitarbeiter'];
foreach ($ids as $id) {
$kunden_id = $id;
$kunden_datum = $daten[$id];
$kunden_bearbeiter = $bearbeiter[$id];
/* UPDATE-Abfrage */
}

Ist jetzt aber quick & dirty und alles ungetestet - musst du mal austesten, inwiefern dies so funktioniern kann :)

02.11.2007 10:57 | geändert: 02.11.2007 11:04

22 Frank

Wenn ich nun den Folgeschritt auf eine weitere anderen Seite durchführen möchte müsste ich dann was tun?

02.11.2007 11:27

23 Jörg Kruse

Was meinst du mit Folgeschritt?

02.11.2007 11:36 | geändert: 02.11.2007 11:36

24 Frank

Ähh Folgescript! ;-) Also die Schleife und das Update auf einer Folgeseite. Wie würde der Code dafür aussehen?

02.11.2007 12:28

25 Jörg Kruse

Die UPDATE-Abfrage würde in etwa so ausschaun:

$ids = $_POST['ids'];
$daten = $_POST['daten'];
$bearbeiter = $_POST['mitarbeiter'];
foreach ($ids as $id) {
    $kunden_id = (int)$id;
    $kunden_datum = mysql_real_escape_string($daten[$id]);
    $kunden_bearbeiter = mysql_real_escape_string($bearbeiter[$id]);
    mysql_query("UPDATE Bestand SET kundendatum = '$kunden_datum', kunden_bearbeiter = '$kunden_bearbeiter' WHERE kunden_id = $kunden_id");
}

... wie gesagt: ungetestet - und ich habe auch nicht im einzelnen auf die Variablennamen geachtet - aber so in etwa würde ich versuchen, vorzugehen

02.11.2007 12:45 | geändert: 02.11.2007 12:46

26 Frank

Hmmm, nur die Inhalte werden nicht übergeben. Habe mir ein Echo eingebaut um zu testen. Eine Ahnung was falsch sein könnte?

Id wird richtig übergeben Inhalte fehlen jedoch!

02.11.2007 14:04 | geändert: 02.11.2007 14:09

27 Jörg Kruse

Welche Variablen hast du dir mit echo ausgeben lassen?

$ids, $daten und $bearbeiter sind Arrrays, deren Inhalt mit print_r() ausgegeben werden kann; was zeigt das z.B. an?

print_r($daten);

02.11.2007 14:40

28 Frank

elseif ($action == "speichern")
{

$ids = $_POST['ids'];
$datum = $_POST['datum[ids]'];
$mitarbeiter = $_POST['mitarbeiter'];

foreach ($ids as $id) {

   $kunden_id = (int)$id;
   $kunden_datum = mysql_real_escape_string($datum[$id]);
   $kunden_bearbeiter = mysql_real_escape_string($mitarbeiter[$id]);


echo "ID: $kunden_id - Mitarbeiter : $kunden_bearbeiter - Datum: $kunden_datum <br>";
}
}

02.11.2007 14:47

29 Jörg Kruse

Und wie schauen die entsprechenden input-Felder auf der Formularseite aus? Sollte dann wohl ungefähr so ausschauen:

<td><input name="ids[]" type="checkbox" value="<?php echo $kunden_id ; ?>" class="eingabe4" /></td>
<td><input name="datum[<?php echo $kunden_id ?>]" type="text" value="<?php echo $kunden_datum[$kunden_id] ; ?>" class="eingabe1" /></td>

Und was wird auf der Update-Seite ausgegeben, wenn du dies einfügst:

$mitarbeiter = $_POST['mitarbeiter'];
print_r($mitarbeiter);

02.11.2007 15:04

30 Frank

Da war der Fehler
<input name="datum[<?php echo $kunden_id ?>]"

Danke, ich hoffe das ich den Rest nun hinbekomme! ;-)

02.11.2007 15:16