Autor Zpráva
ONdra28
Profil *
Zdravím,

Dělám si funkci na automatický přidání addslashes() na proměnný z $_POST, vypadá takhle:
function upravit_promenne(&$promenne,$signatury) {
      $docasne_pole = Array();
  
  foreach($signatury as $nazev=>$signatura) {
     
     $docasne_pole[$nazev] = $promenne[$nazev];
     if (isset($signatura["typ"])) {
         settype($docasne_pole[$nazev], $signatura["typ"]);
     }
     if(isset($signatura["funkce"])) {
         $docasne_pole["nazev"] = "{$signatura["funkce"]}($docasne_pole[$nazev])";
     }
  }
  return $promenne = $docasne_pole;
}



A signatury jsou tyto:

$sigs = Array(
  "cislo" => Array("vyzadovano" => true, "typ" => "int"),
  "desc" => Array("vyzadovano" => true, "typ" => "string"),
  "funkce" => "addslashes"
);


Při zavolání funkce mi to hodí tohle Notice: Undefined index: funkce in D:\wamp\www\var.php on line 8

Vím, že je něco blbě s indexem v tý $sigs, ale nemůžu přijít na to co....

Díky za odpovědi.
ONdra28
Profil *
Eště doplnim že ji volám takto:

upravit_promenne(&$_POST,$sigs);
Mastodont
Profil
Neexistuje $_POST['funkce'].
foreach($signatury as $nazev=>$signatura) {
    
   $docasne_pole[$nazev] = $promenne[$nazev];
ONdra28
Profil *
Funkci nepotřebuju tahat přes $_POST, tu mám v $sigs
Joker
Profil
         $docasne_pole["nazev"] = "{$signatura["funkce"]}($docasne_pole[$nazev])";

Místo $signatura má být $signatury, řekl bych.
$signatura je položka toho pole $signatury, ve které index "funkce" opravdu neexistuje.

edit - ono je to tam víckrát.

No prostě při tom uvedeném $sigs:
$signatury bude array("cislo"=>array(...), "desc"=>array(...), "funkce"=>"addslashes")
$signatura bude v jednotlivých cyklech:
Array("vyzadovano"=>true, "typ"=>"int")
Array("vyzadovano"=>true, "typ"=>"string")
String("addslashes")

...mimochodem bych neřekl, že je to úplně dobře (s ohledem na ten poslední běh). Resp. teda když jsme u toho, já pořádně nevím, co je vlastně účelem té funkce.
Mastodont
Profil
ONdra28
Přečti si ty dva řádky ještě jednou a zauvažuj.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: