par
Invité » 08 mars 2005, 03:37
bonjour,
je viens de créer un script d'affichage page par page qui fonctionne tres bien sur la premiere page mais dès que je veux passer à la suivante ça bug.
voici le script:
<?
//=========================================
// includes du fichier fonctions
//=========================================
require 'fonctions.php';
//=========================================
// information pour la connection à la DB
//=========================================
$host = '***';
$user = '***';
$pass = '***';
$db = '***';
//=========================================
// initialisation des variables
//=========================================
// on va afficher 5 résultats par page.
$nombre = 5;
// si limite n'existe pas on l'initialise à zéro
if (!$limite) $limite = 0;
// on cherche le nom de la page.
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts["basename"];
//=========================================
// connection à la DB
//=========================================
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
//=========================================
// recupération des données nécessaire
// à l'affichage
//=========================================
if ($_POST['countryCode']!='')
{
$sql1 = mysql_query("SELECT nom FROM pays WHERE id='".$_POST['countryCode']."'") or die (mysql_error());
list($pays) = mysql_fetch_row($sql1);
}
if ($_POST['regionCode']!='')
{
$sql2 = mysql_query("SELECT nom FROM region WHERE id='".$_POST['regionCode']."'") or die (mysql_error());
list($region) = mysql_fetch_row($sql2);
}
if ($_POST['areaCode']!='')
{
$sql3 = mysql_query("SELECT nom FROM departement WHERE id='".$_POST['areaCode']."'") or die (mysql_error());
list($departement) = mysql_fetch_row($sql3);
}
$aujourdhui = date("Y-m-d");
$annee = date("Y");
$annee2 = $annee-$_POST['rech_age_maxi'];
if ($_POST['rech_age_maxi']!='')
{
$age_maxi = ''.$annee2.'-01-01';
}
if ($_POST['rech_age_mini']!='')
{
$age_mini = date ( 'Y-m-d' , mktime ( 0,0,0, substr( $aujourdhui , 5 , 2 ) ,substr( $aujourdhui , 8 , 2 ) ,substr( $aujourdhui , 0 , 4 ) -$_POST['rech_age_mini'] ));
}
//=========================================
// requête SQL qui compte le nombre total
// d'enregistrements dans la table.
//=========================================
$select = 'SELECT count(pseudo) FROM membres';
$where = array();
$fields1 = array('pseudo','sexe','sexe_recherche','type_relation','pays','region','departement','ville','silhouette','couleur_cheveux','type_cheveux','couleur_yeux','style','fumeur');
foreach ($fields1 as $field) {
if (isset($_POST[$field]) && !empty($_POST[$field])) {
$where[] = "" . $field . "='" . mysql_escape_string($_POST[$field]) . "'";
}
}
if (isset($pays) && !empty($pays)) {
$where[] = "`pays`='" . mysql_escape_string($pays) . "'";
}
if (isset($region) && !empty($region)) {
$where[] = "`region`='" . mysql_escape_string($region) . "'";
}
if (isset($departement) && !empty($departement)) {
$where[] = "`departement`='" . mysql_escape_string($departement) . "'";
}
if (isset($age_maxi) && !empty($age_maxi)) {
$where[] = "`naissance`>='" . mysql_escape_string($age_maxi) . "'";
}
if (isset($age_mini) && !empty($age_mini)) {
$where[] = "`naissance`<='" . mysql_escape_string($age_mini) . "'";
}
if (isset($_POST['taille_maxi_rech']) && !empty($_POST['taille_maxi_rech'])) {
$where[] = "`taille`<='" . mysql_escape_string($_POST['taille_maxi_rech']) . "'";
}
if (isset($_POST['taille_mini_rech']) && !empty($_POST['taille_mini_rech'])) {
$where[] = "`taille`>='" . mysql_escape_string($_POST['taille_mini_rech']) . "'";
}
if (count($where) > 0){
$select .= " WHERE " . implode(' AND ', $where);
}
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];
//=========================================
// vérifier la validité de notre variable
// $limite;
//=========================================
$verifLimite= verifLimite($limite,$total,$nombre);
// si la limite passée n'est pas valide on la remet à zéro
if(!$verifLimite) {
$limite = 0;
}
//=========================================
// requête SQL qui ne prend que le nombre
// d'enregistrement necessaire à l'affichage.
//=========================================
$select = 'select pseudo,DATE_FORMAT(naissance,"%d-%m-%Y") as naissance,taille,ville,departement,region,description FROM membres';
$where = array();
$fields1 = array('pseudo','sexe','sexe_recherche','type_relation','pays','region','departement','ville','silhouette','couleur_cheveux','type_cheveux','couleur_yeux','style','fumeur');
foreach ($fields1 as $field) {
if (isset($_POST[$field]) && !empty($_POST[$field])) {
$where[] = "" . $field . "='" . mysql_escape_string($_POST[$field]) . "'";
}
}
if (isset($pays) && !empty($pays)) {
$where[] = "`pays`='" . mysql_escape_string($pays) . "'";
}
if (isset($region) && !empty($region)) {
$where[] = "`region`='" . mysql_escape_string($region) . "'";
}
if (isset($departement) && !empty($departement)) {
$where[] = "`departement`='" . mysql_escape_string($departement) . "'";
}
if (isset($age_maxi) && !empty($age_maxi)) {
$where[] = "`naissance`>='" . mysql_escape_string($age_maxi) . "'";
}
if (isset($age_mini) && !empty($age_mini)) {
$where[] = "`naissance`<='" . mysql_escape_string($age_mini) . "'";
}
if (isset($_POST['taille_maxi_rech']) && !empty($_POST['taille_maxi_rech'])) {
$where[] = "`taille`<='" . mysql_escape_string($_POST['taille_maxi_rech']) . "'";
}
if (isset($_POST['taille_mini_rech']) && !empty($_POST['taille_mini_rech'])) {
$where[] = "`taille`>='" . mysql_escape_string($_POST['taille_mini_rech']) . "'";
}
if (count($where) > 0){
$select .= " WHERE " . implode(' AND ', $where);
}
$select .= 'ORDER BY pseudo ASC limit '.$limite.','.$nombre.'';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
//=========================================
// si on a récupéré un resultat on l'affiche.
//=========================================
if($total) {
// début du tableau
include "".$_SERVER['DOCUMENT_ROOT']."/include/header.php";
echo '<TABLE width="100%" align="center" cellpadding="0" cellspacing="0" border="0">';
echo '<TR><TD height="20" valign="top> </TD></TR><TR><TD valign="top">';
while($row = mysql_fetch_array($result)) {
//=========================================
// On calcul l'age.
//=========================================
$date_de_naissance = $row['naissance'];
$chiffre = explode('-',$date_de_naissance);
$time_naissance = mktime(0,0,0,$chiffre[1],$chiffre[0],$chiffre[2]);
$seconde_vecu = time() - $time_naissance;
$seconde_par_an = (1461*24*60*60)/4;
$age = floor(($seconde_vecu / $seconde_par_an) +1);
echo '<TABLE bgcolor="#FFC097" width="90%" align="center" cellpadding="0" cellspacing="0" border="0">';
echo '<TR><TD>';
echo '<TABLE width="100%" align="center" cellpadding="1" cellspacing="0" border="0" bgcolor="#FFC097">';
echo '<TR><TD>';
echo '<TABLE valign="top" width="100%" align="center" cellpadding="0" cellspacing="0" border="0" bgcolor="#F7F7F7">';
echo '<TR><TD height="120" bgcolor="#FFFFFF" valign="center" align="center">';
echo '<B>Pas de photo</B>';
echo '</TD><TD width="1" bgcolor="#FFC097">';
echo '<TD valign="top" width="430">';
echo '<TABLE width="100%" align="center" cellpadding="0" cellspacing="0" border="0">';
echo '<TR><TD height="20">';
echo '<TABLE valign="top" width="95%" align="center" cellpadding="0" cellspacing="0" border="0">';
echo '<TR><TD><B>'.$row['pseudo'].'</B> <B>'.$age.' ans</B> <B>'.$row['taille'].'</B></TD></TR>';
echo '</TABLE></TD></TR>';
echo '<TR><TD height="1" bgcolor="#FFC097"></TR>';
echo '<TR><TD height="20">';
echo '<TABLE width="95%" align="center" cellpadding="0" cellspacing="0" border="0">';
echo '<TR><TD><B>'.$row['ville'].'</B> <B>'.$row['departement'].'</B> <B>'.$row['region'].'</B></TD></TR>';
echo '</TABLE></TD></TR>';
echo '<TR><TD height="1" bgcolor="#FFC097"></TR>';
echo '<TR><TD valign="center" height="80">';
echo '<TABLE width="95%" align="center" cellpadding="0" cellspacing="0" border="0">';
echo '<TR><TD ><B>'.$row['description'].'</B></TD></TR>';
echo '</TABLE></TD></TR></TABLE></TD></TR></TABLE></TD></TR></TABLE>';
echo '<TR><TD colspan="3" height="20">';
echo '<TABLE width="100%" align="center" cellpadding="0" cellspacing="0" border="0">';
echo '<TR><TD><B> Derniere visite: 07 mars 14:00</B></TD><TD align="right"><B>';
echo '<IMG src="http://www.monsite.com/img/maison.gif">';
echo ' ';
echo '<IMG src="http://www.monsite.com/img/courrier.gif">';
echo ' </B></TD></TR></TABLE></TD></TR><BR><BR></TD></TR></TABLE>';
}
}
$limitesuivante = $limite + $nombre;
$limiteprecedente = $limite - $nombre;
if($limite != 0) {
echo '<a href="'.$page.'?limite='.$limiteprecedente.'">Page précédente</a>';
}
echo ' ';
if($limitesuivante < $total) {
echo '<a href="'.$page.'?limite='.$limitesuivante.'">Page Suivante</a>';
}
echo '</TD></TR></TABLE>';
include "".$_SERVER['DOCUMENT_ROOT']."/include/footer.php";
?>
en fait dès que je passe à la seconde page, voici le message d'erreur qu'il m'est affiché:
Erreur : You have an error in your SQL syntax near 'BY pseudo ASC limit 5,5' at line 1
bonjour,
je viens de créer un script d'affichage page par page qui fonctionne tres bien sur la premiere page mais dès que je veux passer à la suivante ça bug.
voici le script:
[php]<?
//=========================================
// includes du fichier fonctions
//=========================================
require 'fonctions.php';
//=========================================
// information pour la connection à la DB
//=========================================
$host = '***';
$user = '***';
$pass = '***';
$db = '***';
//=========================================
// initialisation des variables
//=========================================
// on va afficher 5 résultats par page.
$nombre = 5;
// si limite n'existe pas on l'initialise à zéro
if (!$limite) $limite = 0;
// on cherche le nom de la page.
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts["basename"];
//=========================================
// connection à la DB
//=========================================
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
//=========================================
// recupération des données nécessaire
// à l'affichage
//=========================================
if ($_POST['countryCode']!='')
{
$sql1 = mysql_query("SELECT nom FROM pays WHERE id='".$_POST['countryCode']."'") or die (mysql_error());
list($pays) = mysql_fetch_row($sql1);
}
if ($_POST['regionCode']!='')
{
$sql2 = mysql_query("SELECT nom FROM region WHERE id='".$_POST['regionCode']."'") or die (mysql_error());
list($region) = mysql_fetch_row($sql2);
}
if ($_POST['areaCode']!='')
{
$sql3 = mysql_query("SELECT nom FROM departement WHERE id='".$_POST['areaCode']."'") or die (mysql_error());
list($departement) = mysql_fetch_row($sql3);
}
$aujourdhui = date("Y-m-d");
$annee = date("Y");
$annee2 = $annee-$_POST['rech_age_maxi'];
if ($_POST['rech_age_maxi']!='')
{
$age_maxi = ''.$annee2.'-01-01';
}
if ($_POST['rech_age_mini']!='')
{
$age_mini = date ( 'Y-m-d' , mktime ( 0,0,0, substr( $aujourdhui , 5 , 2 ) ,substr( $aujourdhui , 8 , 2 ) ,substr( $aujourdhui , 0 , 4 ) -$_POST['rech_age_mini'] ));
}
//=========================================
// requête SQL qui compte le nombre total
// d'enregistrements dans la table.
//=========================================
$select = 'SELECT count(pseudo) FROM membres';
$where = array();
$fields1 = array('pseudo','sexe','sexe_recherche','type_relation','pays','region','departement','ville','silhouette','couleur_cheveux','type_cheveux','couleur_yeux','style','fumeur');
foreach ($fields1 as $field) {
if (isset($_POST[$field]) && !empty($_POST[$field])) {
$where[] = "" . $field . "='" . mysql_escape_string($_POST[$field]) . "'";
}
}
if (isset($pays) && !empty($pays)) {
$where[] = "`pays`='" . mysql_escape_string($pays) . "'";
}
if (isset($region) && !empty($region)) {
$where[] = "`region`='" . mysql_escape_string($region) . "'";
}
if (isset($departement) && !empty($departement)) {
$where[] = "`departement`='" . mysql_escape_string($departement) . "'";
}
if (isset($age_maxi) && !empty($age_maxi)) {
$where[] = "`naissance`>='" . mysql_escape_string($age_maxi) . "'";
}
if (isset($age_mini) && !empty($age_mini)) {
$where[] = "`naissance`<='" . mysql_escape_string($age_mini) . "'";
}
if (isset($_POST['taille_maxi_rech']) && !empty($_POST['taille_maxi_rech'])) {
$where[] = "`taille`<='" . mysql_escape_string($_POST['taille_maxi_rech']) . "'";
}
if (isset($_POST['taille_mini_rech']) && !empty($_POST['taille_mini_rech'])) {
$where[] = "`taille`>='" . mysql_escape_string($_POST['taille_mini_rech']) . "'";
}
if (count($where) > 0){
$select .= " WHERE " . implode(' AND ', $where);
}
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];
//=========================================
// vérifier la validité de notre variable
// $limite;
//=========================================
$verifLimite= verifLimite($limite,$total,$nombre);
// si la limite passée n'est pas valide on la remet à zéro
if(!$verifLimite) {
$limite = 0;
}
//=========================================
// requête SQL qui ne prend que le nombre
// d'enregistrement necessaire à l'affichage.
//=========================================
$select = 'select pseudo,DATE_FORMAT(naissance,"%d-%m-%Y") as naissance,taille,ville,departement,region,description FROM membres';
$where = array();
$fields1 = array('pseudo','sexe','sexe_recherche','type_relation','pays','region','departement','ville','silhouette','couleur_cheveux','type_cheveux','couleur_yeux','style','fumeur');
foreach ($fields1 as $field) {
if (isset($_POST[$field]) && !empty($_POST[$field])) {
$where[] = "" . $field . "='" . mysql_escape_string($_POST[$field]) . "'";
}
}
if (isset($pays) && !empty($pays)) {
$where[] = "`pays`='" . mysql_escape_string($pays) . "'";
}
if (isset($region) && !empty($region)) {
$where[] = "`region`='" . mysql_escape_string($region) . "'";
}
if (isset($departement) && !empty($departement)) {
$where[] = "`departement`='" . mysql_escape_string($departement) . "'";
}
if (isset($age_maxi) && !empty($age_maxi)) {
$where[] = "`naissance`>='" . mysql_escape_string($age_maxi) . "'";
}
if (isset($age_mini) && !empty($age_mini)) {
$where[] = "`naissance`<='" . mysql_escape_string($age_mini) . "'";
}
if (isset($_POST['taille_maxi_rech']) && !empty($_POST['taille_maxi_rech'])) {
$where[] = "`taille`<='" . mysql_escape_string($_POST['taille_maxi_rech']) . "'";
}
if (isset($_POST['taille_mini_rech']) && !empty($_POST['taille_mini_rech'])) {
$where[] = "`taille`>='" . mysql_escape_string($_POST['taille_mini_rech']) . "'";
}
if (count($where) > 0){
$select .= " WHERE " . implode(' AND ', $where);
}
$select .= 'ORDER BY pseudo ASC limit '.$limite.','.$nombre.'';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
//=========================================
// si on a récupéré un resultat on l'affiche.
//=========================================
if($total) {
// début du tableau
include "".$_SERVER['DOCUMENT_ROOT']."/include/header.php";
echo '<TABLE width="100%" align="center" cellpadding="0" cellspacing="0" border="0">';
echo '<TR><TD height="20" valign="top> </TD></TR><TR><TD valign="top">';
while($row = mysql_fetch_array($result)) {
//=========================================
// On calcul l'age.
//=========================================
$date_de_naissance = $row['naissance'];
$chiffre = explode('-',$date_de_naissance);
$time_naissance = mktime(0,0,0,$chiffre[1],$chiffre[0],$chiffre[2]);
$seconde_vecu = time() - $time_naissance;
$seconde_par_an = (1461*24*60*60)/4;
$age = floor(($seconde_vecu / $seconde_par_an) +1);
echo '<TABLE bgcolor="#FFC097" width="90%" align="center" cellpadding="0" cellspacing="0" border="0">';
echo '<TR><TD>';
echo '<TABLE width="100%" align="center" cellpadding="1" cellspacing="0" border="0" bgcolor="#FFC097">';
echo '<TR><TD>';
echo '<TABLE valign="top" width="100%" align="center" cellpadding="0" cellspacing="0" border="0" bgcolor="#F7F7F7">';
echo '<TR><TD height="120" bgcolor="#FFFFFF" valign="center" align="center">';
echo '<B>Pas de photo</B>';
echo '</TD><TD width="1" bgcolor="#FFC097">';
echo '<TD valign="top" width="430">';
echo '<TABLE width="100%" align="center" cellpadding="0" cellspacing="0" border="0">';
echo '<TR><TD height="20">';
echo '<TABLE valign="top" width="95%" align="center" cellpadding="0" cellspacing="0" border="0">';
echo '<TR><TD><B>'.$row['pseudo'].'</B> <B>'.$age.' ans</B> <B>'.$row['taille'].'</B></TD></TR>';
echo '</TABLE></TD></TR>';
echo '<TR><TD height="1" bgcolor="#FFC097"></TR>';
echo '<TR><TD height="20">';
echo '<TABLE width="95%" align="center" cellpadding="0" cellspacing="0" border="0">';
echo '<TR><TD><B>'.$row['ville'].'</B> <B>'.$row['departement'].'</B> <B>'.$row['region'].'</B></TD></TR>';
echo '</TABLE></TD></TR>';
echo '<TR><TD height="1" bgcolor="#FFC097"></TR>';
echo '<TR><TD valign="center" height="80">';
echo '<TABLE width="95%" align="center" cellpadding="0" cellspacing="0" border="0">';
echo '<TR><TD ><B>'.$row['description'].'</B></TD></TR>';
echo '</TABLE></TD></TR></TABLE></TD></TR></TABLE></TD></TR></TABLE>';
echo '<TR><TD colspan="3" height="20">';
echo '<TABLE width="100%" align="center" cellpadding="0" cellspacing="0" border="0">';
echo '<TR><TD><B> Derniere visite: 07 mars 14:00</B></TD><TD align="right"><B>';
echo '<IMG src="http://www.monsite.com/img/maison.gif">';
echo ' ';
echo '<IMG src="http://www.monsite.com/img/courrier.gif">';
echo ' </B></TD></TR></TABLE></TD></TR><BR><BR></TD></TR></TABLE>';
}
}
$limitesuivante = $limite + $nombre;
$limiteprecedente = $limite - $nombre;
if($limite != 0) {
echo '<a href="'.$page.'?limite='.$limiteprecedente.'">Page précédente</a>';
}
echo ' ';
if($limitesuivante < $total) {
echo '<a href="'.$page.'?limite='.$limitesuivante.'">Page Suivante</a>';
}
echo '</TD></TR></TABLE>';
include "".$_SERVER['DOCUMENT_ROOT']."/include/footer.php";
?>[/php]
en fait dès que je passe à la seconde page, voici le message d'erreur qu'il m'est affiché:
[php]Erreur : You have an error in your SQL syntax near 'BY pseudo ASC limit 5,5' at line 1[/php]