Affichage page par page + WHERE

Eléphant du PHP | 287 Messages

11 mai 2009, 16:09

Bonjour à toutes et tous.
Je veux afficher page par page (qui marche sur mes pages) en utilisant la fonction WHERE
Voici mon code entier :
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" media="screen" type="text/css" href="style/style_hotel.css" />
<title>Boutique-on-line.fr : Hôtels</title>
</head>
<table class="tableau_titre_chaine" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td class="tableau_logo_chaine"><img src="image_hotel/logo_accor_01.png" width="80" height="80" /></td>
    <td class="tableau_nom_chaine">Hôtels Accor<br />
      <div id="sous_marque">Novotel, Mercure, Suitehotel, Ibis...</div></td>
  </tr>
</table>
<p>
<?php
// on se connecte à MySQL 
$db=mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
mysql_select_db('hotel_bol',$db);

$nombreDeMessagesParPage = 25;
$retour = mysql_query('SELECT COUNT(*) AS chaine FROM hotels');
$donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['chaine'];
$nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
?>
<br />
  <?php
if (isset($_GET['page']))
{
  $page = $_GET['page'];
}
else
{
  $page = 1;
}

$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage; 
$db=mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
mysql_select_db('hotel_bol',$db);
mysql_query("SET NAMES 'utf8'"); 

$reponse = mysql_query('SELECT nom_etab,ville,cp,adresse,pays,etoile,description_etab,image_etab,lien_resa,drapeau_pays,tarif,logo_chaine FROM hotels ORDER BY RAND() WHERE chaine="Accorhotels" LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
 
echo '<div id="page">';
 	echo 'Pages : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
    echo '| <a href="hotel_accor.php?page=' . $i . '">' . $i . '</a> ';
}
	echo '</div>';
	echo '<br/>';
	
	while ($donnees = mysql_fetch_array($reponse) )
{

?>
</p>
<table class="tableau_general">
  <tr>
<td class="tableau_image"><div id="tableau_photo"><?php echo '<img src="'.$donnees['image_etab'].'" width="200">'; ?></div></td>
<td class="tableau_presentation"><div id="nom_etab"><?php echo ucwords(strtolower($donnees['nom_etab'])); ?> <?php echo $donnees['etoile'];?><?php echo '<br />';?></div>
<div id="texte_description"><?php echo $donnees['adresse'];?> - <?php echo $donnees['cp'];?> <?php echo ucwords(strtolower($donnees['ville']));?>
<?php echo '<br />';?>
<?php echo $donnees['pays']; ?></div><br />
<div id="texte_prix"><?php echo ''.$donnees['description_etab'].''; ?></div><br />
<div id="lien"><?php echo '<a href="' . $donnees['lien_resa'] . '" target="_blank" ><img src="images/visitez_site_hotel.png" border="0"></a>'; ?></div></td>
   </tr>
</table>
<br />
<?php
}
	echo '<div id="page">';
 	echo 'Pages : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
    echo '| <a href="hotel.php?page=' . $i . '">' . $i . '</a> ';
}
	echo '</div>';

?>
<br />
<?php
mysql_close(); // Déconnexion de MySQL
?>
Maisça march pas : Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\Romuald\Travail\wamp\www\boutique_on_line.fr\hotel_accor.php on line 51

ViPHP
ViPHP | 1136 Messages

11 mai 2009, 16:14

Slt ,

Il me semble que le ORDER BY se place apres la clause WHERE ( à vérifier , en tout cas , moi je la met toujours aprés ... )

Pour connaître ton erreur mysql , utilises un code de ce style :
$result = mysql_query(' ... ma requete ... ');
if (!$result) {
    die('Requête invalide : ' . mysql_error());
}
Ch.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

11 mai 2009, 16:16

Il me semble que le ORDER BY se place apres la clause WHERE
Il te semble bien. =D>

ViPHP
ViPHP | 1136 Messages

11 mai 2009, 16:21

Ce que j'aime avoir raison ... :langue:

et modeste en plus ... :-*

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

11 mai 2009, 16:36

Slt ,

Il me semble que le ORDER BY se place apres la clause WHERE ( à vérifier , en tout cas , moi je la met toujours aprés ... )
Je confirme, le mot ORDER BY doit être la dernière clause du SELECT avant le mot LIMIT.

Donc en général:

Code : Tout sélectionner

SELECT .... FROM ..... [JOIN ...] [WHERE .... ] [GROUP BY ... [HAVING ...] ] [ORDER BY ...] [LIMIT ... ]
.
Les clauses entre [] sont facultatives.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 287 Messages

11 mai 2009, 16:39

Bonjour,
Effectvement il faut placer le ODER BY après le WHERE comme ceci :
WHERE chaine="Accorhotels"