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...
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