[PHP] Return d'une valeur a réutiliser

Statut
La discussion n'est pas ouverte à d'autres réponses

Roooh

Membre
Salut à vous tous les copains, c'est encore moi qui fait des boulettes.

j'ai un certain return dans une fonction, et je n'arrive pas à le réutiliser la ligne suivante ...

Mon premier fichier


if (isset($_POST['ajouter_question'])) {

// On récupère les valeurs voulu
$competence = $_POST['ajout_competence_q'];
$technologie = $_POST['ajout_technologie_q'];
$theme = $_POST['ajout_theme_q'];
$question = $_POST["ajout_question"];

// Ajout de la question dans la DB
ajoutQuestion($competence, $technologie, $theme, $question);



if(isset($_POST['reponse_1'])){ // On vérifie si il existe une réponse
$reponse = $_POST['reponse_1'];
if(isset($_POST['statut_rep1'])){ // On vérifie si elle est vraie ou fausse
$statut = '1'; // Vrai
}
else{ // Si décochée
$statut = '0'; // Faux
}
ajoutReponse($reponse, $statut, $idQuestionFinal); // On ajoute la reponse, avec son statut, et l'id de la question en relation
}

}


Et le second

Code:
function ajoutQuestion($competence, $technologie, $theme, $question) {
    // On ajoute la question a la DB
    $sql = "INSERT INTO `question`(`No_question`, `lib_question`, `No_theme`, `No_technologie`, `No_competence`) VALUES ('','" . $question . "','" . $theme . "','" . $technologie . "','" . $competence . "')";
    $con = connexion();
    $req = mysqli_query($con, $sql) or die("La question n'a pas pu être ajouté");


    // On récupere le No de la question créée
    $sql2 = "SELECT No_question FROM `question` WHERE lib_question='" . $question . "'";
    $req_idQuestion = mysqli_query($con, $sql2) or die("Le SELECT de l'id de la question a échoué");
    $idQuestion = mysqli_fetch_assoc($req_idQuestion);
    $idQuestionFinal = $idQuestion['No_question'];
     
    return $idQuestionFinal;
}

le navigateur me dit : Undefined variable: idQuestionFinal in on line
Je comprends pas :(
Pourtant quand je fais un echo $idQuestionFinal DANS la fonction, la valeur s'affiche correctement
 
Dernière édition:
Salut, de ce que j'en comprends c'est normal, la portée des variables d'une fonction est dite "locale" et ne s’étend donc qu'à la fonction. Pour pouvoir l'utiliser en dehors de celle ci tu dois la déclarer en tant que variable globale, cette page te l'expliquera mieux que moi
http://php.net/manual/fr/language.variables.scope.php


donc théoriquement

PHP:
function ajoutQuestion($competence, $technologie, $theme, $question) {   
 // On ajoute la question a la DB    
$sql = "INSERT INTO `question`(`No_question`, `lib_question`, `No_theme`, `No_technologie`, `No_competence`) VALUES ('','" . $question . "','" . $theme . "','" . $technologie . "','" . $competence . "')";    
$con = connexion();    
$req = mysqli_query($con, $sql) or die("La question n'a pas pu être ajouté");

    // On récupere le No de la question créée    
$sql2 = "SELECT No_question FROM `question` WHERE lib_question='" . $question . "'";    
$req_idQuestion = mysqli_query($con, $sql2) or die("Le SELECT de l'id de la question a échoué");    
$idQuestion = mysqli_fetch_assoc($req_idQuestion);    
global $idQuestionFinal;    
 $idQuestionFinal = $idQuestion['No_question'];         
return $idQuestionFinal;
}

devrait régler ton probleme
 
Dernière édition:
Merci de ta réponse l'ami !

Le problème venait du stockage de la fonction :)


if (isset($_POST['ajouter_question'])) {

// On récupère les valeurs voulu
$competence = $_POST['ajout_competence_q'];
$technologie = $_POST['ajout_technologie_q'];
$theme = $_POST['ajout_theme_q'];
$question = $_POST["ajout_question"];

// Ajout de la question dans la DB
$idQuestionFinal = ajoutQuestion($competence, $technologie, $theme, $question);

if($_POST['reponse_1']==! ''){ // On vérifie si il existe une réponse
$reponse = $_POST['reponse_1'];
if(isset($_POST['statut_rep1'])){ // On vérifie si elle est vraie ou fausse
$statut = '1'; // Vrai
}
else{ // Si décochée
$statut = '0'; // Faux
}
ajoutReponse($reponse, $statut, $idQuestionFinal); // On ajoute la reponse, avec son statut, et l'id de la question voulu
}
}
 
Statut
La discussion n'est pas ouverte à d'autres réponses
Retour
Haut