Probleme PHP basique : lister un tableau !

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par marion17, 3 Janvier 2007.

  1. marion17
    marion17 WRInaute occasionnel
    Inscrit:
    11 Novembre 2006
    Messages:
    412
    J'aime reçus:
    0
    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
     
  2. Mitirapa
    Mitirapa WRInaute passionné
    Inscrit:
    10 Juillet 2002
    Messages:
    1 160
    J'aime reçus:
    0
    avec un RAND et LIMIT
     
  3. DomicilePC
    DomicilePC WRInaute discret
    Inscrit:
    17 Janvier 2005
    Messages:
    169
    J'aime reçus:
    0
    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
     
  4. marion17
    marion17 WRInaute occasionnel
    Inscrit:
    11 Novembre 2006
    Messages:
    412
    J'aime reçus:
    0
    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
     
  5. DomicilePC
    DomicilePC WRInaute discret
    Inscrit:
    17 Janvier 2005
    Messages:
    169
    J'aime reçus:
    0
    <?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...
     
  6. marion17
    marion17 WRInaute occasionnel
    Inscrit:
    11 Novembre 2006
    Messages:
    412
    J'aime reçus:
    0
    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...
     
  7. marion17
    marion17 WRInaute occasionnel
    Inscrit:
    11 Novembre 2006
    Messages:
    412
    J'aime reçus:
    0
    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
     
  8. marion17
    marion17 WRInaute occasionnel
    Inscrit:
    11 Novembre 2006
    Messages:
    412
    J'aime reçus:
    0
    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 :)
     
  9. DomicilePC
    DomicilePC WRInaute discret
    Inscrit:
    17 Janvier 2005
    Messages:
    169
    J'aime reçus:
    0
    Tu n'as pas besoin du while puisque tu n'as qu'un enregistrement.
    Tu peux faire directement $r = mysql_fetch_array($res)
     
  10. biscuit
    biscuit WRInaute occasionnel
    Inscrit:
    5 Juin 2006
    Messages:
    425
    J'aime reçus:
    0
    y'a plus simple non?

    Code:
    select * from nom_de_table order by RAND() LIMIT 10
     
  11. marion17
    marion17 WRInaute occasionnel
    Inscrit:
    11 Novembre 2006
    Messages:
    412
    J'aime reçus:
    0

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

    merci alors, biscuit aussi :)
     
  12. marion17
    marion17 WRInaute occasionnel
    Inscrit:
    11 Novembre 2006
    Messages:
    412
    J'aime reçus:
    0
    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
     
  13. DomicilePC
    DomicilePC WRInaute discret
    Inscrit:
    17 Janvier 2005
    Messages:
    169
    J'aime reçus:
    0
    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.
     
  14. marion17
    marion17 WRInaute occasionnel
    Inscrit:
    11 Novembre 2006
    Messages:
    412
    J'aime reçus:
    0
    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:
     
  15. DomicilePC
    DomicilePC WRInaute discret
    Inscrit:
    17 Janvier 2005
    Messages:
    169
    J'aime reçus:
    0
    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...
     
  16. marion17
    marion17 WRInaute occasionnel
    Inscrit:
    11 Novembre 2006
    Messages:
    412
    J'aime reçus:
    0
    DomicilePC tu a raison je vais augmenter le nombre d'entrés, et les probabilité reprendrons le dessus, je vais pas chercher plus loin :)

    Merci de ta disponibilité, et très bonne nuit a toi ;)
     
  17. madz06
    madz06 Nouveau WRInaute
    Inscrit:
    5 Décembre 2006
    Messages:
    16
    J'aime reçus:
    0
    Et avec SELECT DISTINCT * FROM ...?
     
  18. marion17
    marion17 WRInaute occasionnel
    Inscrit:
    11 Novembre 2006
    Messages:
    412
    J'aime reçus:
    0
    ha je sais pas, c'est censé evité que le nombre aléatoire sois 2X le meme durant la boucle de 10 ? je pense pas..

    merci de ton idée cependant :)
     
  19. madz06
    madz06 Nouveau WRInaute
    Inscrit:
    5 Décembre 2006
    Messages:
    16
    J'aime reçus:
    0
    Au contraire, DISTINCT s'occupe du tri des résultats pour ne jamais renvoyer la même ligne, quellle que soit ta requête SQL (mysql cherchera des lignes différentes tant qu'il ne sera pas arrivé au LIMIT que tu as défini).

    Par contre si tu as des lignes différentes qui ont un nom de catégorie commun, il ne faut pas oublier de demander des résultats distincts pour ce champ.

    Ainsi la requête propre pour faire ce que tu veux devrait ressembler à

    Code:
    SELECT DISTINCT(cat_name) * FROM nom_de_ta_table ORDER BY RAND() LIMIT 10;
     
Chargement...
Similar Threads - Probleme PHP basique Forum Date
PHP : problème de comparaison égalité dans boucle FOR avec incrément décimal de 0.1 Développement d'un site Web ou d'une appli mobile 26 Août 2021
URL canonique et problème entre / et /index.php Débuter en référencement 20 Janvier 2021
Probleme forum phpbb seo Développement d'un site Web ou d'une appli mobile 30 Septembre 2018
Problème de duplicate content avec des URLs contenants /index.php/ URL Rewriting et .htaccess 14 Mai 2018
Problème hiérarchie de classes php. Développement d'un site Web ou d'une appli mobile 9 Janvier 2018
Problème images en https (forum phpbb) [résolu] Développement d'un site Web ou d'une appli mobile 18 Novembre 2017
PHP -Problème retraitement données Mysql avant envoit dans un tableau array Développement d'un site Web ou d'une appli mobile 28 Décembre 2016
Problème avec l'envoi d'un mail sans contenu php Développement d'un site Web ou d'une appli mobile 7 Septembre 2016
Un problème avec php7 Administration d'un site Web 1 Août 2016
Problème erreur redirection cakephp URL Rewriting et .htaccess 4 Avril 2016
problème PHP/Mysql Développement d'un site Web ou d'une appli mobile 29 Octobre 2015
Problème PHPMailer, SMTPSecure (tls ou ssl) : SMTP connect() failed Développement d'un site Web ou d'une appli mobile 6 Juillet 2015
Passage à PHP5.6, problème sur caractères accentués Développement d'un site Web ou d'une appli mobile 24 Juin 2015
Problème d'affichage www.monsite.com/index.php introuvable URL Rewriting et .htaccess 17 Décembre 2014
Problème avec ob_start php Développement d'un site Web ou d'une appli mobile 30 Juillet 2014
Problème pour configurer un virtualhost avec dernière version de Easyphp Développement d'un site Web ou d'une appli mobile 17 Mai 2014
Problème hacking Wordpress - fichiers wp-sample.php et wp-admin/wp-user.php Débuter en référencement 30 Avril 2014
Problème de modication du code html d'un site en CURL et DOM PHP Développement d'un site Web ou d'une appli mobile 11 Avril 2014
Problème sur utilisation d'une tache cron via PHP Développement d'un site Web ou d'une appli mobile 14 Août 2013
Problème version Php Développement d'un site Web ou d'une appli mobile 12 Août 2013