yvannb Posté 19 Août 2009 Posté 19 Août 2009 (modifié) Bonjour a tous ! Je me présente, je suis webmaster amateur et je travail sur la création de différents sites généralement en rapport avec la sonorisation. Comme le titre l'indique j'ai un problème avec un script de news et l'affichage en include. Je vous expose mon problème : J'ai utilisé un script de news (VRNews v.1.1.1) que j'ai partiellement modifié pour mon site. Donc un dossier news contenant un fichier config.php et un dossier admin protégé. A la racine de mon site j'ai mes différentes pages (index.php,news.php,...) Ma page index.php est construite comme suit: <?php include("header.php");?><?php include("menu1.php");?><?php include("menu2.php");?><?php if ($_GET['page'] == "home") { include("home.php"); } elseif ($_GET['page'] == "news") { include("news.php"); } elseif ($_GET['page'] == "contact") { include("contact.php"); } (...) else { include ("home.php") ; }?><?php include("footer.php");?> Mon script est donc directement dans ma page news.php Mon problème est que quand j'affiche directement news.php, tout fonctionne parfaitement et quand je passe par ma page index.php donc par une include ma page s'affiche correctement jusqu'à l'instruction d'include de ma page news et m'affiche Désolé, une erreur s'est produite sur la base de données. donc mes news de s'affiche pas et de plus mon footer ne s'affiche pas, non plus. voici enfin le code de ma page news.php <td valign="top" width="606"> <table align="center" cellpadding="0" cellspacing="0" height="10"> <tbody> <tr> <td></td> </tr> </tbody> </table> <table align="center" cellpadding="0" cellspacing="0"> <tbody> <tr> <td bgcolor="#5e5e5e" width="605"> <div class="titre">News</div> </td> <td bgcolor="#2d2d2d" width="1"></td> </tr> </tbody> </table> <?php$fichierins="news/install.php";if(file_exists($fichierins)){ include('news/install.php');}else{require('news/config.php');echo'<html><head> <LINK media="screen" href="news.css" type="text/css" rel="stylesheet"></head> <body><div align="center">';if ($_GET['page']=="") $page = 1;else $page = $_GET['page']; $firstnews = ($page - 1) * $maxnews;$requetebdnbnews = mysql_query("SELECT * from ".$prefixetab."news") or die ($errormessage); $nbnewstotal=mysql_numrows($requetebdnbnews);$requetebd = mysql_query("SELECT * from ".$prefixetab."news order by id desc LIMIT ".$firstnews.", ".$maxnews."") or die ($errormessage); while($data = mysql_fetch_array($requetebd)){ if($data[lien]=="/") $link="<i>Aucun</i>"; else $link="<a href=\"$data[lien]\" target=\"_blank\">$data[nomlien]</a>"; if($data[email]=="") $linkmail=$data[auteur]; else $linkmail="<a href=\"mailto:$data[email]\">$data[auteur]</a>";echo"<table width=\"$largeur\" border=\"0\"> <tr> <td><font class=\"titre\" colspan=\"2\">$data[titre]</font></td> </tr> <tr> <td colspan=\"2\"><hr color=\"$linecolor\"></td> </tr> <tr> <td colspan=\"2\"><DIV class=postBy>Postée par $linkmail le $data[date] à $data[heure]</div></td> </tr> <tr> <td colspan=\"2\"></td> </tr> <tr> <td colspan=\"2\"> <p class=\"text\"> <font size=\"1\">$data[texte]</font> </p> </td> <tr> <td colspan=\"2\"><hr color=\"$linecolor\"></td> </tr> <tr> <td halign=\"left\"> </td> <td> <font class=\"text\"><div align=\"right\">Lien associé : $link</div></font> </td> </tr></table> <br><br><br>"; } echo "<font class=\"texte\">Il y a en tout $nbnewstotal news sur le site<br><br></font>"; $nbpage=($nbnewstotal/$maxnews);if($nbpage>1){ $nbpage=ceil($nbpage); echo'<font class="texte">Passer à la page '; $id1=1; $id2=$maxnews; $i=1; while($i<=$nbpage) { echo"<a href=\"?page=$i\">$i</a> "; if($i<$nbpage) echo'- '; $i++; }echo'</font>';} echo"</div></body> </html>"; } ?> </td> <td bgcolor="#2d2d2d" width="1"></td> </tr> </tbody> </table> </td> <td valign="top" width="20"> </td> </tr> </tbody></table> j'espère avoir été suffisamment explicite et vous remercie de votre aide Modifié 19 Août 2009 par yvannb
Portekoi Posté 19 Août 2009 Posté 19 Août 2009 Bonjour, Peux tu être plus précis? A quelle ligne cela plante t il dans le fichier news? Déjà, essaie d'utiliser les chemins en absolus, cela sera bien plus simple pour la suite <? include("/news/news.php"); ?> Portekoi
yvannb Posté 19 Août 2009 Auteur Posté 19 Août 2009 Bonjour ! Premièrement merci de ta réponse rapide. J'ai éditer le fichier index.php car désormais pour que ma structure de dossier soit comme le reste le fichier news.php ce trouve a la racine. Je ne sais pas vraiment a quelle ligne est ce que sa ne joue pas. En affichant directement la page news.php j'ai ma page de news correctement affiché sans le style CSS mais une fois que je passe pas l'include mon navigateur affiche "Désolé, une erreur s'est produite sur la base de données." et mon footer (qui est inclut en fin de page index.php) ne s'affiche pas du tout
Portekoi Posté 19 Août 2009 Posté 19 Août 2009 j'avais bien compris mais le travail d'un programmeur passe par le débug. Donc, dans le fichier news.php, ajoute un "echo "coucou1";" juste avant la requête Fais de même juste après en affichant un "echo "coucou2";" Et voit si le second s'affiche et ainsi de suite. Ton fichier de connexion est il bien placé?
yvannb Posté 19 Août 2009 Auteur Posté 19 Août 2009 (modifié) Voilà j'ai truffé mon fichier news.php d'echo et le problème semble commencer dès if ($_GET['page']=="")$page = 1;else$page = $_GET['page'];$firstnews = ($page - 1) * $maxnews;$requetebdnbnews = mysql_query("SELECT * from ".$prefixetab."news") or die ($errormessage);$nbnewstotal=mysql_numrows($requetebdnbnews);$requetebd = mysql_query("SELECT * from ".$prefixetab."news order by id desc LIMIT ".$firstnews.", ".$maxnews."") or die ($errormessage);while($data = mysql_fetch_array($requetebd)){if($data[lien]=="/")$link="<i>Aucun</i>";else$link="<a href=\"$data[lien]\" target=\"_blank\">$data[nomlien]</a>";if($data[email]=="")$linkmail=$data[auteur];else$linkmail="<a href=\"mailto:$data[email]\">$data[auteur]</a>";echo"<table width=\"$largeur\" border=\"0\"><tr><td><font class=\"titre\" colspan=\"2\">$data[titre]</font></td></tr><tr><td colspan=\"2\"><hr color=\"$linecolor\"></td></tr><tr><td colspan=\"2\"><DIV class=postBy>Postée par $linkmail le $data[date] à $data[heure]</div></td></tr><tr><td colspan=\"2\"></td></tr><tr><td colspan=\"2\"><p class=\"text\"><font size=\"1\">$data[texte]</font></p></td><tr><td colspan=\"2\"><hr color=\"$linecolor\"></td></tr><tr><td halign=\"left\"> </td><td><font class=\"text\"><div align=\"right\">Lien associé : $link</div></font></td></tr></table><br><br><br>";}echo "<font class=\"texte\">Il y a en tout $nbnewstotal news sur le site<br><br></font>";$nbpage=($nbnewstotal/$maxnews);if($nbpage>1){$nbpage=ceil($nbpage);echo'<font class="texte">Passer à la page ';$id1=1;$id2=$maxnews;$i=1;while($i<=$nbpage){echo"<a href=\"?page=$i\">$i</a> ";if($i<$nbpage)echo'- ';$i++;}echo'</font>';}echo"</div></body></html>";}?> EDIT: en plaçant un echo juste avant la première ligne ci-dessus, le texte de l'echo apparait au début du message d'erreur provenant du script Modifié 19 Août 2009 par Portekoi
Portekoi Posté 19 Août 2009 Posté 19 Août 2009 Donc cela plante sur : $requetebdnbnews = mysql_query("SELECT * from ".$prefixetab."news") or die ($errormessage); Il faut savoir où sa plante sinon, je ne peux rien faire pour toi.
yvannb Posté 19 Août 2009 Auteur Posté 19 Août 2009 Sincèrement je ne vois pas ou cette ligne plante. En lançant directement news.php sa fonctionne très bien mais en passant par l'include de index.php sa plante. J'ai quand même essayé de changer $prefixetab et sa me marque le même message d'erreur que dans l'include en lançant uniquement news.php donc cela voudrais dire que depuis l'include le script ne trouve pas la BDD ?? je ne comprend pas bien
Portekoi Posté 19 Août 2009 Posté 19 Août 2009 Bon, A la place de ceci : $requetebdnbnews = mysql_query("SELECT * from ".$prefixetab."news") or die ($errormessage); mets cela : echo "SELECT * from ".$prefixetab."news" . " Ok, tout va bien ici";$requetebdnbnews = mysql_query("SELECT * from ".$prefixetab."news") or die ($errormessage); Et dis moi se que tu vois à l'écran...
yvannb Posté 19 Août 2009 Auteur Posté 19 Août 2009 en passant par l'include "SELECT * from vr_news Ok, tout va bien iciDésolé, une erreur s'est produite sur la base de données."
Portekoi Posté 19 Août 2009 Posté 19 Août 2009 Ok, maintenant même chose avec ceci : echo "SELECT * from ".$prefixetab."news" . " Ok, tout va bien ici";$requetebdnbnews = mysql_query("SELECT * from ".$prefixetab."news") or die ("Erreur sur la base donnée : " . mysql_error());
yvannb Posté 19 Août 2009 Auteur Posté 19 Août 2009 sa ne change rien au message "SELECT * from vr_news Ok, tout va bien iciDésolé, une erreur s'est produite sur la base de données."
tisha_carpenter Posté 19 Août 2009 Posté 19 Août 2009 elseif ($_GET['page'] == "news") { include("news.php"); } Donc, $_GET['page'] contiendra "news" lors de l'include de "news.php". Dans "news.php" l'on peut lire if ($_GET['page']=="") $page = 1;else $page = $_GET['page']; $firstnews = ($page - 1) * $maxnews; Comme $_GET['page'] contient "news", alors $firstnews sera un négatif (-$maxnews) et je doute que MySQL aime une limite négative.
yvannb Posté 19 Août 2009 Auteur Posté 19 Août 2009 (modifié) Comme $_GET['page'] contient "news", alors $firstnews sera un négatif (-$maxnews) et je doute que MySQL aime une limite négative. j'ai donc remplacé par if ($_GET['page']=="news") donc quand j'affiche directement news.php cela me donne la fameuse erreur mais en passant par l'include sa fonctionne parfaitement ! Sincèrement merci pour votre aide EDIT: Je me permet juste de vous demander encore une petite chose tant que j'y suis. J'aimerais utiliser un script sur ma page d'accueil qui afficherais les titres de mes 2 dernières news. Comment devrais-je procéder ? merci encore pour votre aide Modifié 19 Août 2009 par yvannb
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant