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 :

Tableau Dynamique Php


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Par défaut Tableau Dynamique Php
    Bonjour a tous,

    Je me permet de solliciter votre connaissance sur mon problème.

    Donc je m'explique , j'ai un array() de n photo que je récupère en base. Cet array je voudrais l'afficher dans un tableau (table) , avec un maximum de 4 photos par lignes.

    Comment puis-je procéder ? , quel boucle utilisé pour une performance maximum ?

    Merci d'avance

    Vassilis

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Par défaut
    Moi j'utiliserais une simple boucle for qui parcours tout ton tableau, et soit un compteur pour compter les 4 par ligne, soit un modulo.

    A moins d'avoir des millions de lignes, je suis pas certains de gagner du temps entre un while, un for, un foreach, etc Prend au plus simple pour toi.

  3. #3
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Pour faire des vignettes, un tableau c'est pas l'idéal. Fais ça avec une grille toute simple

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <div class="thumb-grid">
        <?php foreach ($pictures as $picture): ?>
        <div class="thumb">
            <a href="<?php echo $picture['url'] ?>">
                <img src="<?php echo $picture['thumb'] ?>" alt="<?php echo $picture['label'] ?>">
                <span><?php echo $picture['description'] ?></span>
            </a>
        </div>
        <?php endforeach ?>
    </div>
    Ensuite, il suffit de faire flotter les .thumb et les dimentionner avec CSS et c'est dans la boite.

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Par défaut
    j'ai pas totalement cerné le truc ,

    j'ai mon array que je parcoure avec un foreach :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $pic = $cnx->select("SELECT chemin_pic from picture ");
     
    foreach($pic as $value){
        echo '<td>'. '<img src=' . $value[0] .' />'.'</td>';
    }
    Au bout de la 4eme valeurs , faut que je fasse un genre de retour a la ligne et que mon tableau continue a se remplir mais toujours avec 4 valeurs par ligne , je vois pas du tout comment procéder...

    Merci d'avance

    Vassilis

  5. #5
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    le retour à la ligne dans un tableau correspond à une nouvelle ligne du tableau.
    Tu dois juste insérer un <tr>.[4 IMAGES].</tr> toutes les 4 images affichées.

  6. #6
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    modulo

    C'est cool t'avoir tenu compte de ma remarque, ça fait plaisir. J'aurais pu insister sur le fait qu'une grille d'images ne caractérise pas des données tabulaires et que donc l'usage d'une table est inapproprié mais je pensais que c'était implicite... Je pensais également que les développeurs web accordaient de l'importance à la sémantique dans les flux HTML, mais visiblement c'est pas le cas.

    Par ailleurs, je serai curieux de voir ce qui se cache sous $cnx->select

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Par défaut
    effectivement je n'avais pas vu ta réponse , je teste vos solution et je vous tien au courant.

    Merci infiniment

    EDIT : pour ta curiosité =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public function select($SQL) {
            // Execution de la requête
            $res = mysql_query($SQL, $this->_mysql);
            // La requete ne passe pas
            if ($res === FALSE) {
                // Affiche l'erreur
                echo mysql_error();
                return false;
            }
            // Tableau de retour
            $var = array();
            // Insertion dans le tableau de retour
            while ($results = mysql_fetch_array($res))
                $var[] = $results;
            // Retourne le tableau
            return $var;
        }

  8. #8
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Houlà, elle vient d'où cette classe ? Tu sais qu'il existe un risque de dépassement mémoire sur cette méthode ?

    ça par contre c'est très bien if ($res === FALSE) (dans les faits if (!$res) suffit amplement), je vois tellement de code sources sur DVP où le développeur ne teste même pas le retour de l'exécution de la requête (ou pire, fait un or die(mysql_error()))

    tu devrais sérieusement considérer l'usage de PDO ou de mysqli, quitte à faire de l'objet pour l'accès aux bases, autant le faire bien

  9. #9
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Par défaut
    Nan je ne savais pas , merci de me l'apprendre ! c'est moi qui l'ais faites
    Ok je vais me tourné vers PDO.

    Merci

  10. #10
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Pour être plus explicite: il y a un risque de dépassement mémoire si le volume de données (nombre de tuples pour être exact) est important vu que tout est mis dans le tableau $var. Donc si tu as un million d'entrées retournées, y'a un risque sérieux de dépasser les 128mo allouables par PHP (j'ai eu le cas cette semaine sur un de nos composants...)

    Pour résoudre le problème, on peut utiliser les PDOStatements qui ne vont chercher (fetcher) les données qu'au moment ou on les utilise, on n'a donc qu'un seul tuple à la fois en mémoire.

  11. #11
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Par défaut
    Ah ok je ne savais pas que PHP allouais 128Mo maximum.

    PDOStatements => sa ma l'air être ce qu'il me faut pour gérer un tres grand nombre d'enregistrement

    Pour mon problème j'ai trouvé une solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $i = 0;
     foreach($pic as $value){
     
                            $i++;
                            echo '<td>'. '<img src=' . $value[0] .' />'.'</td>';
     
                            // 4 image par lignes :)
                            if($i == 4){
                                echo '</tr><tr>';
                                $i = 0;
                            }
                        }
    Je pense que je vais me tourné vers une grille comme tu me le suggère B.Delespierre.

    Merci d'avoir accordé du temps a mes question.

    (je met en résolue)

    Bonne fin de journée

    PEACE !

  12. #12
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Compression:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    foreach ($pic as $i => $value)
        printf('<td><img src="%s" /></td>%s', $value, $i%4 ==0 ? '</tr><tr>' : '');
    Merci d'avoir accordé du temps a mes question.
    *sarcasme* Merci à toi d'avoir tenu compte des réponses proposées.

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

Discussions similaires

  1. tableau dynamique php
    Par totot dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/01/2014, 18h52
  2. Tableau dynamique PHP et injections multiples MySQL
    Par saez58 dans le forum Langage
    Réponses: 7
    Dernier message: 15/05/2013, 13h53
  3. [MySQL] Enregistrements simultanné des données d'un tableau dynamique PHP
    Par abablex dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 02/05/2012, 19h02
  4. [Joomla!] Tableau dynamique (php)
    Par bugs_budy dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 19/03/2008, 21h00
  5. [SQL] Recupération Requete SQL dans un tableau dynamique PHP
    Par victor.jbju dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 13/09/2006, 16h48

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