IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Random d'un tableau d'objet [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Points : 16
    Points
    16
    Par défaut Random d'un tableau d'objet
    Bonjour a tous,

    Voila mon problème, je cherche a effectué un random sur un tableau d'objet.
    Pour comprendre voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $postparent = '30';
     
    $all_especes = $wpdb->get_results("select * from wp_posts where post_parent = $postparent");
     
     
    foreach ( (array) $all_especes as $page ) {
     
        $all_variete = $wpdb->get_results("select * from wp_posts where post_parent = $page->ID");
     
        $random_img = array_rand($all_variete->ID, 1);
        echo $all_variete[$random_img[0]];
    En gros, j'effectue un requête dans laquelle je récupère un tableau d'objet $page.

    Je rebalance une requête pour récupérer le contenu des pages filles de chaque objet de mon tableau d'objet.
    La dedans, je voudrais faire un random d'une des pages filles... Et la erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: array_rand() expects parameter 1 to be array, null given in C:\wamp\www\pepiniere\wp-content\themes\xxxx\especes\geraniums_vivaces.php on line 13
    Ma question, est il possible de faire un random sur un tableau d'objet ?!

    Une autre fonction existe peut être ?!

    Merci d'avance

    Thib.

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 215
    Points : 170
    Points
    170
    Par défaut
    Salut,

    Je sais pas si c'est très propre mais, tu peux peut-être définir ta fonction random dans une des méthodes de ton modèle? Je m'explique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function array_random($array, $val) {
       return array_rand($array, $val);
    }
    et donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $random_img = $wpdb->array_random($all_variete->ID, 1);

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    Hmm excellente idée, je test NOW !

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    sauf que $all_variete->ID c'est ni un array, ni un object

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    @Niki59 : Marche pas :/

    @stealth35: "Ma question, est il possible de faire un random sur un tableau d'objet ?!"

    C'est ma question... random sur un tableau d'objet possible ?

    Bizou'

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    Bon bah sans succès pour array_rand() :/

    Du coup je suis passé par la fonction shuffle() qui permet de mélanger les éléments d'un tableau.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    foreach ( (array) $all_especes as $page ) {
        //Je selectione les ID fils a mon ID parent
        $all_variete = $wpdb->get_results("select * from wp_posts where post_parent = $page->ID");
        $i=0;
        foreach($all_variete as $variete){
            //je recupere tout les ID fils
            $IDVariete[$i] = "$variete->ID";
            $i++;
        }
        //Je mélange mon tableau
        shuffle($IDVariete);
    Je n'est plus eu qu'a faire une requête pour sélectionner le premier ID de mon tableau mélangé (donc un ID au hasard ^^) et utiliser le tableau d'objets qui en résulte.

    Plus long, mais ça marche

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. retour tableau d'objets par service web axis jboss
    Par TrollMaster dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 27/11/2005, 21h45
  2. Tableau d'objets
    Par moulefrite dans le forum MFC
    Réponses: 7
    Dernier message: 15/06/2004, 14h14
  3. Sauvegarde / Chargement d'un tableau d'objets
    Par Naruto dans le forum Langage
    Réponses: 3
    Dernier message: 18/05/2004, 14h34
  4. [VB6]Tableau d'objet withevents
    Par soazig dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 13/02/2004, 19h44
  5. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 15h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo