PHP problème de return dans les fonctions

Résolu/Fermé
Leinox Messages postés 225 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 2 septembre 2015 - 14 juin 2012 à 15:03
Leinox Messages postés 225 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 2 septembre 2015 - 14 juin 2012 à 16:18
Bonjour,

je suis encore débutant en php et je me heurte à un soucie d'une fonction qui ne me retourne rien...

Je vous met tout le code nécessaire, il y a des include, mais ils fonctionnent parfaitement, de même pour mes variables qui contiennent toutes les bonnes valeurs... sauf la variable de return...

log_test.php


<?php
session_start(); // On démarre la session
// entête et menu de navigation
include("../header/tophead.php");
include("../nav_menu/nav_log.php");
?>
<!DOCTYPE html>
<html>
    <head>
// mon entête commune a toutes mes autres pages
        <?php include '../functions/include_head.php'; ?>
        <title>Validation</title>
    </head>
    <body>
                <?php
                // verification de la presence de $_post et recuperation des variables
                if (!empty($_POST))
                {
                    include ('../functions/function_log.php'); //php contenant ma fonction
                    $table1 = 'sc_users'; // nom de ma table user
                    $table2 = 'sc_groupes'; // nom de ma table groupe
                    $retour_log_test = array(); // je définie cette variable comme étant un array vide
                    var_dump($retour_log_test = (log_test($table1, $table2))); // execute la fonction, retourne le resultat dans un variable (hum...) et affiche ce résultat
                    var_dump($retour_log_test); // affiche a nouveau la valeur de mon retour de ma fonction... si possible...
                    
                }
                else
                {
                    echo "header('Location: ./log_fail.php')"; // mis le renvoie en echo pour pas me faire éjecter de ma page en permanence...
                }
               // suite du code avec traitement des données sensément récupérés en retour de fonction...
    </body>
</html>



function_log.php


<?php

function log_test ($userstable, $groupestable) // pour me connecter a ma db et récupérer mes données
{
    if (!empty($userstable) && !empty($groupestable))
    {
        $log_test_login_sql = 'SELECT nickname, sc_password FROM '.$userstable.' '; // préparation de ma requete pour la table user
        $log_test_groupes_sql ='SELECT idsc_groupes from '. $groupestable. ' '; // préparation de la requete pour la table group
        include '../protect_folder/sql_connect.php'; // ici se fait la connexion a la base de données
        $log_test_login_data = mysql_query($log_test_login_sql) or die(mysql_error()); // passage de ma requete pour user
        $log_test_groupes_data = mysql_query($log_test_groupes_sql) or die(mysql_error()); // passage de ma requete pour group
        mysql_close(); // fermeture de la connexion
        log_test_table ($log_test_login_data, $log_test_groupes_data); 
    }
    else        echo "header('Location: ./log_fail.php')"; // mis le renvoie en echo pour pas me faire éjecter de ma page en permanence...
}

function log_test_table ($log_data, $group_data) // pour transformer ma donnée en tableau et la renvoyer
{
    if (!empty($log_data) && !empty($group_data))
    {
        while ($log_data_table = mysql_fetch_assoc($log_data)) // je créais mon tableau pour user
        {
            $log_data_compare[] = $log_data_table;
        }
        while ($group_data_table = mysql_fetch_assoc($group_data)) // je créais mon tableau pour group
        {
            $group_data_compare[] = $group_data_table;
        }
        $retour_log_group_compare = array($log_data_compare, $group_data_compare); // je place dans un tableau mes deux tableaux
        echo 'toto';
        var_dump($retour_log_group_compare); // affiche le contenu de ma variable entre "toto" et "/toto" pour etre sur de l'emplacement de cette affichage
        echo '/toto';
        return true; // devrait renvoyer vrai si tout se passe bien
     }
     else
     {
         echo "header('Location: ./log_fail.php')";
         return false; // devrait renvoyer faux en cas de soucie
     }
}




Affiché sur ma page j'ai mes balises toto et entre elle le tableau que j'attend.
en dessous j'ai affiché le message

NULL

comme quoi ma variable, pleine juste avant ma fonction return, est maintenant vide...

A l'origine je souhaitais renvoyer un tableau multi-dimensionnel... mais vu que je n'arrive même pas a renvoyer un booléen...
A voir également:

2 réponses

Utilisateur anonyme
14 juin 2012 à 16:09
Bonjour,

Tu écris
$retour_log_test = (log_test($table1, $table2)
Mais la fonction log_test ne renvoie aucune valeur : il n'y a aucun return dans cette fonction !
Si tu veux qu'elle te renvoie quelque chose, il faut que tu mettes return qqchose, ce que tu as bien fait pour la fonction log_test_table
0
Leinox Messages postés 225 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 2 septembre 2015 29
14 juin 2012 à 16:16
2 jours que je cherche et la solution est évidente. Merci le père !
0
Leinox Messages postés 225 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 2 septembre 2015 29
14 juin 2012 à 16:18
Comme indiqué par le père, je ne récupère pas le return de la bonne fonction.

Je pense merger mes fonctions afin d'aller au plus simple, afin d'avoir mon return dans la fonction log_test.

Encore merci a le père et au forum de ccm !

0