2010-07-27 6 views
0

Avec error_reporting(E_ALL); enlevé, mon script fonctionne bien, mais quand je décommentez, l'avis suivant apparaît:Remarque: Variable indéfinie

Avis: Undefined variable: messages dans /home/www/test/register/html/form_1.html.php en ligne 11

form_1.html.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> 
<html> 
    <head> 
    <meta name="generator" content= 
      "HTML Tidy for Linux/x86 (vers 7 December 2008), see www.w3.org"> 
    <title>Sign in or Register</title> 
    </head> 


    <body> 
    <p><?php displayMessages($messages) ?></p><!-- line 11 --> 

en ligne 11 il y a un appel de fonction, qui essentiellement itère sur un argument de tableau:

function displayMessages($array) 

{ 
    if (!empty($array) && isset($array)) 
    { 
     foreach ($array as $number => $error) 
     { 
      echo '<font size="3" color="#990000">' . "* $error" . "</font></br>"; 
     }  
    } 
    elseif (empty($array) || !isset($array)) 
    { 
     echo ""; 
    } 

    elseif (empty($array) || !isset($array)) 
    { 
     $array = array(); 
     $array = null; 
    } 

} 

J'ai ajouté la condition if pour vérifier si elle est vide, car parfois je vais passer un tableau vide.

Ceci est une petite partie de ces trois fichiers, il est censé être un formulaire d'inscription:

  • index.php
  • output.php
  • form_1.html.php

Tous trouvés ici (http://pastie.org/1062886)

Le fichier d'index vérifie si l'utilisateur a renseigné le Valeurs et les valide, mais si elles ne l'ont pas il va placer une erreur dans le tableau d'erreurs respectives, la fonction d'erreur d'affichage est censé les afficher s'il y a des valeurs dans le tableau qui lui est passé. Je parie que la solution est assez basique, mais je suis un noob et c'est en me faisant tirer les cheveux.

+2

Juste FYI - '! Empty ($ quelquechose)' implique 'isset ($ quelquechose)'. http://php.net/empty – gnarf

Répondre

2

Pour vous assurer $messages appel de fonction displayMessages($messages), existe:

if (isset($messages)) { 
    displayMessages($messages); 
} 

empty() vérifie déjà si la variable est définie, de sorte que les && !isset($array) contrôles ne sont pas nécessaires dans votre code. La condition pour la deuxième branche elseif est équivalente à la première condition elseif, donc le deuxième bloc elseif ne sera jamais entré.

+0

Le code est là comme le PO a déclaré: http://pastie.org/1062881 – Wrikken

8
<p><?php displayMessages($messages) ?></p> 

Cette variable n'existe pas à ce moment-là.

<p><?php if(isset($messages)) displayMessages($messages); ?></p> 

appel isset plus tard dans votre fonction ne réglera pas: que votre argument a déjà été réglé sur null (sous forme de messages $ n'existaient pas), et $array existe sûrement un argument de fonction.

+0

Vous monsieur, êtes un homme formidable! Merci beaucoup. –

+0

@john mossel, assurez-vous de cliquer sur le chèque à gauche de son message! – Warty

+0

Ah ok, si plusieurs personnes ont raison, est-ce que je vérifie le leur aussi? –

Questions connexes