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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 30
    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 chevronné 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
    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é)

  3. #3
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 30
    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