${$var}: Hoe krijg ik dit goed?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

DDragonz

DDragonz

04/11/2007 03:04:00
Quote Anchor link
Hallo
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
 
PHP hulp

PHP hulp

20/04/2024 16:09:31
 
Hipska BE

Hipska BE

04/11/2007 10:25:00
Quote Anchor link
korte methode om meteen alle waarde's op te vragen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

$waardes
= ($method == 'POST') ? $_POST : $_GET;

//daarna doe je gewoon dit:

$waarde = $waardes[$fieldname];
$waarde2 = $waardes[$fieldname2];
// ...
?>
 
Martijn B

Martijn B

04/11/2007 11:34:00
Quote Anchor link
Je kunt geen variabele variabelen gebruiken in combinatie met superglobals.

Je moet dus Hipska zijn voorbeeld gebruiken.
 
DDragonz

DDragonz

04/11/2007 22:27:00
Quote Anchor link
Ey bedankt :)
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.
 
Hipska BE

Hipska BE

04/11/2007 23:26:00
Quote Anchor link
je zegt net dat je 1 keer voor ELKE input veld de waarde moet ophalen.
Dan is mijn methode korter beter.
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$waardes
= ($method == 'POST') ? $_POST : $_GET;
$waarde = $waardes[$fieldname];
$waarde = $waardes[$fieldname];
$waarde = $waardes[$fieldname];
?>
tegenover
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$waarde
= ($method == 'POST') ? $_POST[$fieldname] : $_GET[$fieldname];
$waarde = ($method == 'POST') ? $_POST[$fieldname] : $_GET[$fieldname];
$waarde = ($method == 'POST') ? $_POST[$fieldname] : $_GET[$fieldname];
?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.