Aller au contenu

Problème script news et include


Sujets conseillés

Posté (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é par yvannb
Posté

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

Posté

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

Posté

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é?

Posté (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é par Portekoi
Posté

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.

Posté

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

Posté

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

Posté

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

Posté

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());

Posté

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

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

Posté (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é par yvannb

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...