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