Toon posts:

[PHP] if statement met variable check... hmm...

Pagina: 1
Acties:

Verwijderd

Topicstarter
ok check this:

PHP:
1
2
3
4
5
6
7
8
function required_fields ($reqfields) {

    if($reqfields){
    // Not all fields filled in? Return and give error!
    $returnerror = "1";
    return $returnerror;
    }
}

(stripped code)

PHP:
1
2
$requiredfields = '$firstname == NULL';
required_fields($requiredfields);


dit zou dus moeten checken of $firstname LEEG is ja of nee, en zo ja, moet de error geset worden...
Maar, een
PHP:
1
if($reqfields){ ...
werkt niet... als ik daar (ipv $reqfields) gewoon
PHP:
1
if($firstname == NULL)
neerzet doet ie het prima...

Maar die $requiredfields verschilt van keer tot keer... Hoe kan ik dit oplossen???

Verwijderd

PHP:
1
$requiredfields = $firstname == null;

of met haakjes als je je daar lekkerder bij voelt, al ziijn ze niet nodig:
PHP:
1
$requiredfields = ($firstname == null);

overigens zou ik isset() gebruiken:
PHP:
1
$requiredfields = !isset($firstname);

[ Voor 0% gewijzigd door Verwijderd op 08-10-2002 00:19 . Reden: tags added ]


  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

Verwijderd schreef op 08 oktober 2002 @ 00:18:
PHP:
1
$requiredfields = !isset($firstname);
Dan zou ik voor empty() gaan, dan weet je tenminste zeker dat je variabele niet leeg is, ook al is die variabele wel geset..
PHP:
1
$requiredfields = empty($firstname);

On track


  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

je bent op zoek naar eval Niet echt netjes, maar wel een oplossing :)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Verwijderd

je kan toch ook 2 paramaters meegeven, als $var en $value.
Ik neem aan dat je functie generiek is, dus dat firstname bijvoorbeeld ook lastname kan zijn.

Nu checkt ie op de hele string, dus incl. de ==

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Volgens mij ga je met je huidige code-gedachte ergens gigantisch de fout in :)
Als je die code in je functie zou laten uitvoeren zijn ze namelijk nooit geset, tenzij je ze ook nog global gaat maken enzo.

Als ze uit je formulieren rollen kijk dan of ze bestaan in je $_GET of $_POST arrays.

Ik zou dus zoiets doen:
PHP:
1
2
3
4
5
6
7
8
// Returns true if $var exists in $array
function check_value($array, $var)
{
    return isset($array[$var]);
}

// Gebruik:
check_var($_POST, "firstname");

Of zoiets:
PHP:
1
2
3
4
5
6
7
8
9
10
// Returns true if $var exists in $array
function check_value($method, $var)
{
    if($method == "POST")
        return isset($_POST[$var]);
    elseif($method == "GET")
        return isset($_GET[$var]);
}
// Gebruik:
check_var("POST", "firstname");

Etc, waar je nog vele varianten op kan bedenken en extra checks op kan doen (is het wel een integer, is het geen lege string etc etc)

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

WouZz schreef op 08 oktober 2002 @ 01:29:
[...]

Dan zou ik voor empty() gaan, dan weet je tenminste zeker dat je variabele niet leeg is, ook al is die variabele wel geset..
PHP:
1
$requiredfields = empty($firstname);


Alleen returnt empty() ook true als een waarde 0 is.. wat soms gewoon de bedoeling kan zijn ;)

Verwijderd

Je moet er rekening mee houden dat PHP achter de schermen van alles doet met het type van de variabelen, waardoor een simpele if( $foobar ) vaak verkeerde waarden oplevert. Bv.:
while( $array ) {
}
waarbij $array een hash van integers is geeft problemen als 1 van de waarden 0 is, want dat vat PHP op als een false. Een dergelijk probleem heb jij waarschijnlijk ook.

Verwijderd

Topicstarter
PHP:
1
$requiredfields = empty($firstname) || empty($surname) || empty($address) || empty($postalcode) || empty($city) || empty($email) || empty($year);


werkt niet terwijl ze toch zijn ingevuld... dit zou toch moeten betekenen dat als EEN van de waarden niet is ingevuld (of meerdere, maar in ieder geval 1) hij een error geeft...

als ik alleen
PHP:
1
$requiredfields = empty($firstname);
doe werkt ie prima...

sorry, ben n00b :P

  • GoodspeeD
  • Registratie: April 2002
  • Laatst online: 14:39
Probeer dit eens:

PHP:
1
$requiredfields = '$firstname == NULL';


en dan in je functie dit:

PHP:
1
if( {$reqfields} )


Werkt in perl en zou ook moeten werken in php volgens mij. Doet in principe hetzelfde als eval().

Verwijderd

Topicstarter
ja met EEN ENKELE werkt ie prima, maar als ik met || dus ga koppelen doet ie het niet meer echt...

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

GoodspeeD schreef op 08 oktober 2002 @ 14:24:
Probeer dit eens:
[..]
Werkt in perl en zou ook moeten werken in php volgens mij. Doet in principe hetzelfde als eval().
zal vast werken, maar aangezien het in een functie moet werken zijn de variabelen niet global, valt allemaal op te lossen door ook de globals variabel te maken, maar dat wil je niet, want dat stinkt ;)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Verwijderd

Topicstarter
dat global maken, dus
PHP:
1
global $VARIABLE

moet dat nou in de hoofdfile of in de function?

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

kan je dat zelf niet vinden? ;)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Verwijderd

Topicstarter
function dus :P
nee ik had een type foutje gemaakt en daardoor deej ie het niet... en toen dacht ik HUH WTF?? :P

maar thanks...
jullie zijn wel super relaxed... hij werkt nouw.... (typefout)

  • GoodspeeD
  • Registratie: April 2002
  • Laatst online: 14:39
thomaske schreef op 08 oktober 2002 @ 14:30:
[...]


zal vast werken, maar aangezien het in een functie moet werken zijn de variabelen niet global, valt allemaal op te lossen door ook de globals variabel te maken, maar dat wil je niet, want dat stinkt ;)
Dat vraagt ie niet? Hij vraagt wat de syntax is voor wat hij wil en die geef ik em. Hoe hij die variabelen doorgeeft of wat dan ook, is weer een ander verhaal.

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

GoodspeeD schreef op 08 oktober 2002 @ 15:39:
[...]


Dat vraagt ie niet? Hij vraagt wat de syntax is voor wat hij wil en die geef ik em. Hoe hij die variabelen doorgeeft of wat dan ook, is weer een ander verhaal.
Daar heb je helemaal gelijk in, maar ik kijk graag een beetje verder! :)
Want anders komt de topicstarter over een paar dagen terug met die vraag ;)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Verwijderd

Topicstarter
PHP:
1
2
3
4
5
6
function fix_string($str){
    $str = strtolower($str);
    $str = ucwords($str);
    $str = trim($str);
    return $str;
}


en in de hoofdfile:
PHP:
1
2
3
4
5
6
// Set an array with the fields to "fix"
$fields_to_fix = array($firstname, $surname, $address, $postalcode, $city, $cellphone, $email, $year);
// Fix array values
while($fixit = array_pop($fields_to_fix)){
    fix_string($fixit);
    }


dit zou dus de waarden $firstname, $lastname, etc iets mooier moeten laten uitzien...
het mooi maken opzich lukt wel... alleen hij doet de nieuwe mooie WAARDE niet binden aan de variabele naam $firstname, etc...

wat doe ik dan fout?

  • GoodspeeD
  • Registratie: April 2002
  • Laatst online: 14:39
voeg dit er eens aan toe op het einde:

PHP:
1
2
3
4
5
$firstname = $fields_to_fix[0];
$surname = $fields_to_fix[1];
$address = $fields_to_fix[2];
$postalcode = $fields_to_fix[3];
$city = $fields_to_fix[4];
Pagina: 1