Return ($variable) ne la renvoie pas

Résolu/Fermé
letrancheur Messages postés 210 Date d'inscription dimanche 14 juillet 2013 Statut Membre Dernière intervention 25 août 2020 - Modifié par letrancheur le 17/04/2015 à 21:33
letrancheur Messages postés 210 Date d'inscription dimanche 14 juillet 2013 Statut Membre Dernière intervention 25 août 2020 - 17 avril 2015 à 22:01
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
17 avril 2015 à 21:51
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 dimanche 14 juillet 2013 Statut Membre Dernière intervention 25 août 2020 7
17 avril 2015 à 22:00
ok merci je vais essayer cela :)
0
letrancheur Messages postés 210 Date d'inscription dimanche 14 juillet 2013 Statut Membre Dernière intervention 25 août 2020 7
17 avril 2015 à 22:01
merci beaucoup cela fonctionne
0
Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017 24
Modifié par Yuh12 le 17/04/2015 à 21:25
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 dimanche 14 juillet 2013 Statut Membre Dernière intervention 25 août 2020 7
17 avril 2015 à 21:33
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 dimanche 14 juillet 2013 Statut Membre Dernière intervention 25 août 2020 7
17 avril 2015 à 21:34
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