input Feld aus while Schleife wird nicht übergeben
Marc Schumann
- php
Hallo Allerseits:
Wahrscheinlich liegt's mal wieder nur an einer Kleinigkeit:
Ich habe in untenstehendem Formular mehrere input Felder.
Manche davon sind statisch im HTML und funktionieren, die anderen stehen innerhalb einer PHP While Schleife. Diese werden einfach ignoriert.
Ich benötige Sie aber , um dann die später die angezeigten Spalten der erzeugten Liste löschen zu können.
Das Script selbst liest einfach aus einer Datenbank Werte,mit PEAR DB
und gibt Sie in einer Liste aus.
Vielleicht hat jemand einen Tipp, oder einen Hinweis, wo ich nachlesen kann.
Gruß Marc Schumann
<?
include_once ('header.php');
?>
</head>
<body>
<?
include_once ('db_login.php');
?>
<h3>Konten auswählen und löschen</h3>
<?
// Kategorie löschen - Eingabebereich
// Werte aus $REQUEST extrahieren
$Cat_Row = $_REQUEST['select'];
$Cat_delete = $_REQUEST['delete'];
echo "$Cat_row $Cat_delete";
/* Kommt später noch
Code zum Löschen
*/
// Kategorien ausgeben
// Alle Datensätze einlesen
$sql = "select * from Konten";
$result=$db->query($sql);
?>
<form method="POST" action="KontenLoeschen.php">
<table>
<tr> <th bgcolor="#EEEEE">Konto ID</th>
<th bgcolor="#EEEEE">Kontobezeichnung</th>
<th bgcolor="#EEEEE">Vorzeichen</th>
<th bgcolor="#EEEEE">Auswahl</th>
</tr>
<?
// Ausgabe aller Datensätze der Datenbank und der Zeile zum Markieren
while ($row = $result->fetchRow()){
echo "<tr><td>$row[0]</td><td>$row[1]</td><td>$row[2]</td><td><input type='checkbox' name='select' value='$row[0]' /></td></tr>";
}
?>
</table>
<input type="hidden" name="delete" value="1" />
<input type="submit" name="submit" value="Ausgewählte Konten Löschen" />
</form>
<?
include ('footer.php');
?>
Halihallo Marc
Ich habe in untenstehendem Formular mehrere input Felder.
Manche davon sind statisch im HTML und funktionieren, die anderen stehen innerhalb einer PHP While Schleife. Diese werden einfach ignoriert.
Was heisst ignoriert?
while ($row = $result->fetchRow()){
echo "<tr><td>$row[0]</td><td>$row[1]</td><td>$row[2]</td><td><input type='checkbox' name='select' value='$row[0]' /></td></tr>";
}
Dir ist bewusst, dass du für _jeden_ Datensatz eine checkbox
ausgibst, die jeweils _immer_ denselben Namen hat und somit für den
Client (Browser) keine Möglichkeit besteht, die einzelnen checkboxen
voneinander zu unterscheiden und somit auch nur den Wert irgendeiner
checkbox an das Script sendet?
Falls du für jede checkbox einen Wert erhalten möchtest, musst du
ihnen unterschiedliche Namen geben. Also sowas wie:
<input type="checkbox" name="select$row['id']" value="$row['wert']" />
Viele Grüsse
Philipp
Was heisst ignoriert?
while ($row = $result->fetchRow()){
echo "<tr><td>$row[0]</td><td>$row[1]</td><td>$row[2]</td><td><input type='checkbox' name='select' value='$row[0]' /></td></tr>";
}Dir ist bewusst, dass du für _jeden_ Datensatz eine checkbox
ausgibst, die jeweils _immer_ denselben Namen hat und somit für den
Client (Browser) keine Möglichkeit besteht, die einzelnen checkboxen
voneinander zu unterscheiden und somit auch nur den Wert irgendeiner
checkbox an das Script sendet?Falls du für jede checkbox einen Wert erhalten möchtest, musst du
ihnen unterschiedliche Namen geben. Also sowas wie:<input type="checkbox" name="select$row['id']" value="$row['wert']" />
Viele Grüsse
Philipp
Danke für Die Antwort,
mir ist schon bewusst, das immer derselbe Name verwendet wird, laut meinem Wissenstand sollte dann bei gleichen Namen aber ein Array übergeben werden.
Ich Probiers auf jeden Fall mal mit deiner Methode,
trotzdem, wird noch nicht einmal EIN Wert übergeben.
Im übrigen auch dann nicht, wenn ich Wert und Name statisch mit einem Wert belege, und das Ergebnis des Querys nur Ein Datensatz ist, d.h. definitiv das Input Feld nur einmal erzeugt wird
???????????????
Halihallo Marc
mir ist schon bewusst, das immer derselbe Name verwendet wird, laut meinem Wissenstand sollte dann bei gleichen Namen aber ein Array übergeben werden.
Ein Array nicht, er sendet für jede Checkbox einfach ein name=value
Paar. Du hast aber recht, mehrere checkboxen mit gleichem Namen sind
möglich.
trotzdem, wird noch nicht einmal EIN Wert übergeben.
Das glaube ich hingegen nicht. Entweder du siehst falsch nach, oder
du hast schlicht keine Checkbox ausgewählt, denn dann wird
bekanntlich auch nichts gesendet; oder aber deine checkbox enthält
keinen eigentlichen Wert als value und du interpretierst dies als
nicht gesendet, was aber falsch ist.
Im übrigen auch dann nicht, wenn ich Wert und Name statisch mit einem Wert belege, und das Ergebnis des Querys nur Ein Datensatz ist, d.h. definitiv das Input Feld nur einmal erzeugt wird
Wichtig ist einzig und allen, was der Client sieht. Sieh doch im
generierten Quelltext nach und suche dort nach einem Fehler.
Viele Grüsse
Philipp
Sieh doch im
generierten Quelltext nach und suche dort nach einem Fehler.
Bitte kurz noch : Wie nachsehen ? Wie kann ich alle übergebenen Schlüssl / Wert Paare sichtbar machen ???
Danke
Marc Schumann
Halihallo Marc
Bitte kurz noch : Wie nachsehen ? Wie kann ich alle übergebenen Schlüssl / Wert Paare sichtbar machen ???
PHP leistet hier IMHO ein ziemliches unding:
Falls ein und derselbe Name mehrere Werte enthält, musst du dem
Namen ein [] anfügen, sodass PHP es in ein Array umwandelt. Dieses
kannst du dann über $_POST['name'] verwenden. Falls du [] als
Namensextension auslässt, macht PHP einen Skalaren daraus und kann
somit nur ein Wert speichern.
<input type="checkbox" name="select[]" value="$row[0]" />
und in PHP dann:
echo var_dump($_POST['select']);
Viele Grüsse
Philipp
Halihallo Marc
PHP leistet hier IMHO ein ziemliches unding:
Stimmt, aber es geht !!!
Danke! ( Hat mich ganze 2 Tage gekostst das Problem )
Marc Schumann