mehrere Ausgaben eines Arrays davon soll eine Ausgabe per Checkbox markiert und geändert werden. Bloß wie?
Mit Checkboxen habe ich schon gearbeitet, aber in diesem Fall komme ich mit meinem Wissen nicht weiter.
Hallo Forum,
schön das es Euch gibt. Ihr habt mir bisher immer weiter helfen können. Auch im aktuellen Fall fehlt mir mal wieder der letzte Schubs in die richtige Richtung.
Ich habe ein Formular, aus dem ein User Daten abrufen kann. Diese Daten stehen schön in einem Array und werden auch über eine Schleife ausgegeben. So kann es sein, daß dort 1 Datensatz oder auch ganz viele Datensätze ausgegeben werden.
Der Admin soll diese Daten überprüfen und wenn nötig ändern. Die Auswahl der Datensätze, die geändert werden sollen, will ich durch Checkboxen markieren. Beim Absenden der Checkbox soll nur der gewählte Datensatz in einer neuen Tabelle angezeigt und geändert werden. Hier mal der relevante Teil des Scripts:
Ich habe ja nur eine Tabelle, die durch die Schleife mehrfach ausgegeben werden kann. Ich kann also nur einen Radiobutton definieren. Er trägt für jeden Datensatz den gleichen Namen ind das gleiche value.
Wie erreiche ich es also, daß nur der markierte Datensatz des Arrays weitergegeben wird in die neue Tabelle.
Jede Idee hilft.
Schöne Grüße
Christof
Hallo Forum,
schön das es Euch gibt. Ihr habt mir bisher immer weiter helfen können. Auch im aktuellen Fall fehlt mir mal wieder der letzte Schubs in die richtige Richtung.
Ich habe ein Formular, aus dem ein User Daten abrufen kann. Diese Daten stehen schön in einem Array und werden auch über eine Schleife ausgegeben. So kann es sein, daß dort 1 Datensatz oder auch ganz viele Datensätze ausgegeben werden.
Der Admin soll diese Daten überprüfen und wenn nötig ändern. Die Auswahl der Datensätze, die geändert werden sollen, will ich durch Checkboxen markieren. Beim Absenden der Checkbox soll nur der gewählte Datensatz in einer neuen Tabelle angezeigt und geändert werden. Hier mal der relevante Teil des Scripts:
while ($row1 = mysql_fetch_assoc($result1)) {
//echo "<pre>";
//print_r($row1);
//echo "</pre>";
if (@$_POST["nachname"] == @$row1["name"]){
if (!isset($_POST['daten'])) {
?>
<form action="aendern.php" method="post" name="Formular" onSubmit="return chkFormular()">
<table border="1" >
<tr>
<td width="120"><font size="-1">Datum </font></td>
<td width="180"><font size="-1">Name</font></td>
<td width="100"><font size="-1">Stunden</font></td>
<td><input type="radio" name="daten" value="id"></td></form>
</tr>
<tr>
<td width="120" bgcolor="#FFFFFF" name="datum"><font size="-1"><b><? echo $row1["datum"]; ?></b></font></td>
<td width="180" bgcolor="#FFFFFF" name="name"><font size="-1"><b><? echo $row1["name"]; ?></b></font></td>
<td width="100" bgcolor="#FFFFFF" name="zeit"><font size="-1"><b><? echo $row1["zeit"]; ?></b></font></td>
<td><input type="submit" value="ändern"></td>
</tr>
<tr>
<td width="250"><font size="-1">Projekt</font></td>
<td width="250"><font size="-1">Auftrag</font></td>
<td width="250"><font size="-1">Einsatz</font></td>
<td width="60"><font size="-1">Tätigkeit</font></td>
</tr>
<tr>
<td width="250" bgcolor="#FFFFFF" name="projekt"><font size="-1"><b><? echo $row1["projekt"]; ?></b></font></td>
<td width="250" bgcolor="#FFFFFF" name="auftrag"><font size="-1"><b><? echo $row1["auftrag"]; ?></b></font></td>
<td width="250" bgcolor="#FFFFFF" name="einsatz"><font size="-1"><b><? echo $row1["einsatz"]; ?></b></font></td>
<td width="60" bgcolor="#FFFFFF" name="tat"><font size="-1"><b><? echo $row1["taetigkeit"]; ?></b></font></td>
</tr>
<tr height="8">
<td height="8" bgcolor="#999999"></td>
<td height="8" bgcolor="#999999"></td>
<td height="8" bgcolor="#999999"></td>
<td height="8" bgcolor="#999999"></td>
</tr>
</table>
<?
}
else{
.......
Ich habe ja nur eine Tabelle, die durch die Schleife mehrfach ausgegeben werden kann. Ich kann also nur einen Radiobutton definieren. Er trägt für jeden Datensatz den gleichen Namen ind das gleiche value.
Wie erreiche ich es also, daß nur der markierte Datensatz des Arrays weitergegeben wird in die neue Tabelle.
Jede Idee hilft.
Schöne Grüße
Christof
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 120204
Url: https://administrator.de/contentid/120204
Ausgedruckt am: 22.11.2024 um 05:11 Uhr
10 Kommentare
Neuester Kommentar
Moin.
Bei den Inputs machst Du einfach folgendes:
<input type="checkbox" name="DSbeachten" value="<?php echo $row1["idfeld"]; ?>" />
Damit baust Du dir ein ID-Array mit den ID's der Datensätze, die bearbeitet werden sollen.
In dem nächsten Formular läufst Du das Array DSbeachten durch und kannst die Datensätze daduch zur Änderung anbieten.
in_array() wird Dir da wahrscheinlich weiterhelfen.
HTH.
MK
Bei den Inputs machst Du einfach folgendes:
<input type="checkbox" name="DSbeachten" value="<?php echo $row1["idfeld"]; ?>" />
Damit baust Du dir ein ID-Array mit den ID's der Datensätze, die bearbeitet werden sollen.
In dem nächsten Formular läufst Du das Array DSbeachten durch und kannst die Datensätze daduch zur Änderung anbieten.
in_array() wird Dir da wahrscheinlich weiterhelfen.
HTH.
MK
Hallo,
einem Radiobutton ein array zu geben macht recht wenig sinn!
Da bei mehreren Radiobuttons ja nur einer ausgewählt werden kann.
Jetzt mal eine Frage fürs Verständnis:
Willst du jetzt das bei der Anzeige der gesamtdaten es nur möglich ist einen Datensatz zum Bearbeiten auszuwählen oder das mehrere bearbeitet werden können?
einem Radiobutton ein array zu geben macht recht wenig sinn!
Da bei mehreren Radiobuttons ja nur einer ausgewählt werden kann.
Jetzt mal eine Frage fürs Verständnis:
Willst du jetzt das bei der Anzeige der gesamtdaten es nur möglich ist einen Datensatz zum Bearbeiten auszuwählen oder das mehrere bearbeitet werden können?
Hi Christof,
jetzt kannst du Datensätze, die zum Ändern markiert sind, in einem zweiten Formular
ausgeben. Aber diese werden, wie im ersten Formular, doch erstmal nur angezeigt.
Du könntest doch in einem Formular die Abfrageergebnisse einer DB direkt in Text-
bzw. Inputfelder ausgeben.
Die Input-Felder werden als Array deklariert, Index ist die jeweilige
Datensatz-ID. Am Ende wird, ebenfalls als Array, eine Checkbox angehangen,
Dem Value der Checkbox wird ebenfalls die Datensatz-ID übergeben.
Am Ende des Formulars noch ein Submit-Button, und alle markierten Datensätze
werden nach Absenden geändert.
Erstmal das Formular:
Die Verarbeitung des Formulars:
Gruß
Günni
jetzt kannst du Datensätze, die zum Ändern markiert sind, in einem zweiten Formular
ausgeben. Aber diese werden, wie im ersten Formular, doch erstmal nur angezeigt.
Du könntest doch in einem Formular die Abfrageergebnisse einer DB direkt in Text-
bzw. Inputfelder ausgeben.
Die Input-Felder werden als Array deklariert, Index ist die jeweilige
Datensatz-ID. Am Ende wird, ebenfalls als Array, eine Checkbox angehangen,
Dem Value der Checkbox wird ebenfalls die Datensatz-ID übergeben.
Am Ende des Formulars noch ein Submit-Button, und alle markierten Datensätze
werden nach Absenden geändert.
Erstmal das Formular:
<form action="<?echo $_SERVER[PHP_SELF];?>" method="post">
<table border="1">
<?php
$query="select . . . u.s.w.";
$result=mysql_query($query);
while($row=mysql_fetch_array($result,MYSQL_ASSOC)){
?>
<tr>
<td><input type="text" name="vorname[<?echo $row[id];?>]" value="<?echo $row[Vorname];?>" /></td>
<td><input type="text" name="nachname[<?echo $row[id];?>]" value="<?echo $row[Nachname];?>" /></td>
... usw., je nach Anzahl Felder
<td><input type="checkbox" name="edit" value="<?echo $row[id];?>" /></td>
</tr>
<?
}
?>
<tr>
<td colspan="Anzahl_Spalten"><input type="submit" value="Edit" name="cmd" /></td>
</tr>
</table>
</form>
Die Verarbeitung des Formulars:
<?php
//Prüfen, ob das Formular gesendet wurde.
if(isset($_POST['cmd'])){
//Prüfen, ob wenigstens eine Checkbox markiert war, denn nur die werden gesendet.
if(isset($_POST['edit'])){
//Wenn dem so ist, werden die gesendeten Daten in Variablen abgelegt.
//Ich persönlich finde, dann ist die Sache leichter zu handeln.
$vornamen=$_POST['vorname'];
$nachnamen=$_POST['nachname'];
//In der foreach-Schleife werden nun die einzelnen Value's(die Datensatz-ID's) aus dem
//Array der Checkbox in die Variable id abgelegt.
//Mit dieser Variablen kann ich nun die Array-Elemente der übertragenen Input-Felder
//ansprechen und verarbeiten.
foreach($_POST['edit'] as $id){
$query="update tabelle";
$query.=" set vorname='$vornamen[$id]',nachname='$nachnamen[$id]'";
$query.=" where id=$id";
$result=mysql_query($query) or die(mysql_error());
}
}
}
?>
Gruß
Günni