Probleme PHP basique : lister un tableau !
19 messages
• Page 1 sur 2 • 1, 2
- marion17
- WRInaute impliqué

- Messages: 518
- Inscription: 11 Nov 2006
Probleme PHP basique : lister un tableau !
$res_cat = send_sql($sql_cat,"trouver les catégories principales" );
while ($une_categorie = mysql_fetch_array($res_cat,MYSQL_ASSOC))
{
echo $une_categorie["cat_name"];
}
voila , ce code permet de lister sans probleme par ordre alphabetique les nom des catégories...
Ce que je voudrais, c'est qu'il liste par exemple 10 catégorie prises au hasard dans la liste total, cela vous semble t'il possible ?
merci beaucoup
- DomicilePC
- WRInaute discret

- Messages: 210
- Inscription: 17 Jan 2005
La fonction rand(min,max) génère un nbre aléatoir compris entre le min et le max. Il faut d'abord initialiser le nbre avec srand((float) microtime()*1000000);//par exemple
$randval = rand();
Une fois généré, mysql_data_seek($requete,$randval) te place sur l'enregistrement $randval.
Tu le fais 10 fois, ou tu utilise LIMIT
$randval = rand();
Une fois généré, mysql_data_seek($requete,$randval) te place sur l'enregistrement $randval.
Tu le fais 10 fois, ou tu utilise LIMIT
- marion17
- WRInaute impliqué

- Messages: 518
- Inscription: 11 Nov 2006
Merci j'aprecie votre aide.
Mais pouriez vous me montrer un exemple precisement ?
car je vous avoue que quand ça touche a SQL je suis un peu perdue...
et utilisé le LIMIT me semble plus propre que 10X la meme chose, ca consome les meme ressource SQL ces 2 méthodes ?
merci
Mais pouriez vous me montrer un exemple precisement ?
car je vous avoue que quand ça touche a SQL je suis un peu perdue...
et utilisé le LIMIT me semble plus propre que 10X la meme chose, ca consome les meme ressource SQL ces 2 méthodes ?
merci
- DomicilePC
- WRInaute discret

- Messages: 210
- Inscription: 17 Jan 2005
<?php
srand((float) microtime()*1000000);
$min = 0;
$res = mysql_query("select * from nom_de_table");
$max = mysql_num_rows($res) - 11;
$randval = rand($min, $max);
$res = mysql_query("select * from nom_de_table order by nom_de_categorie asc LIMIT $randval, 10");
while($r = mysql_fetch_array($res)){
echo $r[nom ou numéro de colonne];
}
?>
Si j'ai pas fait d'erreur
Edit j'en avais fait...
srand((float) microtime()*1000000);
$min = 0;
$res = mysql_query("select * from nom_de_table");
$max = mysql_num_rows($res) - 11;
$randval = rand($min, $max);
$res = mysql_query("select * from nom_de_table order by nom_de_categorie asc LIMIT $randval, 10");
while($r = mysql_fetch_array($res)){
echo $r[nom ou numéro de colonne];
}
?>
Si j'ai pas fait d'erreur
Edit j'en avais fait...
- marion17
- WRInaute impliqué

- Messages: 518
- Inscription: 11 Nov 2006
donc voila precisement ce que j'ai fait, avec des modification :
et ça marche... enfin presque..
Ca selection les 10 données suivante apres le chiffre aleatoire... ce qui fait qu'on a un groupe de mots de meme ordre alphabetique..
j'aurais aimé que ça sois 10 données completement diférentes, et pas un block de 10...
Donc il vas faloire faire 10X la requete sql vous pensez ? qu'elle petit modif faudrais t'il faire a ce code qui est une très bonne base déja (merci DomicilePC, tu roule ta bosse en PHP)
merci
<?php
srand((float) microtime()*1000000);
$randval = rand(0, 200);
$res = mysql_query("SELECT id,cat_name FROM $T_categories WHERE id_cat_mere = '0' AND activation = '1' ORDER BY cat_name ASC LIMIT $randval, 10");
while($r = mysql_fetch_array($res)){
echo $r["cat_name"];
echo "<br>";
}
?>
et ça marche... enfin presque..
Ca selection les 10 données suivante apres le chiffre aleatoire... ce qui fait qu'on a un groupe de mots de meme ordre alphabetique..
j'aurais aimé que ça sois 10 données completement diférentes, et pas un block de 10...
Donc il vas faloire faire 10X la requete sql vous pensez ? qu'elle petit modif faudrais t'il faire a ce code qui est une très bonne base déja (merci DomicilePC, tu roule ta bosse en PHP)
merci
- marion17
- WRInaute impliqué

