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

PHP & Base de données Discussion :

Fusion de cellule


Sujet :

PHP & Base de données

  1. #1
    Membre actif Avatar de _Carole
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 105
    Points : 264
    Points
    264
    Par défaut Fusion de cellule
    Bonjour,
    Je recherche à fusionner des lignes identiques (=rowspan) d'un tableau généré en PHP, alimenté par les infos de la base de données.

    Petit exemple
    J'ai actuellement :

    Thème | projets
    1 - SI Chor | 787288 0
    1 - SI Chor | 787299 1
    1 - SI Chor | 787866 2
    4 - Projets Fonctionnels | 787531 3
    4 - Projets Fonctionnels | 787954 4
    4 - Projets Fonctionnels | 787916 15
    4 - Projets Fonctionnels | 787287 16
    5 - Maintenance | 787309 17
    ....

    Et je recherche à faire :

    1- SI Chor | 787288 0
    | 787299 1
    | 787866 2
    etc...

    C'est pas évident à "dessiner" mais bon, très simplement ça serait de faire un rowspan pour chaque case "thème" du nombre de projets en faisant partie.
    J'ai donc pensé à un compteur et d'ainsi avoir quelque chose comme :
    <td rowspan=$cpt>THEME</td>
    mais je n'arrive pas à le mettre en place.

    Voici mon code actuel :
    Code php : 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
    18
    19
    20
    21
        <?php
        $c = connec_base();
        $r = pg_exec($c, "select distinct projet_idprojet, ppkrj
                        from realise, projet
                        where service_idservice='$idservice'
                        AND realise.projet_idprojet=projet.idprojet
                        ORDER BY ppkrj;");
        $tab= "<table border=1><tr><th>ppkrj</th><th>projets</th></tr>";
        for ($i = 0; $i < pg_numrows($r); $i++) {
            $l = pg_fetch_array($r);
            $tab.= "<tr><td>".$l['ppkrj']."</td><td>".$l["projet_idprojet"]." $i</td></tr>";
        }
        $tab.= "</table>";
     
        echo $tab;
        // Libère le résultat
        pg_free_result($r);
     
        // Ferme la connexion
        pg_close($c);
        ?>

    En espérant m’être faite comprendre quand même et vous remerciant d'avance !

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 104
    Points : 4 453
    Points
    4 453
    Par défaut
    Bonjour,
    pas simple,

    Il faut dans un premier temps générer la liste complète : fetch_all

    puis ensuite boucler sur cette liste pour la transformer en tableau de tableaux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $liste["theme1"][0]["projet"];
    $liste["theme2"][1]["projet"];
    $moi= ( !== ) ? : ;

  3. #3
    Membre actif Avatar de _Carole
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 105
    Points : 264
    Points
    264
    Par défaut
    Bonjour,
    Par liste complète, je dois comprendre Thème + Projet ?
    Ou alors une liste de projets pour chaque thème ?


    EDIT : Voici une solution de contournement en attendant un peu mieux :

    Code php : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?php
        $tab_theme = list_theme(); //tableau contenant les thèmes
     
        foreach ($tab_theme as $key => $value) {
    //pour chaque thème, on range les projets le concernant dans un tableau
            $tab_proj = list_proj_theme($value, $idservice);
            if (!empty($tab_proj)) {
                $tabphp[$value] = $tab_proj;
                $nb = sizeof($tab_proj);
    //nb=la valeur du rowspan
                $tabphp[$value]['nb'] = $nb+1;
            }
        }
     
    //affichage
        echo "<table border=1>";
     
        foreach ($tabphp as $theme => $projet) {
            $nb = $tabphp[$theme]['nb'];
            echo "<tr><td rowspan=$nb>$theme</td></tr>";
            unset($projet['nb']); //on a plus besoin du nb
            foreach ($projet as $key => $idpro) {
                echo "<tr><td>$idpro - $key</td></tr>";
            }
        }
     
        echo "</table>";
        ?>

    J'ai un peu l'impression d'avoir crée un monstre (genre usine à gaz) enfin je ne sais pas... en tout cas, ça fait ce que je recherche..

  4. #4
    Nouveau membre du Club

    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 6
    Points : 34
    Points
    34
    Par défaut
    Il y a plus simple si je puis me permettre

    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
    18
    19
    20
    21
    22
    23
    $c = connec_base();
     $r = pg_exec($c, "select distinct projet_idprojet, ppkrj
                        from realise, projet
                        where service_idservice='$idservice'
                        AND realise.projet_idprojet=projet.idprojet
                        ORDER BY ppkrj;");
    $old="";
    for ($i=0;$i < pg_numrows($r);$i++)
    {
       $l = pg_fetch_array($r);
       echo '<tr>';
       echo '<td>';
      if ($old != $l['ppkrj'] || $old == "" ) 
      {  
    	$old=$l['ppkrj']; 
    	echo $l['ppkrj'];
      }
      echo '</td>';
      echo '<td>';
      echo $l["projet_idprojet"];
      echo '</td>';
      echo '</tr>';
    }
    Explication: on prend toutes les lignes mais la première colonne ne sera écrite que la première fois, pas les suivantes. Important la requête doit être triée par la première colonne.

Discussions similaires

  1. [VB.NET2003][Framework 2.0] Fusion de cellule
    Par b_lob dans le forum Windows Forms
    Réponses: 8
    Dernier message: 06/04/2006, 11h06
  2. [Swing][JTable]Fusion des cellules d'un tableau
    Par LordBlaize dans le forum Composants
    Réponses: 1
    Dernier message: 23/03/2006, 18h48
  3. [JTable]Fusion de cellules
    Par vincent63 dans le forum Composants
    Réponses: 6
    Dernier message: 13/02/2006, 14h28
  4. [VB6] Problème MsFlexgrid et Fusion des cellules
    Par dubidon dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 07/02/2006, 09h00
  5. [VBA-E] Fusion de cellule
    Par Nicos77 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/07/2004, 13h24

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