afficher un enregistrement aleatoirement... [PHP] - PHP - Programmation
Marsh Posté le 24-04-2002 à 17:33:43
la fonction mysql_query renvoie un identifiant de résultat. 
Pour avoir le nombre d'enregistrement, utilises après la fonction mysql_num_rows en lui fournissant cet identifant : 
 
Code :
  | 
 
 
Mais dans tout les cas je te conseille d'utiliser la fonction RAND de mysql : 
 
SELECT * FROM citations ORDER BY RAND() LIMIT 1 
 
et voilà ça retourne 1 enregistrement tiré au hasard 
 
 
regarde le site http://www.mysql.com/ pour trouver ce genre d'infos 
[jfdsdjhfuetppo]--Message édité par Tentacle le 24-04-2002 à 17:43:20--[/jfdsdjhfuetppo]
Marsh Posté le 24-04-2002 à 17:39:17
| Tentacle a écrit a écrit  : la fonction mysql_query renvoie un identifiant de résultat. Pour avoir le nombre d'enregistrement, utilises après la fonction mysql_nresult en lui fournissant cet identifant : 
    | 
 
 
 
 fonction mysql_num_rows 
 
Marsh Posté le 24-04-2002 à 17:42:56
| Tentacle a écrit a écrit  : oups j'avais corrigé en bas, mais j'ai oublié en haut Mais il vaut mieux qu'il utilise la requête MySQL que j'ai donné, ce sera plus rapide  | 
[jfdsdjhfuetppo]--Message édité par Tentacle le 24-04-2002 à 17:43:57--[/jfdsdjhfuetppo]
Marsh Posté le 24-04-2002 à 18:00:13
lol  
merci mais ça ne marche pas quand meme, il ya une erreur:  
Supplied argument is not a valid MySQL result resource à la ligne 12 & 13.  
 
voici le code entier si ça peut aider:  
 
<?php  
 
$host="localhost"; //insérez votre hôte  
$user = "root"; // insérez le login  
$pass = "iori"; //insérez le password  
$bdd = "purcity"; // nom de la base de donnée  
 
mysql_connect($host,$user,$pass) or die (mysql_error());  
mysql_select_db("$bdd" ) or die (mysql_error());  
 
$req_citation = "SELECT * FROM citations ORDER BY rand() LIMIT 1" or die(mysql_error());  
$nbrows = mysql_num_rows($req_citation);  
while ($ligne_citation=mysql_fetch_object($req_citation))  
{  
echo (" $ligne_citation->texte" );  
}  
?>  
 
ligne 12 & 13 corrspond à ça:  
$nbrows = mysql_num_rows($req_citation);  
while ($ligne_citation=mysql_fetch_object($req_citation))  
 
merci d'av ! 
Marsh Posté le 24-04-2002 à 18:05:07
fais soit l'une soit l'autre methode, pas les 2... 
essaye exactement comme o depart mais en mettant la fonction mysql_num_rows et en remplacant la variable total... 
 
OU alors essaye juste le truc du RAND() (majuscules ptet important) 
Marsh Posté le 24-04-2002 à 18:06:35
| ludo2604 a écrit a écrit  : $req_citation = "SELECT * FROM citations ORDER BY rand() LIMIT 1" or die(mysql_error()); $nbrows = mysql_num_rows($req_citation);  | 
 
 
Argh 
 $req_citation contient ta requête là, il faut que l'envoie au serveur Mysql : 
 
Code :
  | 
 
 
et après tu récupères le résultat dans $result_object. 
[jfdsdjhfuetppo]--Message édité par Tentacle le 24-04-2002 à 18:15:37--[/jfdsdjhfuetppo]
Marsh Posté le 24-04-2002 à 18:07:21
| Goueg a écrit a écrit  : fais soit l'une soit l'autre methode, pas les 2... essaye exactement comme o depart mais en mettant la fonction mysql_num_rows et en remplacant la variable total... OU alors essaye juste le truc du RAND() (majuscules ptet important)  | 
 
 
non faut quand même qu'il vérifie le nombre d'enregistrement au cas où il n'y a rien dans la table, mais il a oublier d'utiliser mysql_query... 
 
De plus rand en minuscule marche aussi 
 
[jfdsdjhfuetppo]--Message édité par Tentacle le 24-04-2002 à 18:07:39--[/jfdsdjhfuetppo]
Marsh Posté le 24-04-2002 à 18:24:46
ça marche !!! 
 
merci beaucoup 
 
 
je voudrai savoir une derniere chose. 
Là j'ai donc fait afficher un enregistrement aleatoire mais est- il possible que cet enregistrement tiré aleatoirement change au bout de 24h et non pas lors d'un simplae refresh ? 
 
En tt cas merci pour tout 
 
Marsh Posté le 24-04-2002 à 19:16:11
| ludo2604 a écrit a écrit  : ça marche !!! merci beaucoup je voudrai savoir une derniere chose. Là j'ai donc fait afficher un enregistrement aleatoire mais est- il possible que cet enregistrement tiré aleatoirement change au bout de 24h et non pas lors d'un simplae refresh ? En tt cas merci pour tout  | 
 
 
si tu veux kil change ts les jours, fo soit calculer le rand() en fonction de la date, soit avoir une table dans ta BD avec "jour" et "id_enreg" et recuperer l'id_enreg si le jour actuel est "jour", ou creer un new id_enreg si c pas le cas. 
Marsh Posté le 24-04-2002 à 17:27:01
Je me suis un peu renseingé concernant la fonction rand()
  
j'ai essayé de mettre ça:
// On récupère le nb total d'enregistrement dans la table:
$query = "SELECT COUNT(*) FROM citations";
$total = mysql_query($query);
// On choisit un nombre aléatoire entre 0 et $count:
srand((double)microtime()*1000000);
$random = rand(0, $total-1);
// On selectionne l'enregistrement:
$query = "SELECT * FROM citations LIMIT $random,1";
$req = mysql_query($query);
echo $texte;
echo $auteur;
mais ça marche pas
est-ce bien ça ?
---------------
Make Portraits, Not War!