Marc Schumann: input Feld aus while Schleife wird nicht übergeben

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');
?>

  1. 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

    --
    If a project is completed on schedule, it wasn't debugged properly.
    1. 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

      ???????????????

      1. 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

        --
        If a project is completed on schedule, it wasn't debugged properly.
        1. 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

          1. 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

            --
            If a project is completed on schedule, it wasn't debugged properly.
            1. Halihallo Marc

              PHP leistet hier IMHO ein ziemliches unding:

              Stimmt, aber es geht !!!

              Danke! ( Hat mich ganze 2 Tage gekostst das Problem )

              Marc Schumann