[RESOLU] Requête SQL dans une fonction -> ça plante !

Eléphanteau du PHP | 11 Messages

13 déc. 2012, 18:48

Bonjour,

J'aurais encore une fois besoin de votre précieuse aide concernant un problème que je rencontre.
Avant d'exposer mon problème, voici l'arborescence actuelle de mon projet :
(Si d'ailleurs vous avez des suggestions/conseils concernant celle-ci, car elle me paraît très peu stable, je suis preneur !)
  • La page index.php de mon projet charge la page header.php avec un require().
  • La page header.php de mon projet charge les pages mysql.php permettant la connexion à la bdd et functions.php contenant mes différentes fonctions.
  • La page functions.php, elle même, charge aussi la page mysql.php afin de pouvoir effectuer des requêtes SQL dans mes fonctions
  • La page index.php charge dynamiquement, grâce à jquery, la page lessons.php qui applique les fonctions qui concernent mon problème
Dîtes-moi si jamais ce n'est pas clair, mais il me semble que les deux seuls fichiers qui nous intéressent sont les fichiers lessons.php et functions.php.
Il se trouve que j'ai créé deux fonctions get_date() et get_name() dont je me sers dans le fichier lessons.php :
<p>
Par
<?php get_name($d['latest_editor']); ?> // $d['latest_editor'] renvoyant l'id du posteur
,
<?php get_date($d['latest_edit']);?>// $d['latest_edit'] renvoyant la date du post
</p>
Voilà mon fichier functions.php :
<?php


function get_date($datetime)
{
    $date = new DateTime ($datetime);
    echo " Le " . $date->format('d/m/Y à H:i:s');
}

function get_name($id)
{
        $userquery = $bdd->query('SELECT name FROM l_students WHERE id=' . $id);
        $userdata = $userquery->fetch(); 
        echo $userdata['name'];
}

?>
Lorsque je teste tout ça, le projet plante. J'ai fais de nombreux tests pour déterminer l'origine du problème, et il se trouve qu'il vient de la requête SQL.
La fonction get_date() marche parfaitement, mais la fonction get_name() fait tout planter dès lors qu'elle contient une requête SQL !

Je bloque complètement ! Un problème au niveau de l'appel mysql ?

Merci d'avance pour votre aide!
Bonne soirée ;)

ViPHP
xTG
ViPHP | 7331 Messages

13 déc. 2012, 19:50

Problème de portée de variable.
$bdd n'existe pas dans la fonction.
Il faut soit la passer en paramètre, soit la déclarer global.
function foo($arg, $bdd){
 // ...
}
// ou
function foo($arg){
  global $bdd;
  // ...
}

Eléphanteau du PHP | 11 Messages

14 déc. 2012, 23:45

C'est parfait, merci, j'y penserai dorénavant ! :)
Bonne soirée