affichage aléatoire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : affichage aléatoire

par Truc » 23 mars 2007, 22:46

3 Posts et 3
voilà la réponse de PhpMyAdmin
Bon ok on a le message mais tu as essayé :
De regarder la doc ?
De regarder la construction d'une requête ?

par jojolapine » 23 mars 2007, 19:30

il faut écire RAND()

par ag3c » 23 mars 2007, 19:26

voilà la réponse de phpMyAdmin
#1054 - Champ 'rand' inconnu dans order clause

par orgerix » 23 mars 2007, 19:21

IL faut aussi enlever les guillemets

par ag3c » 23 mars 2007, 18:44

voilà réponse de phpmyadmin
#1064 - Erreur de syntaxe près de '"SELECT * FROM produits ORDER BY RAND LIMIT 2"' à la ligne 1

par orgerix » 23 mars 2007, 17:26

Enleve '$ =' et ca marchera peut être mieux...

par ag3c » 23 mars 2007, 16:28

voilà la réponse de PhpMyAdmin
#1064 - Erreur de syntaxe près de '$ = "SELECT * FROM produits ORDER BY RAND LIMIT 2"' à la ligne 1

par zeus » 23 mars 2007, 13:53

dans $query annonce, tu met déjà le ORDER BY et le LIMIT, pas besoin du sprintf dans ce cas.

D'une manière générale, il faut toujours afficher la requête qui plante, avec un simple echo, pour l'executer directement depuis PhpMyAdmin qui te donnera l'erreur ...

par ag3c » 23 mars 2007, 12:09

le message posté par "invité" est de ag3c, désolé erreur de manip..

par Invité » 23 mars 2007, 12:05

J'ai donc modifié mon code selon le
order by rand 
(comme je l'avais déjà fait, mais j'étais revenu à mon code initial)

voici la réponse du navigateur :
Erreur de syntaxe près de 'LIMIT 0, 2' à la ligne 1
Il va de soi que je dois modifier
$query_limit_annonces = sprintf("%s LIMIT %d, %d", $query_annonces, $startRow_annonces, $maxRows_annonces);
voire le supprimer, mais déjà au niveau de
$query_annonces = "SELECT * FROM produits ORDER BY RAND LIMIT 2";
il y a une erreur, laquelle

j'espère que je suis plus clair... J'ai l'impression que
$maxRows_annonces = 2;
établit déjà le nombre de lignes de ma db à afficher par page.
Encore merci pour votre aide.
<?php require_once('Connections/ag3cconnec.php'); ?>
<?php
$currentPage = $_SERVER["PHP_SELF"];

$maxRows_annonces = 2;
$pageNum_annonces = 0;
if (isset($_GET['pageNum_annonces'])) {
  $pageNum_annonces = $_GET['pageNum_annonces'];
}
$startRow_annonces = $pageNum_annonces * $maxRows_annonces;

mysql_select_db($database_ag3cconnec, $ag3cconnec);
$query_annonces = "SELECT * FROM produits ORDER BY RAND LIMIT 2";
$query_limit_annonces = sprintf("%s LIMIT %d, %d", $query_annonces, $startRow_annonces, $maxRows_annonces);
$annonces = mysql_query($query_limit_annonces, $ag3cconnec) or die(mysql_error());
$row_annonces = mysql_fetch_assoc($annonces);

if (isset($_GET['totalRows_annonces'])) {
  $totalRows_annonces = $_GET['totalRows_annonces'];
} else {
  $all_annonces = mysql_query($query_annonces);
  $totalRows_annonces = mysql_num_rows($all_annonces);
}
$totalPages_annonces = ceil($totalRows_annonces/$maxRows_annonces)-1;

$queryString_annonces = "";
if (!empty($_SERVER['QUERY_STRING'])) {
  $params = explode("&", $_SERVER['QUERY_STRING']);
  $newParams = array();
  foreach ($params as $param) {
    if (stristr($param, "pageNum_annonces") == false && 
        stristr($param, "totalRows_annonces") == false) {
      array_push($newParams, $param);
    }
  }
  if (count($newParams) != 0) {
    $queryString_annonces = "&" . htmlentities(implode("&", $newParams));
  }
}
$queryString_annonces = sprintf("&totalRows_annonces=%d%s", $totalRows_annonces, $queryString_annonces);
?>

par zeus » 23 mars 2007, 01:44

1/ "Ca ne marche pas" ne nous aide pas à t'aider. Il nous faut plus de détail . "La requête fonctionne mais j'ai toujours les même affichages", "La requête me renvoi tel message d'erreur" sont des messages beaucoup plus explicite pour t'aider

2/ Je vois bien le LIMIT mais par le ORDER BY RAND ... Si tu n'essayes pas les solutions qu'on te donne, je ne sais pas comment t'aider ...

3/ pourquoi ne pas mettre toute ta requête dans $query_annonce plutôt que d'utiliser un sprintf() pour ajouter le LIMIT à la requête ?

par Truc » 23 mars 2007, 01:36

Modération :
ag3c, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

par ag3c » 22 mars 2007, 21:25

j'ai essayé mais ça ne fontionne pas. Encore une fois je suis en région répétée avec une page principale liée à une page détail. voici le code ma page principale.
<?php require_once('Connections/ag3cconnec.php'); ?>
<?php
$currentPage = $_SERVER["PHP_SELF"];

$maxRows_annonces = 2;
$pageNum_annonces = 0;
if (isset($_GET['pageNum_annonces'])) {
  $pageNum_annonces = $_GET['pageNum_annonces'];
}
$startRow_annonces = $pageNum_annonces * $maxRows_annonces;

mysql_select_db($database_ag3cconnec, $ag3cconnec);
$query_annonces = "SELECT * FROM produits";
$query_limit_annonces = sprintf("%s LIMIT %d, %d", $query_annonces, $startRow_annonces, $maxRows_annonces);
$annonces = mysql_query($query_limit_annonces, $ag3cconnec) or die(mysql_error());
$row_annonces = mysql_fetch_assoc($annonces);

if (isset($_GET['totalRows_annonces'])) {
  $totalRows_annonces = $_GET['totalRows_annonces'];
} else {
  $all_annonces = mysql_query($query_annonces);
  $totalRows_annonces = mysql_num_rows($all_annonces);
}
$totalPages_annonces = ceil($totalRows_annonces/$maxRows_annonces)-1;

$queryString_annonces = "";
if (!empty($_SERVER['QUERY_STRING'])) {
  $params = explode("&", $_SERVER['QUERY_STRING']);
  $newParams = array();
  foreach ($params as $param) {
    if (stristr($param, "pageNum_annonces") == false && 
        stristr($param, "totalRows_annonces") == false) {
      array_push($newParams, $param);
    }
  }
  if (count($newParams) != 0) {
    $queryString_annonces = "&" . htmlentities(implode("&", $newParams));
  }
}
$queryString_annonces = sprintf("&totalRows_annonces=%d%s", $totalRows_annonces, $queryString_annonces);
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Agence des 3 communes</title>
<link href="styles/fond.css" rel="stylesheet" type="text/css" />
<link href="styles/bord.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
a:link {
	color: #CC6600;
}
a:visited {
	color: #CC6600;
}
a:hover {
	color: #FEE3AE;
}
a:active {
	color: #CC6600;
}
.Style5 {font-size: small; font-family: Verdana, Arial, Helvetica, sans-serif;}
.Style6 {color: #CC0000}
.Style7 {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	color: #CC0000;
	font-weight: bold;
}
.Style9 {font-family: Verdana, Arial, Helvetica, sans-serif}
.Style10 {
	font-size: 11px;
	font-weight: bold;
	color: #666666;
}
.Style13 {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-weight: bold;
	color: #000000;
}
.Style15 {font-family: Verdana, Arial, Helvetica, sans-serif; color: #CC0000; font-weight: bold; font-size: 14px; }
.Style18 {color: #CC6600}
.Style20 {color: #666666; font-size: 14px; }
.Style23 {font-size: 14px}
.Style24 {color: #666666}
.Style25 {font-family: Verdana, Arial, Helvetica, sans-serif; color: #CC6600; font-weight: bold; font-size: 14px; }
-->
</style>
</head>

<body>
<table width="970" border="0" cellpadding="0" cellspacing="0" class="fond">
  <!--DWLayoutTable-->
  <tr>
    <td width="13" height="13"></td>
    <td width="15"></td>
    <td width="387"></td>
    <td width="7"></td>
    <td width="110"></td>
    <td width="7"></td>
    <td width="402"></td>
    <td width="29"></td>
  </tr>
  <tr>
    <td height="78">&nbsp;</td>
    <td colspan="2" valign="top" class="bord"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="400" height="76">
      <param name="movie" value="images/trans.swf" />
      <param name="quality" value="high" />
      <embed src="images/trans.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="400" height="76"></embed>
    </object></td>
    <td>&nbsp;</td>
    <td valign="top"><a href="index.php"><img src="images/logo.jpg" width="110" height="76" border="0" /></a></td>
    <td>&nbsp;</td>
    <td valign="top" class="bord"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="400" height="76">
      <param name="movie" value="images/guide.swf" />
      <param name="quality" value="high" />
      <embed src="images/guide.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="400" height="76"></embed>
    </object></td>
    <td>&nbsp;</td>
  </tr>
  
  
  
  <tr>
    <td height="7"></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <td height="20"></td>
    <td></td>
    <td colspan="5" valign="top"><div align="center" class="Style5"> 
        <div align="center"><span class="Style24">2 Pasteur (Angle 46 rue de Jouy) 78220 Viroflay. Tel.</span> <span class="Style18">01.30.24.06.07.</span> <span class="Style24">Fax. 01.30.24.06.33. Mail.</span> <span class="Style6"><a href="mailto:[email protected]">[email protected]</a></span> </div>
    </div></td>
    <td></td>
  </tr>
  <tr>
    <td height="7"></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <td height="365"></td>
    <td colspan="6" valign="top"><table width="735" border="1" align="center" cellpadding="4" bordercolor="#CC6600">

        <?php do { ?>
          <tr>
            <td width="256" rowspan="3"><div align="center" class="Style9">
              <div align="right" class="Style10"><?php echo $row_annonces['descriptif']; ?> </div>
            </div>            </td>
            <td width="184"><div align="center" class="Style25"> <?php echo $row_annonces['Commune']; ?></div>            </td>
            <td width="255" rowspan="3" align="left" valign="bottom" class="Style13"><div align="left">
              <p><span class="Style25"><?php echo $row_annonces['Type']; ?></span><br />
                <span class="Style25"><?php echo $row_annonces['surfhab']; ?></span> <span class="Style25">m&sup2;</span><span class="Style7"><span class="Style20"> habitables</span></span> <br />
                  <span class="Style25"><?php echo $row_annonces['surfterr']; ?></span> <span class="Style25">m&sup2;</span><span class="Style20"> de terr. </span><br /> 
                  <span class="Style25"><?php echo $row_annonces['nbrepieces']; ?></span> <span class="Style20">pi&egrave;ce(s) </span><br />              
                  <span class="Style25"><?php echo $row_annonces['nbrechbres']; ?></span><span class="Style7"> <span class="Style20">chambre(s)</span> </span><span class="Style24"><br />
                  <span class="Style23">Etat g&eacute;n&eacute;ral : </span></span><span class="Style15 Style18"><?php echo $row_annonces['etatgeneral']; ?></span><br />
                  <span class="Style20">Chauffage :</span> <span class="Style25"><?php echo $row_annonces['chauffage']; ?></span><br />
                <br />
              </p>
            </div>            </td>
          </tr>
          <tr>
            <td>
              <div align="center"><a href="details.php?recordID=<?php echo $row_annonces['ID']; ?>"></a><a href="details.php?recordID=<?php echo $row_annonces['ID']; ?>"><img src="http://localhost/ag3c/images/<?php echo $row_annonces['Photo']; ?>" border="0" /></a></div>            </td>
          </tr>
          <tr>
            <td height="27"><div align="center" class="Style7"><span class="Style25"><?php echo $row_annonces['prix']; ?></span> <span class="Style25">&euro;</span> </div>            </td>
          </tr>
          <?php } while ($row_annonces = mysql_fetch_assoc($annonces)); ?>
      </table>
      <br />
      <table border="0" width="50%" align="center">
        <tr>
          <td width="23%" height="15" align="center"><a href="<?php printf("%s?pageNum_annonces=%d%s", $currentPage, 0, $queryString_annonces); ?>"><img src="images/First.gif" width="18" height="13" border="0" /></a></td>
          <td width="31%" align="center"><a href="<?php printf("%s?pageNum_annonces=%d%s", $currentPage, max(0, $pageNum_annonces - 1), $queryString_annonces); ?>"><img src="images/Previous.gif" width="14" height="13" border="0" /></a></td>
          <td width="23%" align="center"><a href="<?php printf("%s?pageNum_annonces=%d%s", $currentPage, min($totalPages_annonces, $pageNum_annonces + 1), $queryString_annonces); ?>"><img src="images/Next.gif" width="14" height="13" border="0" /></a></td>
          <td width="23%" align="center"><a href="<?php printf("%s?pageNum_annonces=%d%s", $currentPage, $totalPages_annonces, $queryString_annonces); ?>"><img src="images/Last.gif" width="18" height="13" border="0" /></a></td>
        </tr>
      </table>    </td>
    <td></td>
  </tr>
  <tr>
    <td height="40"></td>
    <td colspan="6" valign="top"><!--DWLayoutEmptyCell-->&nbsp;</td>
    <td></td>
  </tr>
  <tr>
    <td height="10"></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
  </tr>
</table>

</body>
</html>
<?php
mysql_free_result($annonces);
?>

merci de votre aide

par zeus » 15 mars 2007, 16:40

Pour trier de manière aléatoire, il existe le fameux ORDER BY RAND

Pour ne sélectionner que 2 lignes, tu peux utiliser LIMIT 2

Ta requête ressemblera donc à ça :

Code : Tout sélectionner

SELECT ma, liste, de, champ, FROM matable ORDER BY RAND LIMIT 2

par ag3c » 15 mars 2007, 15:16

tu est sous quelle base de données ?
je suis sous Easy php 1.7 qui utilise MySQL 4.0.15