Return ($variable) ne la renvoie pas

Résolu
letrancheur Messages postés 210 Date d'inscription   Statut Membre Dernière intervention   -  
letrancheur Messages postés 210 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Voila je suis occupé d'aprendre les fonction et j'aurais besoin d'un peux d'aide car j'essaye de faire renvoyer des valeur à une fonction à travers une variable mais cela ne fonctionne pas voici mon code:

Dans fonction.php
<?php
function controlePseudo($pseudo, $DEBUG){
    if (!empty($pseudo))                                   //Si pseudo n'est pas vide
    {
        if($DEBUG) echo 'pseudo rempli <br />';        //DEBUG
        if(strlen($pseudo) > 5)                            //Si le pseudo a plus de 5 char
        {
            if($DEBUG) echo 'pseudo assez grand<br />';//DEBUG
//verifier si le pseudo n'est pas dans la base de donnée puis mettre $pseudo = 'valide';
        }else{                                             //AUSSI-non (Si) le pseudo est trop petit
            if($DEBUG) echo 'pseudo trop petit<br />'; //DEBUG
            $pseudo = 'trop petit';                        //On dit que NBR CHAR PSEUDO insuffisant
        }
    }else{                                                 //AUSSI-non (Si) pseudo est vide
        if($DEBUG) echo 'pseudo vide <br />';        //DEBUG
        $pseudo = 'vide';                                  //On dit que PSEUDO est VIDE
    }
    if($DEBUG) echo 'retourne $pseudo avant renvoie: '.$pseudo.'<br />';
    return($pseudo);
}
?>


Dans inscription.php
<?php
    require 'fonctions.php';
    $DEBUG = TRUE;
    $pseudo = '';
?>
<?php
    controlePseudo($_POST['pseudo'],$DEBUG);
    if($DEBUG) echo 'retourne $pseudo après renvoie: '.$pseudo.'<br />';
?>

Et plus bas

<?php
if($pseudo == 'vide') echo '<span style="color:red">vide</span>';
if($pseudo == 'trop petit') echo '<span style="color:red">min 6 char</span>';
if($pseudo == 'valide')echo '<span style="color:green">valide</span>';
?>


Si vous pouviez m'aider se serrais simpa et si vous pouviez améliorer le code ce serrait encore mieux.
Aux niveau de la base de donnée je compte encore faire le code après.
Que me conseillez vous PDO ou MYSQLI?

et voici le code que j'avais produit avant d'essayer de le mettre sous forme de fonction:
<!DOCTYPE HTML>
<?php
$DEBUG = TRUE;
$pseudo = '';


if($DEBUG)echo 'DEBUG on <br />';

if (!empty($_POST['envoie']))                 //Si $_POST n'est pas vide || on envoie dans avec le formulaire  un 'envoie' pour verifier qu'il y ai bien eu un envoie
{
 if (!empty($_POST['pseudo']))                //Si pseudo n'est pas vide
 {
  if($DEBUG) echo 'pseudo rempli <br />';        //DEBUG
  if(strlen($_POST['pseudo']) > 5)             //Si le pseudo a plus de 5 char
  {
   if($DEBUG) echo 'pseudo assez grand<br />';     //DEBUG
//verifier si le pseudo n'est pas dans la base de donnée puis mettre $pseudo = 'valide';
  }else{                          //AUSSI-non (Si) le pseudo est trop petit
   if($DEBUG) echo 'pseudo trop petit<br />';     //DEBUG
   $pseudo = 'trop petit';                 //On dit que NBR CHAR PSEUDO insuffisant
  }
 }else{                           //AUSSI-non (Si) pseudo est vide
    if($DEBUG) echo 'pseudo vide <br />';         //DEBUG
  $pseudo = 'vide';                     //On dit que PSEUDO est VIDE
 }
}
?>

et plus bas

<?php
if($pseudo == 'vide') echo '<span style="color:red">vide</span>';
if($pseudo == 'trop petit') echo '<span style="color:red">min 6 char</span>';
if($pseudo == 'valide')echo '<span style="color:green">valide</span>';
?>



PS: Désolé au niveau des commentaires pour le code original je trvaille avec une tabulation de 2 mais ici elle est de 4

2 réponses

Utilisateur anonyme
 
Bonjour

Tu ne récupères pas la valeur renvoyée par ta fonction !
Tu appelles simplement
controlePseudo($_POST['pseudo'],$DEBUG);
, mais si tu veux récupérer le résultat dans une variable $pseudo, il faut écrire
$pseudo=controlePseudo($_POST['pseudo'],$DEBUG);
.
1
letrancheur Messages postés 210 Date d'inscription   Statut Membre Dernière intervention   7
 
ok merci je vais essayer cela :)
0
letrancheur Messages postés 210 Date d'inscription   Statut Membre Dernière intervention   7
 
merci beaucoup cela fonctionne
0
Yuh12 Messages postés 184 Date d'inscription   Statut Membre Dernière intervention   24
 
Commence par tester
return $mavariable;

Au lieu de
return($mavariable)
;

Je ne suis pas sûr que ta syntaxe fonctionne mais je me trompe peut-être..
0
letrancheur Messages postés 210 Date d'inscription   Statut Membre Dernière intervention   7
 
merci mais nn cela ne fonctionne pas :s cela me retourn la valeur que j'avais donnée à $pseudo lorsque je l'avais initialisé.
0
letrancheur Messages postés 210 Date d'inscription   Statut Membre Dernière intervention   7
 
mais merci ça m'as permis de remarquer que j'avais oublié de mettre une ligne dans le code que je vous montre :p
0