Ole: Problem mit Formulardatenübergabe

Hallo Leute,

Ich möchte Daten von einem Formular mittels post an die nächste Seite übergeben. Es sind dynamisch erzeugte checkboxen, jede hat einen anderen Namen mit dem gesetzten Wert eins. Hierzu habe ich folgendes Skript (auszugsweise):

$result=MYSQL_QUERY( "SELECT * FROM $tabelle");
$num = mysql_num_rows($result);
for ($q=0; $q<$num; $q++)
{
$id_kern_niederlassung = mysql_result($result, $q, "id_kern_niederlassung");
$bezeichnung = mysql_result($result, $q, "bezeichnung");

echo "<tr>";
echo "<td><input name='$id_kern_niederlassung-nl' type='checkbox' id='$id_kern_niederlassung-nl' value='1'></td>";
echo "<td>$bezeichnung</td>";
echo "</tr>";
}

Das Skript, welche die Daten empfängt, sieht folgendermaßen aus (ebenfalls auszugsweise):

$result=MYSQL_QUERY( "SELECT * FROM $tabelle");
$num = mysql_num_rows($result);
for ($q=0; $q<$num; $q++)
{

$id_kern_niederlassung = mysql_result($result, $q, "id_kern_niederlassung");

$id_kern_niederlassung-nl = $_POST['$id_kern_niederlassung-nl'];
echo "$id_kern_niederlassung-nl";
echo "<br>";
}

Das Problem ist, es kommen keine Daten an, auch wenn ich eine checkbox markiere. Kann mir jemand weiterhelfen?

Viele Grüße

Martin

  1. Lieber Martin,

    bitte erkläre einem Dummen, was der Unterschied zwischen "$id_kern_niederlassung-nl" und "$id_kern_niederlassung" ist!

    Aus deinen Scripten lese ich, dass du aus einer Datenbank Informationen abrufst, diese (variablen) Inhalte dann auch als Benennung der zu übermittelnden $_POST-Werte verwendest. - Naja, also spätestens da hätte ich im Web-Formular einen festen Wert für

    name="$id_kern_niederlassung-nl"

    gewählt. Z.B.:

    echo '<td><input name="niederlassung" type="hidden" value="'.$id_kern_niederlassung-nl.'"><input name="haekchen" type="checkbox">';

    Ausserdem musst du wissen, wie der Wert einer Checkbox ausgelesen wird ("checked" oder "unchecked")!

    Damit würden dann folgende $_POST-Werte ankommen:
    $_POST['niederlassung'] (ist das, was in $id_kern_niederlassung-nl bzw. $id_kern_niederlassung war)
    $_POST['haekchen'] (hat den Wert "checked" oder "unchecked")

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. Lieber Martin,

      bitte erkläre einem Dummen, was der Unterschied zwischen "$id_kern_niederlassung-nl" und "$id_kern_niederlassung" ist!

      $id_kern_niederlassung ist die id des Datensatzes $id_kern_niederlassung-nl ist ein eindeutiger namen für die Niederlassung. $id_kern_niederlassung kann ich da nicht nehmen weil dies an andere Stelle des Skripts zu Problemen führt.

      Aus deinen Scripten lese ich, dass du aus einer Datenbank Informationen abrufst, diese (variablen) Inhalte dann auch als Benennung der zu übermittelnden $_POST-Werte verwendest. - Naja, also spätestens da hätte ich im Web-Formular einen festen Wert für

      name="$id_kern_niederlassung-nl"
      gewählt. Z.B.:

      echo '<td><input name="niederlassung" type="hidden" value="'.$id_kern_niederlassung-nl.'"><input name="haekchen" type="checkbox">';

      Ausserdem musst du wissen, wie der Wert einer Checkbox ausgelesen wird ("checked" oder "unchecked")!

      Damit würden dann folgende $_POST-Werte ankommen:
      $_POST['niederlassung'] (ist das, was in $id_kern_niederlassung-nl bzw. $id_kern_niederlassung war)
      $_POST['haekchen'] (hat den Wert "checked" oder "unchecked")

      Ganz habe ich das zwar noch nicht gecheckt aber ich werde einmal damit herumspielen.

      Vielen Dank schon mal.

      Martin

      Liebe Grüße aus Ellwangen,

      Felix Riesterer.

      1. Lieber Martin,

        es kann sein, dass ich da etwas mit den Radio-Buttons verwechselt habe. Lies Dir zur Sicherheit nochmal das Kapitel zu Checkboxen in SelfHTML durch.

        Dazu könntest Du Dir auch den Inhalt des Arrays $_POST mit Hilfe von
        <?php var_dump($_POST); ?>
        ausgeben lassen. Da solltest Du dann sehen, wie und ob Deine Checkboxen übermittelt werden. Wenn Du dann noch
        <?php var_dump(get_defined_vars()); ?>
        eingibst, dann bekommst Du alles an Variablen und ihren Werten ausgegeben, was in Deinem Script überhaupt definiert ist.

        Wenn's dann nicht klappt...

        Liebe Grüße aus Ellwangen,

        Felix Riesterer.

    2. Ausserdem musst du wissen, wie der Wert einer Checkbox ausgelesen wird ("checked" oder "unchecked")!

      falsch.
      wenn ein value vorhanden ist, wird bei checked das value genommen

    3. Lieber Martin,

      warum eigenlich martin ;) ?

      1. Lieber Martin,
        warum eigenlich martin ;) ?

        Ich heiße Martin aber immer wenn ich das bei Name eingebe  kommt  ein Fehler ich bin nicht authentifiziert und dann habe ich halt meinen Spitznamen Ole genommen aber vergessen ihn unten zu ändern und so bin ich halt Martin und Ole. Danke an euch beiden, ich werde es heute Abend versuchen.

        Martin

  2. eine ganz einfache und schnell lösung für solcherlei probleme - ohne den thread gelesen zu haben:

    1. Prüfen ob das richtige Formular aufgerufen wird, z.B, durch echo-Ausgabe am Anfang des Dokumentes.

    2. Alle Post-Vars ausgeben, z.B. durch eine schleife mit $_POST

    3. Bei jeder Verwendung von Variablen an den betreffenden Stellen diese ausgeben und schauen ob sie korrekt sind.

    Mit diesen 3 schritten kommst du weiter.
    und mit dem dritten immer.

      1. Alle Post-Vars ausgeben, z.B. durch eine schleife mit $_POST

      Warum so umständlich? Dafür gibt es doch print_r() und wenn's noch etwas mehr (ausführlicher, z.b. inkl. Typ-Angabe) sein darf var_dump()

  3. $id_kern_niederlassung-nl = $_POST['$id_kern_niederlassung-nl'];

    Du verwendest hier die einfachen Anführungszeichen und in denen werden keine Variablen aufgelöst.