mehrere radiobuttons übergeben

daHooligan
Hy,

ich hab ein Skript, das mir eine DB Zeilenweise ausgibt. Jetzt hätte ich gerne hinter jedem Datensatz einen Radiobutton, der, wenn aktiviert, die Löschung des jeweiligen Datensatzes bedeutet.
Die Radiobuttons etc. hab ich schon hingekriegt, ist auch nicht sonderlich schwer. MeinProblem besteht jetzt darin, dass ich zwar die Radiobuttons aktivieren kann und auch jedem Button nen anderen Namen zugewiesen habe (jeweils die nr derjewiligen Zeile). Jetzt habe ich aber >100 Datensätze und keine Lust mit $_GET['1']....$_GET['n'] hundeerte Variablen auszulesen. Wie geht das sonst noch, wenn register_globals auf "off" steht?????
wo ich grad dabei bin: kann ich die zu übergebenen Variablenwerte auch aus der Adresszeile verbannen???


MfG

daHool
survivor
das ist doch ganz einfach großes Grinsen ....
... oder auch nicht Augenzwinkern
ne, also an deiner stelle würde ich zuerst einmal die radiobuttons nach dem primärschlüssel in der tabelle benennen, das erleichtert die zuordnung der datensätze in der löschabfrage. falls du keinen primärschlüssel definiert hast, scheint die sache glaub ich ein wenig komplizierter zu sein (zumindest hab ich da grad keinen lösungsansatz).
und um die parameter aus der adresszeile zu verbannen, schickst du das formular einfach mit post ab anstatt mit get. also logischerweise dann auch mit $_POST['n'] die variablen auslesen.
neonator
am besten machst du was mit einer schlaufe (for/foreach), dann holst du die vars eine nach der anderen.
hab dir da eine funktion, die dir vielleicht hilfreich sein könnt.
nur wenn du sie in funktionen anwendest, musst du dann noch die var globalisieren:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
<?php // small function for "globalising" the submittet vars..
  // $str: the name of the submitted var or field, which should be 'globalisated'...
  //       accepted:  - numeric (integer, float, ... , also 'hidden' in strings)
  //                        -> always returned as float
  //                  - strings -> always returned after stripping slashes
  //                  - arrays -> returned after 'parsing' the whole array,
  //                        same sheme (numeric, strings, ohter arrays)..
  //                  - null (dont know if it could be null..) -> returned as it is
  //                  - default: other types are returned without doing anything..
  // $type: you can chose where the vars are taken from.. like $_GET[$str], $_POST[$str], $cookie[$str]..
  //        types:    - 'get'             : $_GET
  //                  - 'post'            : $_POST
  //                  - 'cookie'          : $_COOKIE
  //                  - 'files'           : $_FILES  (don't know if it is used..)
  //                  - 'session'         : $_SESSION
  //                  - default (empty)   : all variants are searched, in this sequence ^^ 
  // $strtype: you can give a reference, where the type of the var is 'saved'.. 
  //           types like string, float, array, null, ...
  //           use the syntax like: vGET('id',false,&$type);  , $strtype will be 'saved' in $type
  function vGET($str,$type=false,$strtype=false) {
    // \/
    if(!function_exists('vGET_parse')) {
      function vGET_parse($foo) {
        if(is_array($foo)) {
          foreach($foo as $k=>$v) {
            $foo[$k]    = vGET_parse($foo[$k]);
          }
        }
        elseif(is_scalar($foo)) {
          if(is_numeric($foo))
            $foo        = (float) $foo;
          elseif(is_string($foo))
            $foo        = (string) stripslashes($foo);
        }
        elseif(is_null($foo))
          $foo          NULL;
        return $foo;
      }
    }
    //  ^^
    global $_GET$_POST$_COOKIE$_FILES$_SESSION;
    $_strings         = array('get'=>$_GET,'post'=>$_POST,'cookie'=>$_COOKIE,'files'=>$_FILES,'session'=>$_SESSION);
    foreach($_strings as $key=>$value) {
      if((!$type || $type==$key) && isset($value[$str])) {
        global ${$str};
        $v            $value[$str];
        ${$str}       = vGET_parse($v);
        $strtype      gettype(${$str});
        return ${$str};
      }
    }
    return false;
  } ?>


anwendungsbeispiel:
gegeben sind die drei felder {name,vorname,adresse}, welche drei dazugehörige checkboxen haben {name_chk,vorname_chk,adresse_chk}
php:
1:
2:
3:
4:
5:
6:
7:
<?
  $_vars = array('name','vorname','adresse');
  for($i=0;$i<count($_vars);$i++) {
    vGET($_vars[$i].'_chk'); // das feld wird geholt und "globalisiert": zb. variable $name_chk jetzt vorhanden.
    echo ${$_vars[$o].'_chk'}; // das ist hilfreich, um nicht fest definierte variablenname zu gebrauchen. wäre jetzt (beim ersten durchgang) z.b. echo $name_chk;
  }
?>

denke das sollte dir vielleicht ein bisschen helfen. falls du fragen hast, frag nur Augenzwinkern

gruss jone
daHooligan
thx für die Hilfe, werde das mal im Laufe der Woche ausprobieren.....
ThiefMaster
Globalisierung von Requestvariablen ist immer schlecht und sollte vermieden werden.