- Messages: 518
- Inscription: 11 Nov 2006
Bon, voila, j'ai rajouter une boucle for :
cela est t'il propre techniquement ?
finalement il m'a falut une rampe de lancement et je fait des prouesse en php, je suis contente
srand((float) microtime()*1000000);
for ( $i=0; $i<10; $i++ ) {
$randval = rand(0, 250);
$res = mysql_query("SELECT id,cat_name FROM $T_categories WHERE id_cat_mere = '0' AND activation = '1' ORDER BY cat_name ASC LIMIT $randval, 1");
while($r = mysql_fetch_array($res)){
echo $r["cat_name"];
echo "<br>";
}
}
cela est t'il propre techniquement ?
finalement il m'a falut une rampe de lancement et je fait des prouesse en php, je suis contente
- DomicilePC
- WRInaute discret

- Messages: 210
- Inscription: 17 Jan 2005
Tu n'as pas besoin du while puisque tu n'as qu'un enregistrement.
Tu peux faire directement $r = mysql_fetch_array($res)
Tu peux faire directement $r = mysql_fetch_array($res)
- DomicilePC
- WRInaute discret

- Messages: 210
- Inscription: 17 Jan 2005
Je comprends pas bien:
Si tu as 2 fois le même nom qui te sort dans ta requête, c'est qu'il y a un doublon dans ta table.
Si tu as 2 fois le même nom qui te sort dans ta requête, c'est qu'il y a un doublon dans ta table.
- marion17
- WRInaute impliqué

- Messages: 518
- Inscription: 11 Nov 2006
DomicilePC non, tous simplement que c'est tomber 2X dessuite sur le meme nombre aléatoire... donc forcement 2X la meme catégorie qui s'affiche.
Comprend tu ?
peu etre en mettant de coté les chiffres deja sortie et les comparant au nouveaux...
Tu es formidable
Comprend tu ?
peu etre en mettant de coté les chiffres deja sortie et les comparant au nouveaux...
Tu es formidable
- DomicilePC
- WRInaute discret

- Messages: 210
- Inscription: 17 Jan 2005
Je pense pas qu'un chiffre aléatoire ne te ressorte comme ça.
Si ça t'arrive, va vite faire un loto, t'as des chances de gagner.
Si non, tu peux placer ton chiffre dans un tableau, et ensuite parser le tableau pour voir si le nouveau nombre est présent.
Mais franchement, t'as plus de chance au loto...
Si ça t'arrive, va vite faire un loto, t'as des chances de gagner.
Si non, tu peux placer ton chiffre dans un tableau, et ensuite parser le tableau pour voir si le nouveau nombre est présent.
Mais franchement, t'as plus de chance au loto...
19 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- Problème de tableau en PHP
- PHP problème d'affichage tableau
- [PHP - Niveau : FACILE] Probleme de tableau et randomization
- PHP: Mélanger un tableau de tableau de manière aléatoire
- Probleme basique de cgi
- Question basique pour un bon programmeur php/mysql
- URL Rewriting : problème basique !
- page basique en php / pour apeller un flux xml marche pas ;(
- [R]Un problème basique sur MYSQL, quelqu'un peut-il m'aider.
- php lister les liens de ma page html
- Lister les sous-domaines
Cet outil vous permet de trouver la liste des sous-domaines (indexés) d'un site.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


