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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Requête SQL dans une fonction -> ça plante !

Re: Requête SQL dans une fonction -> ça plante !

par Yunge » 14 déc. 2012, 23:45

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

Re: Requête SQL dans une fonction -> ça plante !

par xTG » 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;
  // ...
}

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

par Yunge » 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 ;)