Problème de fonction [PHP/MYSQL]

Eléphanteau du PHP | 12 Messages

09 mars 2012, 13:53

Bonjour,

Toujours dans mon auto formation, dur dur mais ça avance ....
La j'ai un problème au niveau de mes fonctions, je les ais regroupées dans un seul fichier "Fonction.php", mon soucis c'est qu'une fonction fonctionne parfaitement, celle-ci :
function LastArticle()
{
require_once('dbconn.inc');
$reponse = $conn->query("SELECT Date, Titre, Texte, Image FROM articles ORDER BY id DESC LIMIT 0,10");

while ($donnees = $reponse->fetch_array())
{
$date = new DateTime($donnees['Date']);
$Texte= html_entity_decode($donnees['Texte']); // on decode le html de la base de donnée
$Titre = $donnees['Titre'];
$image = $donnees['Image'];

echo  htmlspecialchars($date->format(' \L\e d / m / Y')) . '<h1>' . htmlspecialchars($donnees['Titre']) .'</h1>
</div><p><img src="images/'. htmlspecialchars($donnees['Image']) .'" width="300" height="200" alt="" 
style="float:right;padding:0 0 0 20px" /><br />'. $Texte .'</p>';
}
Mais une autre identique me donne un problème, c'est celle ci :
function OldArticles()
{
require_once('dbconn.inc');
$reponse = $conn->query("SELECT Date, Titre, Texte, Image FROM articles ORDER BY id DESC LIMIT 0,1");

while ($donnees = $reponse->fetch_array())
{
$date = new DateTime($donnees['Date']);
$Texte= html_entity_decode($donnees['Texte']); // on decode le html de la base de donnée

echo  htmlspecialchars($date->format(' \L\e d / m / Y')) . '<h1>' . htmlspecialchars($donnees['Titre']) .'</h1>
</div><p><img src="images/'. htmlspecialchars($donnees['Image']) .'" width="58" height="39" alt="" 
style="float:left;padding:0 0 0 20px" /><br />'. $Texte .'</p>';
}
}
L'erreur est la suivante :
Notice: Undefined variable: conn in D:\wamp\www\MiniForum\fonctions.php on line 8
La variable $conn est contenue dans le fichier dbconn.inc et correspond à ma connection à la base de donnée. Je ne comprend pas pourquoi ça fonctionne parfaitement dans la première fonction et pas dans la deuxième....

Merci de votre aide :D

ViPHP
xTG
ViPHP | 7331 Messages

09 mars 2012, 14:48

Cela doit venir de l'instruction require_once().
Elle permet de ne pas réinclure un fichier préalablement inclus.
Sauf que du fait de la portée des variables la variable $conn n'est pas disponible dans la fonction.

Il serait mieux d'inclure ce fichier en dehors de toute fonction.
Et de passer en global la variable $conn.

Exemple :
$maVar = 1;
function affichage(){
  global $maVar;
  echo $maVar;
}

Eléphanteau du PHP | 12 Messages

09 mars 2012, 15:09

Merci xTG, =D>

Ca fonctionne en déclarant ma variable $conn en globale en début de page, j'aurais une autre question à poser :

Peut on déclarer un include :
include ('dbconn.inc');
en global aussi afin de ne pas le ré inclure dans les fonctions à chaque fois?

Merci

ViPHP
xTG
ViPHP | 7331 Messages

09 mars 2012, 16:45

Dans un site on a généralement un fichier qui quelque soit la page est chargé.
Un fichier de configuration qui contient généralement au moins les identifiants BDD par exemple.
A toi d'adapter ta structure de site pour avoir quelque chose de fonctionnel. ;)

Car sinon ce que tu demandes n'existe pas. C'est à toi de le faire.