senca99 Posted July 27, 2011 Share Posted July 27, 2011 Hey all! I've written code for checking form input and it works fine if its just a php script. But for OO reasons I wanted to put the code in a function. But when calling the function in a different script suddenly I get notices that my variables in the function are undefined. :s Does anyone know why? This is the function code: function algemeen_registratie_formulier() { echo'<p>Registreer</p>'; $familienaam=''; $voornaam=''; $straat=''; $huisnr=''; $postcode=''; $plaats=''; $mail=''; $telnr=''; $bijzonderh=''; $aantalkids=''; // Speciale checks voor familienaam,voornaam,straat,plaats en e-mailadres wordt gedaan als we het form submitten if ($_SERVER['REQUEST_METHOD'] == 'POST') { $familienaam=$_POST['naam']; $voornaam=$_POST['vnaam']; $straat=$_POST['straat']; $huisnr=$_POST['huisnr']; $postcode=$_POST['postcode']; $plaats=$_POST['plaats']; $mail=$_POST['mail']; $telnr=$_POST['telnr']; $bijzonderh= $_POST['bijzonderh']; /*Hieronder de regexen om de input te verifiëren*/ if (!ereg('^[ a-zA-Z-]+$', $_POST['naam'])){ $familienaam_fout = 1;} if (!ereg('^[ a-zA-Z-]+$', $_POST['vnaam'])){ $voornaam_fout = 1;} if (!ereg('^[ a-zA-Z-]+$', $_POST['straat'])){ $straat_fout = 1;} if ((!ereg('[1-9][A-Za-z]',$_POST['huisnr'])) && (!ereg('[1-9][0-9]{3}', $_POST['huisnr']))){ $huisnr_fout = 1;} if (!ereg('^[1-9][0-9]{3}$', $_POST['postcode'])){ $postcode_fout = 1;} if (!ereg('^[ a-zA-Z-]+$', $_POST['plaats'])) $plaats_fout = 1; if (function_exists('filter_var') && !filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL)) $email_fout = 1; if (!ereg('^0[1-9][0-9]{7}$', $_POST['telnr'])) $telnr_fout = 1; /* if (!empty($_POST['bijzonderh'])){ if(){ } } $bijzonderh_fout = 1; */ } // Kijk of alle velden zijn ingevuld - //voornaam en familienaam,straat en plaats mag alleen uit letters bestaan //en het e-mailadres moet juist zijn...wordt gechecked bij submit if (($_SERVER['REQUEST_METHOD'] == 'POST' && (empty($_POST['naam']) || !empty($familienaam_fout) || empty($_POST['vnaam']) || !empty($voornaam_fout)|| empty($_POST['straat']) || !empty($straat_fout) || empty($_POST['postcode']) || !empty($postcode_fout) || empty($_POST['telnr']) || !empty($telnr_fout) || empty($_POST['plaats']) || !empty($plaats_fout) || empty($_POST['mail']) || !empty($email_fout))) || $_SERVER['REQUEST_METHOD'] == 'GET') { if (!empty($voornaam_fout)) echo '<p>U vulde geen of een foute voornaam in.</p>'; if (!empty($familienaam_fout)) echo '<p>U vulde geen of een foute familienaam in.</p>'; if (!empty($straat_fout)) echo '<p>U vulde geen of een foute straatnaam in.</p>'; if (!empty($huisnr_fout)) echo '<p>U vulde een ongeldig huisnummer in.</p>'; if (!empty($postcode_fout)) echo '<p>Uw postcode mag enkel uit 4 cijfers bestaan.</p>'; if (!empty($plaats_fout)) echo '<p>U vulde geen plaats in.</p>'; if (!empty($email_fout)) echo '<p>U vulde geen e-mail adres in.</p>'; if (!empty($telnr_fout)) echo '<p>U vulde een ongeldig telefoonnummer in (enkel 9 cijfers toegestaan).</p>'; if (!empty($bijzonderh_fout)) echo '<p>U vulde een ongeldig telefoonnummer in (enkel 9 cijfers toegestaan).</p>'; echo' <form method="post" action="' . $_SERVER['REQUEST_URI'] . '"> <p>Vul je voornaam in: <br /> <input type="text" value="' .$voornaam. '" name="vnaam" /> </p> <p>Vul je naam in: <br /> <input type="text" value="' .$familienaam. '" name="naam" /> </p> <p>Straat: <br /> <input type="text" value="' .$straat. '" name="straat" /> </p> <p>Huisnummer: <br /> <input type="text" value="' .$huisnr. '" name="huisnr" /> </p> <p>Postcode: <br /> <input type="text" value="' .$postcode. '" name="postcode" /> </p> <p>Stad: <br /> <input type="text" value="' .$plaats. '" name="plaats" /> </p> <p>E-mail: <br /> <input type="text" value="' .$mail. '" name="mail" /> </p> <p>TELnr(enkel cijfers!): <br /> <input type="text" value="' .$telnr. '" name="telnr" /> </p> <p>*Opmerkingen of bijzonderheden: <br /> <input type="text" value="' .$bijzonderh. '" name="bijzonderh" /> </p> </p> <input type="submit" value="Verzenden" /> <input type="reset" value="Wissen" /> </p> </form>'; } /*Deze else zal worden uitgevoerd bij een correcte input in het basis registratieformulier*/ else{ /*eerste check==> een gezin registreerd==>selecteer aantal kinderen*/ if($_POST['registratiekeuze'] == 'babysit'){ print "U heeft zich geregistreerd als babysit. U registratie wordt afgehandelt."; } else{ echo' <form method="post" action="registreeraantalkids.php"> <p>Ik ben: <br /> <select name="registratiekeuze" id="registratiekeuze"> <option value=1 $een>1 kind</option> <option value=2 $twee>2 kinderen</option> <option value=3 $twee>3 kinderen</option> <option value=4 $twee>4 kinderen</option> <option value=5 $twee>5 kinderen</option> </select> <input type="submit" value="Ga verder..." /> </form> '; } } } The code calling the function: include("functies_voor_registraties.php"); $keuze=globale_keuze(); if($keuze=='gezin'){ algemeen_registratie_formulier(); } elseif($keuze=='babysit') { echo' <p>Registratie voor babysitter:</p>'; algemeen_registratie_formulier(); } Quote Link to comment Share on other sites More sharing options...
WebStyles Posted July 27, 2011 Share Posted July 27, 2011 variables created outside a function will not exist inside the function unless passed in to it (or referenced) variables created inside a function will not exist outside of that function unless retuned (or were referenced, or are globals like $_SESSION) you pass vars into a function like this: functionName($var1,$var2); you reference them like this: functionName(&$var1,&$var2); Quote Link to comment Share on other sites More sharing options...
senca99 Posted August 2, 2011 Author Share Posted August 2, 2011 Sorry for the late reply, I totally lost trach of this one! I tried what you said but I still get the notices. I changed the functionheader like this: function algemeen_registratie_formulier($familienaam,$voornaam,$straat,$huisnr,$postcode,$plaats,$mail,$telnr,$paswoord,$bijzonderh,$aantalkids) and I referenced them: algemeen_registratie_formulier(&$familienaam,&$voornaam,&$straat,&$huisnr,&$postcode,&$plaats,&$mail,&$telnr,&$paswoord,&$bijzonderh,&$aantalkids); Does it have something to do with the fact that the page is reloaded before showing the form? I first show a dropdown menu and when submitting the choice, the function is called and shows the form. Quote Link to comment Share on other sites More sharing options...
WebStyles Posted August 2, 2011 Share Posted August 2, 2011 you reference them when you declare the function, not when you're passing them in. Quote Link to comment Share on other sites More sharing options...
Muddy_Funster Posted August 2, 2011 Share Posted August 2, 2011 You really should learn more about using/creating functions in general before implementing them into your code. Stat with the PHP manual and searching the tutorials that can be found on the forum here. Don't get me wrong - I'm not saying not to ask for help, just that you need to really look into how functions work properly if you intend to make your own. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.