Creer une arborecense a partir de donnees sql

Résolu/Fermé
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 - 25 févr. 2023 à 20:10
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 - 4 mars 2023 à 19:12

Bonjour

J ai une table 

	id 	pais 	grupo 	cat 	sub_cat_1 	sub_cat_2 	sub_cat_3 	nombre_variable 	titulo 	texto 	
	1 	ES 	NOSOTROS 	INICIO 	sin_sub 	sin_sub 	sin_sub 	carousel1 	CAROUSEL1 	 ffffffffffffff
	14 	ES 	NOSOTROS 	INICIO 	sin_sub 	sin_sub 	sin_sub 	carousel2 	carousel2 	agua fresca y reposo para hacer bien el camino
	3 	IT 	NOSOTROS 	NOSOTROS 	sin_sub 	sin_sub 	sin_sub 	nosotros 		en italiano nosotros somos los de la
	4 	ES 	NOSOTROS 	QUE_ES 	historia casa 	sin_sub 	sin_sub 	historia_casa 		que es historia casa
	5 	ES 	NOTICIAS 	NOTICIAS 	NOTICIAS DE LA CANSERA 	la casa 	sub 3 du 25/5/58 	noticias_du_01_01_2022 	Notiica del 01/01/2022 	este el las noticias del 01/01/2022
	6 	IT 	NOSOTROS 	INICIO 	sin_sub 	sin_sub 	sin_sub 	carousel1 		 italiano dskfhsdkhdfjkhsdklfh
	7 	ES 	NOSOTROS 	QUE_ES 	nuestro compromiso 	sin_sub 	sin_sub 	nuestro_compromiso 		nuestro compromiso
	8 	ES 	NOTICIAS 	NOTICIAS 	NOTICIAS DU CHEMIN 	sin_sub 	sin_sub 	noticias_du_chemin 	estadisticas 	estadistidacas del camino
	9 	ES 	NOTICIAS 	NOTICIAS 	NOTICIAS DE LA CANSERA 	la obra 	sin_sub 	noticias_obra 	las fachadas 	las nuevas obras d ela fachadas de la casa
	10 	ES 	NOTICIAS 	NOTICIAS 	NOTICIAS DE LA CANSERA 	sin_sub 	sin_sub 	noticias_obra-2 	El porche en obra 	 le nouveau porche d entree
	11 	ES 	NOTICIAS 	NOTICIAS 	meteo 	sin_sub 	sin_sub 	meteo 	la meteo 	el tiempo
	12 	FR 	NOTICIAS 	NOTICIAS 	INFO DE LA CANSERA 	les travaux 	sin_sub 	noticias_obra 	las facades 	les nouvelles facadesa d e la maison
	13 	ES 	NOSOTROS 	NOSOTROS 	sin_sub 	sin_sub 	sin_sub 	historia_casa 	historia de la casa 	la casa es de todo los tiem,po casa de acogida
	15 	ES 	NOTICIAS 	sin_sub 	sin_sub 	sin_sub 	sin_sub 	var_sin_sub 	titulo vide 	texte vide
	16 	ES 	NOTICIAS 	NOTICIAS 	sin_sub 	sin_sub 	sin_sub 	sin_kli 	categhoria vide 	categoria vide

Je voudrai obtenir l'arborecense suivante:

NOTICIAS (grupo)

   - NOTICIAS (CAT)

       - NOTICIAS DU CHEMIN (SUB_CAT)

              */* ESTADISTICAS   (TEXTE)

      -  NOTICIAS DE LA CANSERA (SUB_CAT)

                -  NOTICIAS DE LA CANSERA (SUB_CAT)

                       - LA OBRA (SUB_CAT)

                                     */* ESTADISTICAS   (TEXTE)

                       - LA CASA (SUB_CAT)

                              -  SUB 3 DU 25/5/58 (SUB_CAT)

                                      */*noticia del 1/1/2022  (TEXTE)

       - METEO (sub_cat)

                */* meteo   (TEXTE)

J'ai préparé ceci:

                $cat = $_POST["pestaña"];
				echo "<table border='1' width='80%'>";
		//AFFICHAGE DE LA CATEGORIE	
				$liste_1 = $sql_texto-> prepare ('SELECT * FROM variables_textos WHERE grupo ="'.$cat.'" AND pais="ES"  ');
				$liste_1->execute();
				$res_1 = $liste_1->fetchAll();
				foreach ( $res_1 as $row ) 
				{					
						
				$categoria = $row['cat'];
				$marge = 35;
				if($categoria != "sin_sub")
					{
					$categorie = $categoria;
					lignecategorie($marge, $categorie);
					
					$liste_2 = $sql_texto-> prepare ('SELECT * FROM variables_textos WHERE cat ="'.$categorie.'" AND pais="ES"  ');
					$liste_2->execute();
									
					while ($l_2 = $liste_2->fetch())
						{	
						$sub_cat_1 = $l_2['sub_cat_1'];
						$marge = 70;
						if($sub_cat_1 != "sin_sub")
							{
							$categorie = $sub_cat_1;
							lignecategorie($marge, $categorie);
							}
						}
					}
					else
					{
					$marge = 150;
					$titulo = $row['titulo'];
					//$titulo = $l_1_1['titulo'];
					lignetitulo($marge, $titulo);
							
					}
		
				
		
						
				}		
									
					echo "</table>";


function lignecategorie($marge, $categorie)
		{
?>
				<tr>
					<td width='70%' >
						<span style='margin-left:<?php echo $marge;?>px'><?php echo $categorie;?></span>
					</td>
					<td></td>
					<td></td>
					<td></td>
				</tr>
<?php
		}	

		function lignetitulo($marge, $titulo)
		{
?>
				<tr>
					<td width='70%' >
						<span style='margin-left:<?php echo $marge;?>px'><?php echo $titulo;?></span>
					</td>
					<td></td>
					<td></td>
					<td></td>
				</tr>
<?php
		}	

Mais avec ceci le resultat est :

NOTICIAS
     NOTICIAS DE LA CANSERA
     NOTICIAS DU CHEMIN
     NOTICIAS DE LA CANSERA
    NOTICIAS DE LA CANSERA
    meteo
NOTICIAS
    NOTICIAS DE LA CANSERA
    NOTICIAS DU CHEMIN
    NOTICIAS DE LA CANSERA
   NOTICIAS DE LA CANSERA
  meteo
et ainsi de suite 4 fois.

Comment puis-je obtenir l'arborecense correct?

Ou est mon erreur?

Merci pour votre aide

A voir également:

24 réponses

jordane45 Messages postés 38173 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 10 mai 2024 4 665
4 mars 2023 à 09:37

Essaye ce code PHP et si besoin... adapte le à tes besoins

<?php
//-----------------------------------------------------------------------//
// Affichage des éventuelles erreurs php
//-----------------------------------------------------------------------//
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//-----------------------------------------------------------------------//
// fonction qui permettra de convertir un array en arborescence
//-----------------------------------------------------------------------//
function buildTree(array $elements, $parentId = 0) {
    $branch = array();

    foreach ($elements as $element) {
        if ($element['parent_id'] == $parentId) {
            $nodes = buildTree($elements, $element['id']);
            if ($nodes) {
                $element['nodes'] = $nodes;
            }
            $branch[] = $element;
        }
    }
    return $branch;
}



//-----------------------------------------------------------------------//
//on récupère les données à traiter en bdd
//-----------------------------------------------------------------------//
$db = mysqli_connect('localhost', 'root', '', 'variables_textos');
$tree_data=array();
$sql = 'SELECT id, item_name as name, item_name as text, parent_id 
        FROM tbl_categories';
$result = mysqli_query($db, $sql);
if(!$result){
  echo("Erreur dans la requête: " . mysqli_error($db));
  exit;
}

$tree_data = mysqli_fetch_all($result, MYSQLI_ASSOC);

//-----------------------------------------------------------------------//
//on appel la fonction :
//-----------------------------------------------------------------------//
$tree = buildTree($tree_data);

//-----------------------------------------------------------------------//
//on retourne le résultat en JSON
//-----------------------------------------------------------------------//
header("Content-Type: application/json; charset=UTF-8");
echo json_encode($tree);
exit;



0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
4 mars 2023 à 09:52

SUUUUUUUPER CA FONCTIONNE

C est unn script que tu a creer ou tu l'as trouver sur le net, dans ce cas tu peux me donner le lien.

En tout cas MERCI parceque moi, je n'aurai pas su le faire.

0
jordane45 Messages postés 38173 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 10 mai 2024 4 665
4 mars 2023 à 09:54

Fonction trouvée, il a longtemps sur le net ...  modifiée pour que ça corresponde à tes besoins

Le reste vient de ton code que j'ai corrigé / amélioré

0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
4 mars 2023 à 12:07

Et c'est dommage que les 5 script que j'ai essayé ne fonctonnait pas. Je suppose tous pour la même raison. Mais comme nous ne sommes pas tous très doué ou pas du tout en PHP et autre, nous devons apprendre des autres.

MERCI

0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
4 mars 2023 à 19:12

Une question subsidiaire:

Est il possible d'ajouter a chaque parent un ou plusieur bouton action.

comme ceci

parent   "bouton 1"   "bouton 2"

     parent-1   "bouton 1"   "bouton 2"

     parent-2   "bouton 1"   "bouton 2"

            parent-2-1   "bouton 1"   "bouton 2"

0