login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Array in Variable zetten?

Offline Nrzonline - 14/01/2006 00:39 (laatste wijziging 14/01/2006 00:48)
Avatar van NrzonlinePHP ver gevorderde Hey mensen,

Na flink wat prutsen wil ik is een klein beginnetje maken aan een beetje functionerende PHP-gescripte website =) Maar ik stuit nu op een probleem, want ik gebruik nu een functie om een soort error te maken. Het probleem is dat hij alleen de error-melding van de laatste array '(empty($_POST['user_email']))' weer geeft...
Kan ik uberhaupt wel een array in een variable plaatsen? 
Zoniet? Hoe kan ik dit dan anders doen?

Via de tutorial heb ik ook al een aantal dingen geprobeerd, maar
helaas zonder succes =(

Mijn Function:
  1. <?PHP
  2.  
  3. function ShowError()
  4. {
  5. global $CreateTitle; global $CreateError;
  6. echo "<table width='420' border='1' cellspacing='1' cellpadding='1'>\n";
  7. echo "<tr><td><div align='center'>" . $CreateTitle . "</div></td></tr>\n";
  8. echo "<tr><td><div align='center'>" . $CreateError . "</div></td></tr>\n";
  9. echo "</table>\n";
  10. }
  11.  
  12. ?>


Controle formulier:
  1. <?PHP
  2.  
  3. if (isset($_POST['CreateAccount']))
  4. {
  5. if (empty($_POST['user_name']))
  6. $ErrorArray[] = $_LANG['REGISTER']['EMP_USERNAME'];
  7. if (empty($_POST['user_password']))
  8. $ErrorArray[] = $_LANG['REGISTER']['EMP_PASSWORD'];
  9. if (!empty($_POST['user_password']) && (empty($_POST['confirm_password'])))
  10. $ErrorArray[] = $_LANG['REGISTER']['EMP_CONFIRM'];
  11. if (empty($_POST['user_email']))
  12. $ErrorArray[] = $_LANG['REGISTER']['EMP_EMAIL'];
  13.  
  14. $ErrorTotal = count($ErrorArray);
  15. if ($ErrorTotal != 0)
  16. {
  17. $CreateTitle = $_LANG['ERROR']['OCCURED'];
  18. for ($i = 0; $i < $ErrorTotal; $i++)
  19. $CreateError = '<li>' . $ErrorArray[$i] . '</li>';
  20. ShowError();
  21. }
  22. else
  23. {
  24. // else functie
  25. }
  26.  
  27. ?>

4 antwoorden

Gesponsorde links
Offline Ibrahim - 14/01/2006 09:08
Avatar van Ibrahim PHP expert je doet telkens = dus je overschrijft de eerder gedeclareerde waarde
maw

zet boven de ifjes $ErrorArray[] = '';

en in je ifjes de = veranderen in .=
Offline Thomas - 14/01/2006 11:18 (laatste wijziging 14/01/2006 11:27)
Avatar van Thomas Moderator Het probleem zit hem niet in de toekenningen met het =-teken, het probleem zit hem in de ontbrekende haken bij de for-lus op regel 20.

Als je geen haken om een lus heen zet, zit alleen het volgende statement (regel 21) in de "loop".
Regel 22 wordt pas uitgevoerd na beëindiging van de for-lus.

In zoverre wordt $CreateError elke keer overschreven, maar waarom zou je alles in een string willen frotten als je het al netjes in een array hebt staan?

EDIT: Je kunt trouwens dat error-array aan de ShowError-functie mee kunnen geven als parameter, dat is wat netter dan werken met global. Je zou dus ook het bouwen van zo'n HTML-lijst kunnen verplaatsen naar binnen die functie, wat op zich wel logisch is...

EDIT2:
zo dus - controle (kan veel korter, je hoeft niet voor alles een nieuwe variabele te introduceren):
  1. <?php
  2. if(count($ErrorArray) > 0)
  3. {
  4. ShowError($_LANG['ERROR']['OCCURED'], $ErrorArray);
  5. }
  6. ?>


functie:
  1. <?php
  2. function ShowError($error_msg, $error_list)
  3. {
  4. echo "<table width='420' border='1' cellspacing='1' cellpadding='1'>\n";
  5. echo "<tr><td><div align='center'>" . $error_msg . "</div></td></tr>\n";
  6. echo "<tr><td><div align='center'><ul>"; // <ul> niet vergeten!
  7. for($i=0; $i < count($error_list); $i++)
  8. {
  9. echo "<li>".$error_list[$i]."</li>\n";
  10. }
  11. echo "</ul></div></td></tr>\n"; // </ul> niet vergeten!
  12. echo "</table>\n";
  13. }
  14. ?>
Offline Nrzonline - 14/01/2006 11:26 (laatste wijziging 14/01/2006 11:56)
Avatar van Nrzonline PHP ver gevorderde ok ik ga het even uitproberen,
thnx both

*edit*

Maar ik gebruik de functie ook bijv voor dit
  1. <?PHP
  2.  
  3. if (isset($_SESSION['user_id']))
  4. {
  5. $CreateTitle = $_LANG['ERROR']['OCCURED'];
  6. $CreateError = $_LANG['ERROR']['REGISTERED'];
  7. ShowError();
  8. }
  9.  
  10. ?>


Dit is geen array, moet ik daar dan gewoon een array van maken
om hem in de functie te laten weergeven, aangezien je nu in
de function de array weergeeft en geen normale variable..

*edit*
Nvm, is gelukt 
thankszzz
*/edit*

@siliecom14

als ik $ErrorArray[] = ''; boven mijn ifjes zet, dan ziet hij die ook
als een lege Array, en zet hij dus in de functie er een <ul><li> .. </li></ul> voor, waardoor ik dus een bolletje met geen error
erachter krijg, omdat die leeg is..
Offline Ibrahim - 14/01/2006 15:50
Avatar van Ibrahim PHP expert kijken of die leeg is zo ja doorgaan met code zo nee error printen 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.225s