Probleme PHP basique : lister un tableau !

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

marion17
WRInaute passionné
WRInaute passionné
 
Messages: 518
Inscription: Sam Nov 11, 2006 18:24

Probleme PHP basique : lister un tableau !

Message le Mer Jan 03, 2007 18:37

$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

Mitirapa
WRInaute accro
WRInaute accro
 
Messages: 1649
Inscription: Mer Juil 10, 2002 17:36

Message le Mer Jan 03, 2007 18:48

avec un RAND et LIMIT

DomicilePC
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 210
Inscription: Lun Jan 17, 2005 15:50

Message le Mer Jan 03, 2007 18:50

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

marion17
WRInaute passionné
WRInaute passionné
 
Messages: 518
Inscription: Sam Nov 11, 2006 18:24

Message le Mer Jan 03, 2007 18:57

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

DomicilePC
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 210
Inscription: Lun Jan 17, 2005 15:50

Message le Mer Jan 03, 2007 19:10

<?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...

marion17
WRInaute passionné
WRInaute passionné
 
Messages: 518
Inscription: Sam Nov 11, 2006 18:24

Message le Mer Jan 03, 2007 19:41

tres bien, je vais tester je vous tien au courant

surtout que ta methode va directemetn chercher la requette, et affiche pas toutes les categories, donc gain de ressource !

suite dans quelques instants...

marion17
WRInaute passionné
WRInaute passionné
 
Messages: 518
Inscription: Sam Nov 11, 2006 18:24

Message le Mer Jan 03, 2007 20:08

donc voila precisement ce que j'ai fait, avec des modification :

<?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 passionné
WRInaute passionné
 
Messages: 518
Inscription: Sam Nov 11, 2006 18:24

Message le Mer Jan 03, 2007 20:17

Bon, voila, j'ai rajouter une boucle for :

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 occasionnel
WRInaute occasionnel
 
Messages: 210
Inscription: Lun Jan 17, 2005 15:50

Message le Mer Jan 03, 2007 20:41

Tu n'as pas besoin du while puisque tu n'as qu'un enregistrement.
Tu peux faire directement $r = mysql_fetch_array($res)


biscuit
WRInaute passionné
WRInaute passionné
 
Messages: 519
Inscription: Lun Juin 05, 2006 10:37

Message le Mer Jan 03, 2007 21:01

y'a plus simple non?

Code: Tout sélectionner
select * from nom_de_table order by RAND() LIMIT 10
Dernière édition par biscuit le Jeu Jan 04, 2007 9:57, édité 1 fois.

marion17
WRInaute passionné
WRInaute passionné
 
Messages: 518
Inscription: Sam Nov 11, 2006 18:24

Message le Mer Jan 03, 2007 22:02

DomicilePC a écrit:Tu n'as pas besoin du while puisque tu n'as qu'un enregistrement.
Tu peux faire directement $r = mysql_fetch_array($res)



nan mais je m'était tromper je met bien 10 pas 1 :)

merci alors, biscuit aussi :)

marion17
WRInaute passionné
WRInaute passionné
 
Messages: 518
Inscription: Sam Nov 11, 2006 18:24

Message le Mer Jan 03, 2007 22:47

ha oui je voulais savoir, y a vraiment pas un moyen d'etre sur que ça ne s'affiche pas 2X dans les 10 une donnée ?

Si j'ai pas de soluce a ça j'insiste pas, vous m'avez deja très bien aidé :)

merci

DomicilePC
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 210
Inscription: Lun Jan 17, 2005 15:50

Message le Mer Jan 03, 2007 23:10

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.

marion17
WRInaute passionné
WRInaute passionné
 
Messages: 518
Inscription: Sam Nov 11, 2006 18:24

Message le Mer Jan 03, 2007 23:17

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

DomicilePC
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 210
Inscription: Lun Jan 17, 2005 15:50

Message le Mer Jan 03, 2007 23:23

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...

Probleme PHP basique : lister un tableau !

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités