[PHP]afficher un enregistrement aleatoirement...

afficher un enregistrement aleatoirement... [PHP] - PHP - Programmation

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!  
Reply

Marsh Posté le 24-04-2002 à 17:27:01   

Reply

Marsh Posté le 24-04-2002 à 17:30:28    

$nbresults=mysql_num_rows($total) je croa

Reply

Marsh Posté le 24-04-2002 à 17:31:31    

apré tu utilises nbresults plutot que total...

Reply

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 :
  1. $mysql_result = mysql_query ($query);
  2. $mysql_nresult = mysql_num_rows ($mysql_result);


 
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]

Reply

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 :
 

Code :
  1. $mysql_result = mysql_query ($query);
  2. $mysql_nresult = mysql_num_rows ($mysql_result);


 
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  
 
 




 
 :non: fonction mysql_num_rows :D

Reply

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 :D  
 
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]

Reply

Marsh Posté le 24-04-2002 à 17:43:56    

surtout ke CT en gras :D

Reply

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 !


---------------
Make Portraits, Not War!  
Reply

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)

Reply

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 :
  1. $result = mysql_query ($req_citation);
  2. if (mysql_num_rows ($req_citation))
  3. {
  4.   $result_object = mysql_fetch_object ($result);
  5.   echo $result_object->texte;
  6. }


 
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]

Reply

Marsh Posté le 24-04-2002 à 18:06:35   

Reply

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]

Reply

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 :)


---------------
Make Portraits, Not War!  
Reply

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.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed