Partage
  • Partager sur Facebook
  • Partager sur Twitter

adapter treeview bootstrap a ma base de donnee

    13 décembre 2018 à 13:51:55

    salut tous le monde , j'ai un soucis avec array php et c'est super urgent:

    je veux enfin de conte avoir un tableau comme ça:

    <?php
    $arr = Array
        (
      0 => Array
        (
                'text' => '2018-11-01>123456>cassa',
                'nodes' => Array
                    (
                        0 => Array
                            (
                                'text' => '32weds>has>aaaaa',
                                'nodes' => Array
                                   (
                                    0 => Array
                                       (
                                        'text' => '32.png',              
                                       ),
                                   ),
                            ),
    
                        1 => Array
                            (
                                'text' => 'aegergert24562>han>asdfsd',
                                'nodes' => Array
                                   (
                                    0 => Array
                                       (
                                        'text' => '32(1).png',              
                                       ),
                                   ),
                            ),
    
                        2 => Array
                            (
                                'text' => 'qwerty>has>aaaaa',
                                'nodes' => Array
                                   (
                                    0 => Array
                                       (
                                        'text' => '5384a97ee9d6b (2).pd',              
                                       ),
                                   ),
                            ),
    
                    ),
    
            ),
    
    
        1 => Array
            (
                'text' => '2018-11-02>1234>cassa',
                'nodes' => Array
                    (
                        0 => Array
                            (
                                'text' => 'qwerty>has>aaaaa',
                                'nodes' => Array
                                   (
                                    0 => Array
                                       (
                                        'text' => 'rr.png',              
                                       ),
                                   ),
                            ),
                        1 => Array
                            (
                                'text' => 'sDFSDF>ha>aaaaa',
                                'nodes' => Array
                                   (
                                    0 => Array
                                       (
                                        'text' => 'ff.png',              
                                       ),
    
                                   ),
                            ),
                        2 => Array
                            (
                                'text' => '32weds>jj>aaaaa',
                                'nodes' => Array
                                   (
                                    0 => Array
                                       (                                  
                                        'text' => '16 (3).png',          
                                       ),
                                   ),
                            ),
    
                    ),
    
            ),
    
    
        2 => Array
            (
                'text' => '2018-11-26>54321>paris',
                'nodes' => Array
                    (
                        0 => Array
                            (
                                'text' => 'sDFSDF>han>aaaaa',
                                'nodes' => Array
                                   (
                                    0 => Array
                                       (
                                        'text' => 'ff.png',              
                                       ),
                                    1 => Array
                                       (
                                        'text' => 'rr.png',
                                       ),
                                    2 => Array
                                       (                                  
                                        'text' => '16 (3).png',          
                                       ),
                                   ),
                            ),
    
                    ),
    
            ),
    
    );
    $data = $arr;
    echo json_encode($data);
    ?>

    donc mon code php avec plusieurs essais est le suivant :

    $connect = mysqli_connect("localhost", "root", "", "test");
    $query = " SELECT * FROM saisie order by date, n_trans, destination, n_fact, client, transitaire ";
    $result = mysqli_query($connect, $query);
    while($row = mysqli_fetch_array($result))
    {
    $sub_data["code"] = $row["code"];
    $sub_data["text"] = $row["date"].'>'.$row["n_trans"].'>'.$row["destination"]; 
    $sub_data["text1"] = $row["n_fact"].'>'.$row["client"].'>'.$row["transitaire"]; 
    $sub_data["nom_doc"] = $row["nom_doc"];     
    $data[] = $sub_data;    
    }
    $output = array();
    foreach($data as &$value)
    {
    $id = $value['text']; 
    $id1 = $value['text1'];   
    if(!isset($id)){
    if(!array_key_exists($value['text1'], $output)){
    $output[$id1] = array(
    'text' => $id1,
    'nodes' => array()    
    );
    }    
    $output[$id1]['text']= &$value;
    }else{    
    if(!array_key_exists($value['text'], $output)){
    $output[$id] = array(
    'text' => $id,
    'nodes' => array()    
    );
    }
    $output[$id]['nodes'][$id1] = &$value;
    }
    }

    et comme je suis pas vraiment fort en tableau php je n'arrive pas au même résultat , si quelqu'un peu m'aider je serais ravis ,

    et merci d'avance .

    -
    Edité par codecode11 14 décembre 2018 à 14:56:39

    • Partager sur Facebook
    • Partager sur Twitter
      13 décembre 2018 à 18:32:07

      Bonjour,

      Alors je t'avais fait un message qui explique tout bien etc, sur l'un des autres sujet que tu as ouvert ... qui a été fermer entre temps par la modérations (du coup j'ai "perdu" le gros pavé que je t'avais fait).

      Et j'ai la flemme de recommencer, donc si tu as des questions sur le code javascript n'hésite pas (normalement il est suffisamment commenter)

      Donc, voici le JSON que j'ai utiliser pour mes essaie : 

      [{
         "client": "Moa1",
         "date": "1544718432637",
         "destination": "ailleurs",
         "id": "1",
         "fichier": "coucou",
         "type-fichier": "txt"
      },{
         "client": "Moa2",
         "date": "1544718432946",
         "destination": "paris",
         "id": "2",
         "fichier": "yoloooo",
         "type-fichier": "png"
      },{
         "client": "Moa1",
         "date": "1544718432637",
         "destination": "ailleurs",
         "id": "3",
         "fichier": "coucou",
         "type-fichier": "txt"
      },{
         "client": "Moa2",
         "date": "1544718432946",
         "destination": "paris",
         "id": "4",
         "fichier": "yoloooo",
         "type-fichier": "png"
      },{
         "client": "Moa1",
         "date": "1544718432637",
         "destination": "ailleurs",
         "id": "5",
         "fichier": "coucou",
         "type-fichier": "txt"
      },{
         "client": "Moa2",
         "date": "1544718432946",
         "destination": "paris",
         "id": "6",
         "fichier": "yoloooo",
         "type-fichier": "png"
      },{
         "client": "Moa1",
         "date": "1544718432637",
         "destination": "ailleurs",
         "id": "7",
         "fichier": "coucou",
         "type-fichier": "txt"
      }]

      Le code HTML que j'ai utiliser avec mon script : 

      <html>
      	<head>
      		<meta charset="UTF-8">
      		<title>Alexis ~ lab</title>
      		<script src="./JQy.min.js"></script>
      	</head>
      	<body>
      		<div id="treeview"></div>
      		<script src="./fetch.js"></script>
      	</body>
      </html>

      Et enfin, le code javascript qui répondra a ta question : 

      const fetch= (callback)=> {
      	$.ajax({ 
      		url: "http://alexis/test/fetch.json",
      		method:"GET",
      		dataType: "json",      
      		success: callback
      	});
      };
      
      const splitOfWith= (tableau, property)=> {
      	let listOfArray= {};
      	for(let a=0;a<tableau.length;a++) {
      		//Je récupére la valeur de la propriètès selon laquel
      		//on doit faire le regroupement dans une variable.
      		let currentProperty= tableau[a][property];
      		//si dans mon objet "listOfArray" je n'ai pas cette propriètès alors je la crée
      		//pour eviter les erreurs de déclaration.
      		if(!listOfArray.hasOwnProperty(currentProperty)) { 
      			listOfArray[currentProperty]= [];
      		}
      		//Ensuite je rajoute tout simplement l'objet complet dans le tableau ainsi défini.
      		listOfArray[currentProperty].push(tableau[a]);
      	} return listOfArray; //Je renvoie un objet regrouper par valeur de property
      };
      
      //Lorsque le document est prêt je commence a rajouter mon arbre :
      $(document).ready(()=> {
      	//J'utilise la fonction crée pour la requete ajax afin de récupéré mon JSON.
      	fetch((monJson)=> {
      		//Je regroupe en fonction du client grace a la fonction splitOfWith.
      		let objetOfClient= splitOfWith(monJson, 'client');
      		//Puis je le parcours "a l'aveugle"
      		for(let client in objetOfClient) {
      			//Ensuite je regroupe en fonction de la date
      			let objetOfDate= splitOfWith(objetOfClient[client], 'date');
      			//J'injecte dans le HTML le client :
      			$('#treeview').append($('<h1/>', {
      				'text': `------${client}`
      			}));
      			//Je parcours le resultat
      			for(let date in objetOfDate) {
      				//On regroupe a nouveau, par destination
      				let objetOfDestination= splitOfWith(objetOfDate[date], 'destination');
      				//je crée une date javascript avec le timestamp : 
      				let thisDate= new Date(parseInt(date));
      				//J'injecte la date :
      				$('#treeview').append($('<h4/>', {
      					'text': `${thisDate.getDate()}/${thisDate.getMonth()+1}/${thisDate.getFullYear()}`
      				}));
      				//Et on parcours le resultat
      				for(let destination in objetOfDestination) {
      					//Je stocke dans une variable juste pour avoir un nom de variable plus court 
      					let endTab= objetOfDestination[destination];
      					//On injecte la destination :
      					$('#treeview').append($('<p/>', {
      						'text': `---${destination}`
      					}));
      					//Et enfin, je parcours les tableau sans les regrouper pour afficher les autre valeurs :
      					for(let index in endTab) {
      						//En enfin, on injecte l'id, le fichier et le type de fichier :
      						//par simpliciter je crée un tableau avec les trois
      						//et je le join() avec un saut de ligne.
      						let lesTrois= [`------${endTab[index]['id']}`, `------${endTab[index]['fichier']}`, `------${endTab[index]['type-fichier']}`];
      						$('#treeview').append($('<pre/>', {
      							'text': lesTrois.join('\n')
      						}));
      					}
      				}
      			}
      			//J'injecte une séparation juste avant le changement de client,
      			//Pour avoir un affichage un peu plus claire
      			$('#treeview').append($('<hr/>'));
      		}
      	});
      });

      Edit: et le résultat obtenu : 

      -
      Edité par Angelisium 13 décembre 2018 à 18:35:19

      • Partager sur Facebook
      • Partager sur Twitter

          !

        13 décembre 2018 à 19:13:08

        merci Angelisium pour ta réponse ,étant un petit peu debutant en javascript j'ai pas vraiment compris le script mais pour le résultat final ,je dois l'avoir comme cette photo

        en changeant usa canada et Australia par des dates et dedans on trouve la destination et dedans on trouve les fichiers c'est un tableau arbre et j'aimerais le faire avec php et le résultat en json . et merci infiniment pour ton temps et ta patience.

        • Partager sur Facebook
        • Partager sur Twitter
          13 décembre 2018 à 19:36:19

          Euh, j'ai pas compris ^^
          Tu veut bien afficher le treeview en javascript ?

          • Partager sur Facebook
          • Partager sur Twitter

              !

            13 décembre 2018 à 19:40:27

            sans passer par javascript je veux faire un tableau php puis l'encoder en json
            • Partager sur Facebook
            • Partager sur Twitter
              13 décembre 2018 à 19:42:30

              Je ne comprend pas ce que tu souhaite faire.
              Tu veut "écrire" le html directement coter serveur avec PHP ?

              Quel intérêt de l'encoder en JSON dans ce cas ?

              • Partager sur Facebook
              • Partager sur Twitter

                  !

                13 décembre 2018 à 20:09:44

                alors je récapitule : 

                dans mon fichier index.php j'ai le code suivant qui génère le treeview en javascript :

                 <div id="treeview" style="width:900px;"></div>
                
                    <script type="text/javascript" charset="utf8" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-treeview/1.2.0/bootstrap-treeview.min.js"></script>
                    <script src="js/jquery-3.2.1.min.js"></script>
                <script type="text/javascript">
                     $(document).ready(function(){
                       $.ajax({  
                           url: "fetche.php",
                           method:"POST",
                           dataType: "json",       
                           success: function(data)  
                               {
                                  $('#treeview').treeview({data: data});
                               }   
                      });
                     });
                    </script> 

                donc il me reste le fetch.php qui m'envoi un fichier json dont la structure :

                Array
                (
                    [0] => Array
                        (
                            [text] => 21/09/2018
                            [nodes] => Array
                                (
                                    [0] => Array
                                        (
                                            [text] => New York
                                            [nodes] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [text] => uu.pdf
                                                        )
                
                                                    [1] => Array
                                                        (
                                                            [text] => ff.pdf
                                                        )
                
                                                    [2] => Array
                                                        (
                                                            [text] => ii.pdf
                                                        )
                
                                                )
                
                                        )
                
                
                                    [1] => Array
                                        (
                                            [text] => California
                                            [nodes] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [text] => kk
                                                        )
                
                                                    [1] => Array
                                                        (
                                                            [text] => nn
                                                        )
                
                                                    [2] => Array
                                                        (
                                                            [text] => oo
                                                        )
                
                                                )
                
                                        )
                
                                )
                
                        )
                
                    [1] => Array
                        (
                            [text] => 12/08/2012
                            [nodes] => Array
                                (
                                    [0] => Array
                                        (
                                            [text] => Ontario
                                            [nodes] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                           
                                                            [text] => jj
                                                        )
                
                                                    [1] => Array
                                                        (
                                                            [text] => ju
                                                        )
                
                                                )
                
                                        )
                
                                    [1] => Array
                                        (
                                            [text] => British Columbia
                                            [nodes] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [text] => jjj
                                                           
                                                        )
                
                                                    [1] => Array
                                                        (
                                                            [text] => oosew
                                                        )
                
                                                )
                
                                        )
                
                                )
                
                        )
                

                et merci pour ta patience 


                -
                Edité par codecode11 14 décembre 2018 à 14:55:12

                • Partager sur Facebook
                • Partager sur Twitter
                  14 décembre 2018 à 7:45:45

                  Donc ton problème vient de ton PHP ou te ton JS ?
                  • Partager sur Facebook
                  • Partager sur Twitter

                      !

                    14 décembre 2018 à 12:34:39

                    Donc je déplace vers PHP et supprime ton doublon.
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Pas d'aide concernant le code par MP, le forum est là pour ça :)

                      14 décembre 2018 à 14:09:27

                      Bonjour,

                      Donc, ma fonction pour "regrouper" plusieurs objet d'un array en javascript donne ça en php : 

                      <?php
                      function splitOfWith($tableau, $property) {
                          $listOfArray= array();
                          foreach($a in $tableau) {
                              $currentProperty= tableau[$a][$property];
                              if(!isset($listOfArray[$currentProperty])) {
                                  $listOfArray[$currentProperty]= array();
                              }
                              $listOfArray[$currentProperty][]= $tableau[$a];
                          } return $listOfArray;
                      }
                      ?>

                      Tu crée un array avec tout les objets que tu récupère dans ta BDD et ensuite tu utilise ma fonction comme ceci :

                      $arrayByDate= splitOfWith($tonArray, 'date');

                      Ensuite tu utilise foreach(... in ...)sur le résultat de ma fonction et tu l'enregistre dans un objet comme ceci :

                      $monObjetFinal= array();
                      foreach... { #je te laisse le compléter correctement
                      $monObjetFinal[]= array();
                         #ensuite re foreach etc etc
                      }

                       Si j'ai le temps je te ferais peut-être un exemple + complet (mais en gros c'est juste une convertion de mon code JS vers du PHP, et au lieu d'afficher du HTML tu enregistre dans un objet... basique quoi :)

                      • Partager sur Facebook
                      • Partager sur Twitter

                          !

                        14 décembre 2018 à 14:43:51

                        merci pour ta réponse et oui j'aimerais bien que tu me fasse un exemple complet vue que j'ai changer la question ,et merci infiniment.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          14 décembre 2018 à 17:34:39

                          Bonsoir,

                          Comme je n'ai pas mon environnement PHP sous la main (seulement node.js) j'ai travailler la fonction en javascript.
                          Fort heureusement je n'utilise aucune fonction propre a javascript, tu n'aura donc aucun mal a faire la conversion vers PHP.

                          Voici la nouvelle fonction (javascript ducoup) : 

                          var regroupe= (arr, prop)=> {
                          	let tempo= {};
                          	for(let a=0;a<arr.length;a++) {
                          		let cP= arr[a][prop[0]];
                          		if(!tempo.hasOwnProperty(cP)) {
                                      tempo[cP]= [];
                                  } tempo[cP].push(arr[a]);
                          	}
                          	let final= [];
                          	for(let a in tempo) {
                          		let node;
                          		if(prop.length>1) {
                          			node= regroupe(tempo[a], prop.slice(1))
                          		} else {
                          			node= tempo[a];
                          		}
                          		final.push({
                          			text: a,
                          			nodes: node
                          		});
                          	} return final;
                          };

                          Pour l'utiliser tu l'utilise ainsi : 

                          regroupe(LeTableauOriginel, ['date', 'dest']);

                          Avec ces données : 

                          var arr= [
                          	{date: '21/09/2018', dest: 'New York', text: 'uu.pdf'},
                          	{date: '21/09/2018', dest: 'New York', text: 'ff.pdf'},
                          	{date: '21/09/2018', dest: 'New York', text: 'ii.pdf'},
                          	{date: '21/09/2018', dest: 'California', text: 'kk'},
                          	{date: '21/09/2018', dest: 'California', text: 'nn'},
                          	{date: '21/09/2018', dest: 'California', text: 'oo'},
                          	{date: '12/08/2012', dest: 'Ontario', text: 'jj'},
                          	{date: '12/08/2012', dest: 'Ontario', text: 'ju'},
                          	{date: '12/08/2012', dest: 'British Columbia', text: 'jjj'},
                          	{date: '12/08/2012', dest: 'British Columbia', text: 'oosew'}
                          ];

                          Le résultat convertie en JSON: 

                          [{
                          	"text": "21/09/2018",
                          	"nodes": [{
                          		"text": "New York",
                          		"nodes": [{
                          			"date": "21/09/2018",
                          			"dest": "New York",
                          			"text": "uu.pdf"
                          		},
                          		{
                          			"date": "21/09/2018",
                          			"dest": "New York",
                          			"text": "ff.pdf"
                          		},
                          		{
                          			"date": "21/09/2018",
                          			"dest": "New York",
                          			"text": "ii.pdf"
                          		}]
                          	},
                          	{
                          		"text": "California",
                          		"nodes": [{
                          			"date": "21/09/2018",
                          			"dest": "California",
                          			"text": "kk"
                          		},
                          		{
                          			"date": "21/09/2018",
                          			"dest": "California",
                          			"text": "nn"
                          		},
                          		{
                          			"date": "21/09/2018",
                          			"dest": "California",
                          			"text": "oo"
                          		}]
                          	}]
                          },
                          {
                          	"text": "12/08/2012",
                          	"nodes": [{
                          		"text": "Ontario",
                          		"nodes": [{
                          			"date": "12/08/2012",
                          			"dest": "Ontario",
                          			"text": "jj"
                          		},
                          		{
                          			"date": "12/08/2012",
                          			"dest": "Ontario",
                          			"text": "ju"
                          		}]
                          	},
                          	{
                          		"text": "British Columbia",
                          		"nodes": [{
                          			"date": "12/08/2012",
                          			"dest": "British Columbia",
                          			"text": "jjj"
                          		},
                          		{
                          			"date": "12/08/2012",
                          			"dest": "British Columbia",
                          			"text": "oosew"
                          		}]
                          	}]
                          }]

                          Edit: correction d'une petite erreur (quand le cerveau vas plus vite que les mains xd)

                          -
                          Edité par Angelisium 14 décembre 2018 à 17:43:59

                          • Partager sur Facebook
                          • Partager sur Twitter

                              !

                            14 décembre 2018 à 18:20:39

                            bonsoir Angelisium merci pour la réponse je vais essayer de la convertir en php et voire ce que ça donne ,mais avant j'ai cibler mon pb aprèsplusieurs essais donc j'ai pu changer le message , si tu peux relire le premier message attentivement et voir si tu peux m'aider car je me sens incapable de transmettre mon vrais pb et merci d'avance , a+
                            • Partager sur Facebook
                            • Partager sur Twitter

                            adapter treeview bootstrap a ma base de donnee

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown