Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1315 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP]afficher un enregistrement aleatoirement...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP]afficher un enregistrement aleatoirement...

n°130338
ludo2604
kitsch' me if u can
Posté le 24-04-2002 à 17:27:01  profilanswer
 

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!  
mood
Publicité
Posté le 24-04-2002 à 17:27:01  profilanswer
 

n°130339
goueg
De passage
Posté le 24-04-2002 à 17:30:28  profilanswer
 

$nbresults=mysql_num_rows($total) je croa

n°130340
goueg
De passage
Posté le 24-04-2002 à 17:31:31  profilanswer
 

apré tu utilises nbresults plutot que total...

n°130343
Tentacle
Posté le 24-04-2002 à 17:33:43  profilanswer
 

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]

n°130347
goueg
De passage
Posté le 24-04-2002 à 17:39:17  profilanswer
 

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

n°130351
Tentacle
Posté le 24-04-2002 à 17:42:56  profilanswer
 

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]

n°130352
goueg
De passage
Posté le 24-04-2002 à 17:43:56  profilanswer
 

surtout ke CT en gras :D

n°130372
ludo2604
kitsch' me if u can
Posté le 24-04-2002 à 18:00:13  profilanswer
 

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!  
n°130373
goueg
De passage
Posté le 24-04-2002 à 18:05:07  profilanswer
 

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)

n°130376
Tentacle
Posté le 24-04-2002 à 18:06:35  profilanswer
 

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]

mood
Publicité
Posté le 24-04-2002 à 18:06:35  profilanswer
 

n°130378
Tentacle
Posté le 24-04-2002 à 18:07:21  profilanswer
 

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]

n°130383
ludo2604
kitsch' me if u can
Posté le 24-04-2002 à 18:24:46  profilanswer
 

ç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!  
n°130403
goueg
De passage
Posté le 24-04-2002 à 19:16:11  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP]afficher un enregistrement aleatoirement...

 

Sujets relatifs
[PHP]deux question de debutantASP, PHP mais y en a t'il d'autres interprettés serveur ?
[PHP, Javascript ou autre] Ouvrir une fenêtre basique[PHP] + [PEAR] : comment installer PHP et PEAR à la main ?
[PHP] Fonction DownloadOooops ma chaine XML est interprétée comme du PHP...
Je ne veux pas que les messages d'erreur s'affichent en PHP[PHP] Fonction close() déjà définie ?
[PHP] erreur "x" ligne 569[PHP] Comment transformer...
Plus de sujets relatifs à : [PHP]afficher un enregistrement aleatoirement...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR