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!