le 28/05/2010 à 14:56
Kniva
Bonjour,
dans le cadre de mon stage de fin d'année, je suis amenée a faire une site web pour une libraire. Pour que les pages web soient plus lisibles, j'ai choisi de faire une pagination. Or, je rencontre un problème.
Voici mon code:
Quand je vais sur le site, car il est en ligne, je tombe sur ce message d'erreur:
Aucune réponse trouvéeErreur SQL!
SELECT dvdTitre, dvdDate, dvdEditeur, dvdDescription, dvdImage FROM DVD ORDER BY dvdDate DESC0,1
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DESC0,1' at line 1
Je suis presque sûr que mon erreur vient de cette ligne
mais je ne vois pas ce qu'il faut changer.
Pourriez vous m'éclairer? Merci beaucoup
dans le cadre de mon stage de fin d'année, je suis amenée a faire une site web pour une libraire. Pour que les pages web soient plus lisibles, j'ai choisi de faire une pagination. Or, je rencontre un problème.
Voici mon code:
<HTML>
<HEAD>
<TITLE> Hon'Ya Manga DVD/CD </TITLE>
<link rel="shortcut icon" type="image/png" href="favicon.png" />
<LINK type="text/css" rel="stylesheet" href="styles.css">
<SCRIPT LANGUAGE="JavaScript">
var aujourdhui=new Date()
var heure=aujourdhui.getHours()
var minutes=aujourdhui.getMinutes()
var salutation
//De 1h du matin jusqu'à midi (non compris), c'est le matin
if (heure<=11)
{
salutation="Bonjour!"
}
//De midi à 17heures, c'est l'après midi
else if (heure > 11 && heure <18)
{
salutation="Bon après-midi!"
}
//De 18heures à 20 heures, c'est le soir
else if (heure > 17 && heure <21)
{
salutation="Bonne soirée!"
}
//De 21heures à minuit, c'est la nuit
else if (heure >20)
{
salutation="Bonne nuit!"
}
//Les minutes sont affichées sur 2chiffres. ON ajoute donc un 0 à tte valeur inférieure à 10.
if (minutes<10)
{
minutes="0"+minutes
}
document.write(salutation+"\nIl est "+ heure+"h"+minutes);
function popup(page) {
window.open(page,'popup','width=500,height=400,toolbar=false,scrollbars=false');
}
function popop(page) {
window.open(page,'popup','width=500,height=300,toolbar=false,scrollbars=false');
}
</SCRIPT>
<?php
function barre_naviguation($nb_total, $nb_affichage_par_page, $debut, $nb_liens_ds_la_barre)
{
$barre='';
/*on récupère l'URL courante munie de ses paramètres auxquels on ajoute le paramètre 'début' qui jouera le rôle du premier élément
de notre LIMIT*/
if($_SERVER['QUERY_STRING']== "")
{
$query=$_SERVER['PHP_SELF'].'?debut=';
}
else
{
$tableau=explode("debut=", $_SERVER['SUERY_STRING']);
$nb_element=count($tableau);
if($nb_element==1)
{
$query=$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&debut=';
}
else
{
if($tableau[0]=="")
{
$query=$_SERVER['PHP_SELF'].'?debut=';
}
else
{
$query=$_SERVER['PHP_SELF'].'?'.$tableau[0].'debut=';
}
}
}
//on calcule le numéro de la page active
$page_active=floor(($debut/$nb_affichage_par_page)+1);
//on calcule le nombre de pages totales que va prendre notre affichage
$nb_pages_tolal=ceil($nb_total/$nb_affichage_par_page);
//on calcule le premier numero qui va s'afficher, ainsi que le dernier($cpt_deb et $cpt_fin)
if($nb_liens_ds_la_barre%2==0)
{
$cpt_deb1=$page_active-($nb_liens_ds_la_barre/2)+1;
$cpt_fin1=$page_active+($nb_liens_ds_la_barre/2);
}
else
{
$cpt_deb1=$page_active-floor(($nb_liens_ds_la_barre/2));
$cpt_fin1=$page_active+floor(($nb_liens_ds_la_barre/2));
}
if($cpt_deb1<=1)
{
$cpt_deb=1;
$cpt_fin=$nb_liens_ds_la_barre;
}
elseif($cpt_deb1>1 && $cpt_fin1<$nb_pages_total)
{
$cpt_deb=$cpt_deb1;
$cpt_fin=$cpt_fin1;
}
else
{
$cpt_deb=($nb_pages_total-$nb_liens_ds_la_barre)+1;
$cpt_fin=$nb_pages_total;
}
if($nb_pages_total<=$nb_liens_ds_la_barre)
{
$cpt_deb=1;
$cpt_fin=$nb_pages_total;
}
//si les premier numéro qui s'affiche est différent de 1, on affiche << qui sera un lien vers la premiere page
if($cpt_deb!=1)
{
$cible=$query.(0);
$lien='<a href=" ' .$cible. ' "><<</a> ';
}
else
{
$lien='';
}
$barre .=$lien;
//on affiche ts les liens ds notre barre, tt en vérifiant de ne pas mettre de lien pr la page active
for($cpt=$cpt_deb;$cpt_fin;$cpt++)
{
if($cpt==$page_active)
{
if($cpt==$nb_pages_total)
{
$barre .=$cpt;
}
else
{
$barre .=$cpt.'  ';
}
}
else
{
if($cpt==$cpt_fin)
{
$barre .="<a href=' ".$query.(($cpt-1)*$nb_affichage_par_page);
$barre .="'>".$cpt."</a> - ";
}
}
}
$fin=($nb_total-($nb_total%$nb_affichage_par_page));
if(($nb_total%$nb_affichage_par_page)==0)
{
$fin=$fin-$nb_affichage_par_page;
}
/*si $cpt_fin ne vaut pas la dernière page de la barre de naviguation, on affiche un >> qui sera un lien vers la dernière page
de naviguation.*/
if($cpt_fin!=$nb_pages_total)
{
$cible=$query.$fin;
$lien=' <a href="' .$cible. '">>></a>';
}
else
{
$lien='';
}
$barre .=$lien;
return $barre;
}
?>
</HEAD>
<BODY bgcolor="#9FB6CD">
<CENTER>
<div id="conteneur">
<TABLE class="page"border="0" cellspacing="0" cellpadding="0">
<TR >
<TD><img src="avant.png"><a href="login.php"onMouseOver="document.img_7.src='sidentifier1.png';"
onMouseOut="document.img_7.src='sidentifier.png';">
<img class="img" name="img_7" src="sidentifier.png"> </a></TD>
</TR>
<TR style="background-image: url(fondbann.png)" height="192"class="bann">
<TD align="center" valign="bottom"><table border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="bottom"><img src="ideelogo.png"><IMG src="favicon1.png"><img src="bannierepersoconnu3.png"></td>
</tr>
<tr>
<td align="center" valign="bottom"><img src="adresse.png"></td>
</tr>
</table></TD>
</TR>
<TR align="center"style="background-image: url(fondmenu.png)" height="117">
<TD valign="top">
<TABLE border="0" cellspacing="0" cellpadding="0">
<TR>
<TD><a href="index.html"
onMouseOver="document.img_1.src='index1.png';"
onMouseOut="document.img_1.src='index.png';">
<img class="img" name="img_1" src="index.png"> </a></TD>
<TD><IMG src="favicon1.png"></TD>
<TD><a href="mangas.php"
onMouseOver="document.img_2.src='mangas1.png';"
onMouseOut="document.img_2.src='mangas.png';">
<img class="img" name="img_2" src="mangas.png"> </a></TD>
<TD><IMG src="favicon1.png"></TD>
<TD><a href="DVD.php"
onMouseOver="document.img_3.src='dvdcd1.png';"
onMouseOut="document.img_3.src='dvdcd.png';">
<img class="img" name="img_3" src="dvdcd.png"> </a></TD>
<TD><IMG src="favicon1.png"></TD>
<TD><a href="goodies.php"
onMouseOver="document.img_4.src='goodies1.png';"
onMouseOut="document.img_4.src='goodies.png';">
<img class="img" name="img_4" src="goodies.png"> </a></TD>
<TD><IMG src="favicon1.png"></TD>
<TD><a href="news.php"
onMouseOver="document.img_6.src='nouveautes1.png';"
onMouseOut="document.img_6.src='nouveautes.png';">
<img class="img" name="img_6" src="nouveautes.png"> </a></TD>
<TD><IMG src="favicon1.png"></TD>
<TD><a href="contact.html"
onMouseOver="document.img_5.src='contact1.png';"
onMouseOut="document.img_5.src='contact.png';">
<img class="img" name="img_5" src="contact.png"> </a></TD>
</TR>
</TABLE>
</TD>
</TD>
</TR>
<TR style="background-image: url(fondreste.png)" height="671" valign="top">
<TD>
<TAble border="0" cellspacing="0" cellpadding="0" align="center">
<TR valign="top">
<TD align="left"><a href="DVD.php"><IMG src="dvd.png"></a></TD>
<TD align="right"><a href="CD.php"><IMG src="cd.png"></a></TD>
</TR>
<TR >
<TD>
<?php
include("inf.php");
//on se connecte à notre base
$base=mysql_connect(SERVER,LOGIN,MDP);
mysql_select_db(BDD,$base);
/*on prépare une requête permettant de calculer le nbre total d'éléments qu'il faudra afficher sur
nos différentes pages*/
$sql='SELECT dvdTitre, dvdDate,dvdEditeur, dvdImage, dvdDescription FROM DVD';
//on exécute cette requête
$resultat=mysql_query($sql,$base) or die ('Erreur SQL!<br/>'.$sql.'<br/>'.mysql_errror());
//on récupère le nombre d'élements à afficher
$nb_total=mysql_fetch_array($resultat);
//on teste si ce nombre ne vaut pas 0
if(($nb_total=$nb_total[0])==0)
{
echo"Aucune réponse trouvée";
}
else
{
echo'<table>
<tr><td>dvdTitre</td><td rowspan="4">dvdImage</td></tr>
<tr><td>dvdDate</td></tr>
<tr><td>dvdEditeur</td></tr>
<tr><td>dvdDescription</td></tr>
</table>';
}
/*sinon, on regarde si la variable $debut ( le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on
l'initialise à 0.*/
if(!isset ($_GET['debut']))
{
$_GET['debut']=0;
$nb_affichage_par_page=1;
//preparation de la requete avec le LIMIT
$sql='SELECT dvdTitre, dvdDate, dvdEditeur, dvdDescription, dvdImage FROM DVD ORDER BY dvdDate DESC'
. $_GET['debut'] . ','. $nb_affichage_par_page;
//on exécute la requete
$req=mysql_query($sql) or die ('Erreur SQL!<br/>' .$sql. '<br/>'. mysql_error());
//on va scanner tous les tuples un par un
while($data=mysql_fetch_array($req))
{
//on affiche les résultats ds la <table>
echo'<tr><td>'. htmlentities (trim($data['dvdTitre'])).'</td></tr>';
echo'<tr><td>'. htmlentities (trim($data['dvdImage'])).'</td></tr>';
echo'<tr><td>' . htmlentities (trim($data['dvdDate'])) .'</td></tr>';
echo'<tr><td>' . htmlentities (trim($data['dvdEditeur'])). '</td></tr>';
echo'<tr><td>' . htmlentities (trim($data['dvdDescription'])). '</td></tr>';
}
//on libere l'espace memoire alloué pour cette requete
mysql_free_result($req);
echo'</table><br/>';
//on affiche enfin notre barre
echo'<span class="gras">' . barre_naviguation($nb_total,$nb_affichage_par_page, $_GET['debut'], 5) . '</span>';
}
//on libère l'espace memoire alloué pour cette reuqête
mysql_free_result($resultat);
echo'</table><br/>';
?>
</TD>
</TR>
</Table>
</TD>
</TR>
<TR>
<TD align="center"><A HREF='javascript:popup("mentions legalesdvd.html")'class="type1">Mentions légales</A>-
<A HREF='javascript:popop("credit.html")'class="type1">Crédit</A></TD>
</TR>
</TABLE>
</div>
</BODY>
</HTML>
Quand je vais sur le site, car il est en ligne, je tombe sur ce message d'erreur:
Aucune réponse trouvéeErreur SQL!
SELECT dvdTitre, dvdDate, dvdEditeur, dvdDescription, dvdImage FROM DVD ORDER BY dvdDate DESC0,1
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DESC0,1' at line 1
Je suis presque sûr que mon erreur vient de cette ligne
$sql='SELECT dvdTitre, dvdDate, dvdEditeur, dvdDescription, dvdImage FROM DVD ORDER BY dvdDate DESC'
. $_GET['debut'] . ','. $nb_affichage_par_page;
mais je ne vois pas ce qu'il faut changer.
Pourriez vous m'éclairer? Merci beaucoup