todo: radio button mit namen als variabele

hallo und hilfeeeeeee,

ich suche jetzt WIRKLICH schon seit tagen nach einer lösung für meine radio-button-problematik. in meinem mini-cms gibt es im admin-bereich einen seiteneditor. dort kann man templates auswählen, etc. eine reihe von sachen sind für die einzelnen seiten einstellbar, welche in einer übersicht (untereinander - einzelne datesätze) angezeigt werden.

ich bekomme alle daten (variablen) problemlos in meine update-datei übergeben, eben nur nicht die besagten radio-buttons. ich habe wirklich ALLES ausprobiert und ALLE foren, etc durchstöbert ...

der haken liegt definitive an den variablen namen der radio-buttons (name ist gleich der id), was natürlich zwingend ist, da sonst die radio-buttons mit gleichen namen in der gleichen gruppe wären und sich von allen datensätzen nur ein einziger button anwählen lassen würde.

jetzt kommt noch hinzu, dass ich (es sind sehr viele einstellungen möglich) nicht nach jeder änderung in einem datensatz "speichern" drücke, sondern erst alle änderungen an allen datensätzen vornehme und dann endgültig einmal "speichern" drücke. also alle einstellungen werden in arrays übergeben und in der update durch eine schleife in der db aktualisiert.

wenn ich nun den wert des radio-buttons abfrage, dann muss ich logischer weise auf den namen des buttons ($) zurückgreifen (values sind einfache zahlen 1,2,3, etc) ... und dann scheiterts, da ich dann nicht den value des buttons bekomme, sondern das value der eigentlichen variable (halt die id) ... kotz!

vielleicht hat jemand eine lösung (ich bin noch php-newbee) - wäre echt klasse.
vielen dank - todo

hier ein ausschnitt (zusammengekürzt) vom source (falls dienlich ist):

-> EDIT PAGE

<form action="nyc_pages.php" method="post" name="pages_form">
echo '<input type="hidden" name="action" value="update_pages">';
echo '<input type="hidden" name="box_id[]" value="'.$infobox_row['id'].'">';

$box_spalte = $infobox_row['id'];

echo '<input type="radio" value="1" name="'.$box_spalte.'"[]';
if($infobox_row['spalte']=="1") { echo 'checked';}
echo '>';

-> UPDATE PAGE:

$box_y = count($box_id);
$box_x = 0;
while ($box_x<$box_y) {

$add_infobox_query = "UPDATE nyc_infobox SET spalte='".$box_spalte[$box_x]."' WHERE id='".$box_id[$box_x]."'";
mysql_query($add_infobox_query,$conn_id);
$box_x = $box_x + 1;
}

P.S. ich hba's auch schon ohne array probiert und mit hidden-fields. mit den hidden-fileds würde es klappen, wenn ich es schaffen würde dem hidden-field den wert des angewählten buttons zuzuweisen ... aber wie gesagt, da der name eine variable ist, nimmt dann auch das hidden-fild den wert der variable an und nicht das value des radio-buttons!!!

  1. Hello,

    ich kann dir zwar nicht ganz folgen, aber ich vermute, dass Du für mehrere Datensätze in mehreren Spalten mittels Radio-Button eine Auswahl treffen willst.

    Du kannst den Radios doch eine  entsprechenden Namen geben:

    für jeden Satz --->
      für jede Radio-Spalte --->
         radio[<SatzID>][<Spaltenname>]
      <---
    <---

    Dann kommt im Form später an:

    [_POST] ==>
         [radio] ==>
            [22] ==>
                [newsletter] ==> 1
                [anrufen]    ==> 1
            [33] ==>
                [newsletter] ==> 3
                [anrufen]    ==> 0
         [data] ==>
            [22] ==>
                [vorname] ==> 'Paul'
                [nachname] ==> 'poltermann'

    oder so ähnlich.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. danke erstmal für die rasche antwort,

      bin allerdings zu sehr newbee (3 wochen php) um's zu raffen :-(

      ich denke mein problem ist wahrscheinlich auch viel einfacher, liegt bestimmt nur an der schreibweise oder so ...

      ich bekomme die verschiedenen ds untereinander angezeigt ...
      kann z.b. nen text ändern ... das INPUT feld hat dann am namens ende die eckigen klammern [] (war ich ja x-trem stolz, dass raus gefunden zu haben ;-) und den wird mit dem submit die form action ausgelöst und in der update-datei werden dann die änderungen aller datensätze durch eine schleife abgearbeitet ...

      bei den radio-buttons halt die problematik mit der namensgebung!
      es sind 4 radio-buttons die zusammen gehören in einem ds mit den values 1,2,3 und 4, welche per auswahl des jeweiligen buttons, ganz einfach in das db-feld SPALTE gespeichert werden sollen.

      EDIT DATEI:   echo '<input type="radio" value="1" name="'.$box_spalte.'"[]';

      UPDATE DATEI: $add_infobox_query = "UPDATE nyc_infobox SET spalte='".$box_spalte[$box_x]."', .......

      ... er übergibt aber wie gesagt, die werte der values leider nicht ...
      wenn ich mit hidden-fields es löste:

      echo '<input type="hidden" name="box_spalte_test[]" value="'.$box_spalte.'">';

      schreibt er mir immerhin schon die idvon $box_spalte in das db-feld SPALTE ... allerdings möchte ich ja das VALUE davon haben ... da stimmt's halt nicht ...

      bin mir sicher, es liegt nur an der schreibweise oder wie man was aneinanderfügt ...

      war klasse, wenn du mir noch einmal nen tipp geben könntest ...

      danke todo!

      1. Hello,

        Du baust also ein Grid auf? Also so ähnlich, das Datenblatt einer Tabellenverwaltung? So hatte ich das verstanden.

        Dann könntest Du Deine Namensvergabe so gestalten

        name="data[<ID des Satzes>][<Spaltenname>]"

        und für die Radio-Felder geht das genauso. Sie können ja nur einen Wert zurückliefern. Nur dass Du eben mehrere Inputfelder mit demselben Namen hast aber mit unterschiedlichen Values

        Schwierig wird das nur für Checkboxen und Multiselects Die müssen dann eben jeweils einen eigenen Namen erhalten, der sich aus Basisname der Spalte und der möglichen Option zusammensetzt, oder aber einfach die [] ohne Inhalt. Dann hat aber der erzeugte Key nichts mehr mit dem tatsächlien Wert zu tun.

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau