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 albat » 20 janv. 2007, 00:52

La bonne syntaxe est :

Code : Tout sélectionner

SELECT champ_1, champ_2,... , champ_n FROM table ...

par cmoi » 19 janv. 2007, 22:15

c'est vrai mais j'avais le nom d'un champ (societe) dont je ne savais pas quoi faire. Et je ne me doutais pas qu'il fallait l'enlever !

Pour revenir sur ta remarque
Et, pour la énième fois :
Nommez les champs que vous voulez sélectionner au lieu d'utiliser un SELECT *
il faut faire quoi en fait ? SELECT societe TABLE au lieu de SELECT * TABLE par exemple ?

par albat » 19 janv. 2007, 21:31

À noter que la solution que je t'ai indiquée (et qui fonctionne)
était la toute première que t'avait conseillée Ajoloca. ;)

par cmoi » 19 janv. 2007, 21:13

effectivement c'est beaucoup mieux. Merci à vous 2 pour vos contributions.

par albat » 19 janv. 2007, 20:59

Normal puisque le tri se fait d'abord sur la société
et ensuite - donc seulement en cas d'égalité - sur un champ pris au hasard.

Il vaut donc mieux simplifier en
$sql = "SELECT * FROM ".$table." WHERE valid=1 ORDER BY rand()"; 
Et, pour la énième fois :
Nommez les champs que vous voulez sélectionner au lieu d'utiliser un SELECT *

par cmoi » 19 janv. 2007, 20:57

en l'occurrence il n'y a plus de message d'erreur sur ce code
$sql = "SELECT * FROM " . $table." WHERE VALID=1 ORDER BY societe, RAND()";  
Mais ça ne change rien à l'affichage. Il n'est pas aléatoire.

par Ajoloca » 19 janv. 2007, 20:05

Re,
Deux choses :
1 - Il faut toujours tester le retour des fonctions, et en particulier celles de MySQL
if(false === ($res = mysql_query($sql))) {
   die('ERR_SQL :<br />' . $sql . '<br />' . mysql_error());
}
2 - Quand tu as un message d'erreur, poste-le. On ne peut pas le deviner.

par cmoi » 19 janv. 2007, 20:01

en fait il y avait un espace de trop entre la dernière ) et les "

La page s'affiche mais toujours dans le même ordre !

par cmoi » 19 janv. 2007, 19:59

$sql = "SELECT * FROM " . $table." WHERE VALID=1 ORDER BY societe, RAND() "; 
    $res = mysql_query($sql); 
    $nb = mysql_num_rows($res);
j'ai testé et le message me dit qu'il y a une erreur ligne 195, soit 2 plus bas. Est-ce ça pourrait venir de l'une ou l'autre de ces lignes ?

J'ai testé aussi sans la virgule, au cas où. C'est pareil.

par Ajoloca » 19 janv. 2007, 19:29

Re,
Dans ce cas tu dois lui donner à comprendre en séparant les critères avec des virgules, Exp.

Code : Tout sélectionner

... ORDER BY societe, RAND()";

par cmoi » 19 janv. 2007, 19:25

si mon code se finit par ORDER BY RAND() societe";
j'obtiens un message d'erreur.

Faut-il mettre seulement ORDER BY RAND() ; ??

par Ajoloca » 19 janv. 2007, 19:15

Bonjour,
Quand tu dis, "ça ne vas pas ", que veux tu dire par là ?
Moi si je fais un "ORDER BY RAND()" ça marche

Code : Tout sélectionner

mysql> SELECT * FROM articles ORDER BY RAND(); +-------------+-------------+---------------------------+-------+-------+ | codeArticle | idCategorie | nom | prix | stock | +-------------+-------------+---------------------------+-------+-------+ | RAQ01 | 2 | Raquette de squash | 62.00 | 3 | | BAL45 | 2 | Balle de squash débutant | 5.00 | 35 | | SHR03 | 3 | Short court | 17.50 | 1 | | BOU89 | 1 | Bouchon rond | 43.00 | 2 | | CAP01 | 1 | Canne à pêche | 80.40 | 4 | +-------------+-------------+---------------------------+-------+-------+ 5 rows in set (0.00 sec) mysql> SELECT * FROM articles ORDER BY RAND(); +-------------+-------------+---------------------------+-------+-------+ | codeArticle | idCategorie | nom | prix | stock | +-------------+-------------+---------------------------+-------+-------+ | BAL45 | 2 | Balle de squash débutant | 5.00 | 35 | | CAP01 | 1 | Canne à pêche | 80.40 | 4 | | SHR03 | 3 | Short court | 17.50 | 1 | | RAQ01 | 2 | Raquette de squash | 62.00 | 3 | | BOU89 | 1 | Bouchon rond | 43.00 | 2 | +-------------+-------------+---------------------------+-------+-------+ 5 rows in set (0.00 sec)

Affichage aléatoire

par cmoi » 19 janv. 2007, 18:55

Bonjour,

sur le sujet, j'ai trouvé des posts concernant les images mais rien sur les textes, en tout cas rien qui me conviennent.

J'ai ce code
 $sql = "SELECT * FROM " . $table." WHERE VALID=1 ORDER BY societe" ; 
qui me fait un affichage par ordre alphabétique de tout ce que je souhaite.
J'aimerais que l'affichage se fasse de façon aléatoire. Il semble qu'il faille placer un RAND() dans le code, mais je ne sais trop comment.
J'ai essayé derriere ORDER BY et ça ne va pas. J'ai essayé aussi RAND(now()) (j'ai trouvé ça quelque part), ça ne va pas non plus.

Donc ... à l'aide !! :cry: