${$var}: Hoe krijg ik dit goed?
Ben bezig met een oop script dat forms maakt en valideert, maar nu zit ik weer even vast.
Binnen de OOP weet ik of het gaat om een get of een post en wat de naam van de veld is.
Dus bijvoorbeeld:
$method = '_GET';
$fieldname = 'telefoon';
Nou wil ik het op deze manier gaan doen(zou toch moeten werken normaal, maar dus toch weer niet):
$waarde = ${$method}[$fieldname];
of
$waarde = ${$method};
$waarde = $waarde[$fieldname];
Maar ze werken beiden niet. Wat doe ik dan verkeerd?
Het zou dan toch zo worden uitgevoerd:
1. $waarde = ${$method}[$fieldname];
2. $waarde = ${_GET}[telefoon];
3. $waarde = $_GET[telefoon];
Meschien wil ik het gewoon te moeilijk doen, maar zou toch graag willen weten wat hier fout aan is?
Ik krijg dan het volgende notice(error):
Notice: Undefined variable: _GET in ... on line ...
Een makkelijk oplossing zou zijn:
if($method == '_POST')
{
$waarde = $_POST[$fieldname];
}
else
{
$waarde = $_GET[$fieldname];
}
Maar dat beslaat meer regels dan als ik het andere aan het werken kan krijgen :P
Je moet dus Hipska zijn voorbeeld gebruiken.
Maar het zou nog sneller kunnen (hoef maar 1 keer voor elke input veld de waarden ophalen):
$waarde = ($method == 'post') ? $_POST[$fieldname] : $_GET[$fieldname];
Hmm ik denk dat ik als ik klaar ben dat ik de hele class wel wil posten en vragen of mensen het kunen optimaliseren/verbeteren (zoiets als refactormycode.com)
Zo leer ook veel dingen.
Dan is mijn methode
Het is ms 1 lijntje extra code, maar het is overzichtelijker en je moet niet elke keer opnieuw die controle doen.
Stel, 3 input velden:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$waardes = ($method == 'POST') ? $_POST : $_GET;
$waarde = $waardes[$fieldname];
$waarde = $waardes[$fieldname];
$waarde = $waardes[$fieldname];
?>
$waardes = ($method == 'POST') ? $_POST : $_GET;
$waarde = $waardes[$fieldname];
$waarde = $waardes[$fieldname];
$waarde = $waardes[$fieldname];
?>