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 :

Construction dynamique d'un "list treeview"


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 30
    Points : 28
    Points
    28
    Par défaut Construction dynamique d'un "list treeview"
    Bonjour,

    J'ai un ptit souci pour construire ma liste en style treeview et je n arrive pas a voir ce qui cloche.

    Ce que j aimerai obtenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        *  Contrat 1
              o c 1-1
              o c 1-2
        * Contrat 2
        * Contrat 3
              o c 3-1 
              o c 3-2
        * Contrat 4
    Les numero de contrats sont de la forme:

    L00xxx1
    L00xxx1-1
    L00xxx1-2
    L00xxx2
    L00xxx3
    L00xxx3-1
    L00xxx3-2
    L00xxx4

    Mon code Php:
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    	<?php 
    	$req = "SELECT cont_num FROM contrats WHERE id_part='".$idp."' ORDER BY cont_num";
    	$res = mysql_query($req,$connexion);
     
    	$temp = array();   //Creation d un tableau pour stoké les contrats
    	$i=0;              //initialisation du compteur
     
    	$treecontrat = "<ul>";
     
    	while($row = mysql_fetch_array($res)){
     
    		$numc = explode("-",$row['cont_num']); //recup string debut contrat ( tt ski est avant le  - )
    		$temp[$i] = $numc[0];
     
    		if($i=0){                              //si premier enregistrement
    			$treecontrat .= "<li>".$row['cont_num']."</li>";
    		}
    		else{                                  //2eme enregistrement ou +
     
    			if($temp[$i]!=$temp[$i-1]){        //si le debut du contrat est identique au contrat precedent
     
    				$treecontrat .= "<li>".$row['cont_num']."</li>"; //on construit un nouveau contrat
    			}
    			else{
     
    				$treecontrat .= "<ul><li>".$row['cont_num']."</li>"; //on rajoute le contrat dans le sous menu
    			}
    		}
     
     
    		$i++;
    	}
    	$treecontrat .= "</ul>";
    	echo $treecontrat;
    	?>
    Le problème c est qu' on arrive jamais dans la boucle " rajout dans le sous-menu" donc j obtiens toujours :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        *  Contrat 1
        *  c 1-1
        *  c 1-2
        * Contrat 2
        * Contrat 3
        * c 3-1 
        * c 3-2
        * Contrat 4
    Est ce que vous pouvez m éclairer un petit peu?
    Merci d'avance.

  2. #2
    Membre averti Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Points : 392
    Points
    392
    Par défaut
    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
    24
    25
    26
    27
    28
    <?php 
       $req = "SELECT cont_num FROM contrats WHERE id_part='".$idp."' ORDER BY cont_num"; 
       $res = mysql_query($req,$connexion); 
     
       $temp = array();   //Creation d un tableau pour stoké les contrats 
       $i=0;              //initialisation du compteur 
     
       $treecontrat = "<ul>"; 
     
       while($row = mysql_fetch_array($res)){ 
     
          $numc = explode("-",$row['cont_num']); //recup string debut contrat ( tt ski est avant le  - ) 
          $ul = false;
    	  if ($numc == $row['cont_num']){
    		if ( $ul) $treecontrat .= </ul>
     
    	  }else{
    		if ( ! $ul ) {
    			$ul = true;
    			$treecontrat .= <ul>
    		}
    	  }
    	  $treecontrat .= "<li>".$row['cont_num']."</li>";
     
       } 
       $treecontrat .= "</ul>"; 
       echo $treecontrat; 
       ?>
    j'essayerai plutôt ainsi (n'ayant pas ta DB ... j'ai pas testé)
    Le but de tout developpeur OO est de devenir une référence.
    Mon avatar est un ambigramme, les curieux peuvent le retourner ;-)
    Aider <> Faire a la place de!!!

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 30
    Points : 28
    Points
    28
    Par défaut
    Merci beaucoup, Jme suis inspiré de ton $ul pour effectivement savoir si on doit continuer une sous liste ou pas.

    Par contre je viens de me rendre compte pourquoi il rentrait jamais dans la boucle sous-menu.

    Quand je fait un var_dump($temp) je n ai ke le premier et dernier resultat de ma requete .

Discussions similaires

  1. Simple Quotes liste déroulante
    Par totot dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 12/02/2014, 11h22
  2. construction dynamique d'une liste
    Par tanguy.L dans le forum Prolog
    Réponses: 9
    Dernier message: 08/03/2010, 08h03

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