Affichage des données dans un tableau PHP/MySQL

olivierndategana
Invité n'ayant pas de compte PHPfrance

15 juin 2020, 14:11

Bonjour
J'ai deux tables: lignes budgétaires et sous lignes budgétaires. Sachant que chaque ligne budgétaire a une ou plusieurs sous lignes, comment puis je procéder pour afficher dans un tableau chaque ligne avec sous lignes comme ceci:

DESIGNATION MONTANT
--------------------------------------------------------
I. LIGNE I
-------------------------------------------------------
I.1. SOUS LIGNES 1 100
-----------------------------------------------------------
I.2. SOUS LIGNES 2 100
--------------------------------------------------------
Sous total I. 200
-------------------------------------------------------
II. LIGNE II
---------------------------------------------------------
II.1. SOUS LIGNES 1 50
--------------------------------------------------------
II.2. SOUS LIGNES 2 50
----------------------------------------------------
Sous total II. 100
-------------------------------------------------------

Mammouth du PHP | 1967 Messages

16 juin 2020, 08:53

Il y a plusieurs solutions

je préconiserai 2 requètes, la première sur toutes les sous-lignes en classant par ligne parent et puis le critère d'ordre des sous lignes
tu stocke le tout dans un tableau php

ensuite seconde requète de toutes tes lignes dans l'ordre désiré, tu affiche la ligne, tu cherche dans ton tableau les sous lignes correspondante, tu boucle dessus pour les afficher et puis ta ligne sous total. et tu passe à la ligne suivante.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Mammouth du PHP | 1564 Messages

18 juin 2020, 23:35

La jointure SQL peut être si tu as moyen d'associer les données avec un ID par exemple

Petit nouveau ! | 7 Messages

12 juil. 2020, 18:57

Bonjour, j'ai un peu le même prolème...je souhaite afficher dans un tableau une liste de participants par jour et par heure...pour l'instant j'obtiens par exemple :

Mardi 07-07-2020, ENT à 08:00, BLANC Jean Luc(Moniteur)
08:00 : Gluck Serge - Skiff
08:00 : EYMEOUD Pierre - Skiff
09:00 : LEROY Joel - Ergo
09:00 : Chantriaux Claude - Skiff
09:00 : Canepari Carine - Fun Skiff

Mercredi 08-07-2020, ENT à 08:00, BLANC Jean Luc(Moniteur)
08:00 : Riviere Laurette - Skiff
08:00 : EYMEOUD Pierre - Skiff
09:00 : LEROY Joel - Ergo
09:00 : Lalu stage - 4X-
09:00 : clement patrick - Skiff
09:00 : FRUCTUS Michel - Fun Skiff

et je souhaiterais obtenir ceci :

Mardi 07-07-2020, ENT à 08:00, BLANC Jean Luc(Moniteur)

08:00 : Gluck Serge - Skiff
EYMEOUD Pierre - Skiff
09:00 : LEROY Joel - Ergo
Chantriaux Claude - Skiff
Canepari Carine - Fun Skiff

Mercredi 08-07-2020, ENT à 08:00, BLANC Jean Luc(Moniteur)

08:00 : Riviere Laurette - Skiff
EYMEOUD Pierre - Skiff
09:00 : LEROY Joel - Ergo
Lalu stage - 4X-
clement patrick - Skiff
FRUCTUS Michel - Fun Skiff


mon code est le suivant et je ne parviens pas à boucler correctement , merci de l'aide !
<?php
    // on se connecte à notre base
    $base = mysql_connect ('************','*********', '***********');
    mysql_select_db ('***********', $base) ;
    ?>
    
    <?php
	
	
	$sql = "
	SELECT
		`TBLInscritsEnt`.IDBD,
		`TBLInscritsEnt`.HO,
		`TBLInscritsEnt`.Souhait,
		`TBLInscritsEnt`.PRENOMS,
		`TBLInscritsEnt`.NOMS,
		`TblOuverture`.IDBD,
		DATE_FORMAT(`TblOuverture`.DateOuv, '%d-%m-%Y') as DateOuv,
		`TblOuverture`.Jour,
		DATE_FORMAT(`TblOuverture`.Horaire,'%H:%i') as Horaire,
		DATE_FORMAT(`TblOuverture`.HoraireF,'%H:%i') as Horairea,
		`TblOuverture`.HoraireF,
		`TblOuverture`.Encadrant,
		`TblOuverture`.Type,
		`TblOuverture`.Description,
		`TblOuverture`.Qualification
	FROM
		`TblOuverture`
		
	LEFT JOIN
		`TBLInscritsEnt`
	ON	
		`TblOuverture`.IDBD=`TBLInscritsEnt`.IDBD
	
	
	WHERE `DateOuv`BETWEEN DATE(NOW() - INTERVAL WEEKDAY(now()) DAY) 
	AND DATE(NOW() + INTERVAL 15 DAY) 
	
	ORDER by `TblOuverture`.DateOuv,`TblOuverture`.Horaire,`TBLInscritsEnt`.HO  asc
		
	";	
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
	
$old=" ";
	$i=0;
	$oldH=" ";
	$iH=0;
 
	while($data = mysql_fetch_assoc($req))
	{
		if($data['IDBD'] != $old)
		{
			
				if($i != 0)	{echo "</ul>";}
 				else
				{}	
   				
				if($data['HO'] != $oldH)
				{
			
					if($iH != 0)	{echo "</ul>";}
 					else
					{}	
				
				echo "<p><strong>" . $data['Jour']. " ". $data['DateOuv']. ", " .$data['Type'] . " à " .$data['Horaire'] .", " .$data['Encadrant'] ."(".$data['Qualification'] .") ".$data['Description']." </strong></p>" // titre de la liste
				
     	 			. "<ul>"
      				. "<li value=$i>" . $data['HO']  . " : " . $data['NOMS']  . "  " . $data['PRENOMS']  ." - " . $data['Souhait']  . "</li>"; // liste des évenements
 
   				$old = $data['IDBD'] ;
				
				
				}
				
			}
			
			else
			//{
  		 	echo "<li>" . $data['HO']  . " : " . $data['NOMS']  . "  " . $data['PRENOMS']  ." - " . $data['Souhait']  . "</li>";
			//}
		$iH=$iH+1;
		$i=$i+1;
		}
		echo "</ul>"; 
	
    mysql_free_result ($req);
    mysql_close ();
    ?>

Avatar du membre
Mammouth du PHP | 1564 Messages

13 juil. 2020, 15:25

BRUT DE POMME!

ya même l'accès à une base de données dans le code :-*

Petit nouveau ! | 7 Messages

13 juil. 2020, 17:08

zut...!!!!...comment modifier ou supprimer mon post ?

Petit nouveau ! | 7 Messages

13 juil. 2020, 18:20

zut...!!!!...comment modifier ou supprimer mon post ?

Petit nouveau ! | 7 Messages

13 juil. 2020, 18:21

contacter un admin ?

Mammouth du PHP | 2703 Messages

13 juil. 2020, 18:31

vous changez le mot de passe de la bdd. modifier votre message n'empêchera pas des gens d'avoir déjà eu accès à vos identifiants.

Avatar du membre
Mammouth du PHP | 1564 Messages

13 juil. 2020, 21:27

+1 or1 et pour modifier le post c'est le petit stylo bleu en bas à droite de ton post

Petit nouveau ! | 7 Messages

14 juil. 2020, 07:12

Bonjour, j'ai bien sur modifier le mot de passe mais ca m'agace de laisser ce post ainsi...et je ne "vois" pas le petit stylo bleu....je n'arrive toujours pas à boucler pour afficher par jour et par heure...pas fini de m'agacer...lol...donc si quelqu'un sait faire preuve de patience ce serait cool..!!!...lol et merci !

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

14 juil. 2020, 08:46

[Modération]
Bonjour, les modifications demandées ont été effectuées.
Pour le bouton de modification (stylo bleu :) ) il est en bas à gauche de la zone du message.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Avatar du membre
Mammouth du PHP | 1564 Messages

14 juil. 2020, 09:45

Le stylo bleu s'enlève le jour d'après (ou quelques heures après)

tu peux faire un dessin du tableau que tu aimerais avoir stp et de celui que tu as en ce moment, ça m'aidera à comprendre mieux ce que tu souhaite faire, c'est pas très clair pour moi

Avatar du membre
Mammouth du PHP | 1564 Messages

14 juil. 2020, 10:06

Quelques astuces et remarques:

Ton code est faux avec tes fermetures de liste HTML (ul), lors d'une decalration de liste, tu a l'ouverture: <ul> et la fermeture: </ul> et là ton code dès qu'il fait une boucle, tu lui dit de mettre une fermeture (</ul>) tu pux l'enlever car la fermeture ce passe après toutes les boucles (il est présent en bas de ton code donc c'est bon mais il te faut l'ouvrir en haut de ton code, là tu as un paragraphe (<p>) ;) )

Tu peux raccourcir ton PHP, exe: quand tu fait des conditions, tu si tu prends juste le if, tu na pas besoin de mettre else {} <- rien, ça sert à rien, tu peux l’omettre.

Dans ce même exemple, les accolades ne sont pas nécessaires si tu à qu'une seule ligne après ta condition, ton code deviendrait:
if(condition) echo "quelque chose";
//et plus:
if(condition){echo "quelque chose";} else {}
Des caractères en moins, plus des caractères en moins ça fait un code plus rapide et moins lourd au final ;)

Ton incrémentation de la variable $i peut être raccourcie:
$i=$i+1;
//devient:
$i++;
Dernière chose, tu devrais passer à mysqli et oublier mysql car l'extension est supprimée en PHP 7.
<?php
    // on se connecte à notre base
    $base = mysql_connect ('************','*********', '***********');
    mysql_select_db ('***********', $base) ;
    ?>
    
    <?php
	
	
	$sql = "
	SELECT
		`TBLInscritsEnt`.IDBD,
		`TBLInscritsEnt`.HO,
		`TBLInscritsEnt`.Souhait,
		`TBLInscritsEnt`.PRENOMS,
		`TBLInscritsEnt`.NOMS,
		`TblOuverture`.IDBD,
		DATE_FORMAT(`TblOuverture`.DateOuv, '%d-%m-%Y') as DateOuv,
		`TblOuverture`.Jour,
		DATE_FORMAT(`TblOuverture`.Horaire,'%H:%i') as Horaire,
		DATE_FORMAT(`TblOuverture`.HoraireF,'%H:%i') as Horairea,
		`TblOuverture`.HoraireF,
		`TblOuverture`.Encadrant,
		`TblOuverture`.Type,
		`TblOuverture`.Description,
		`TblOuverture`.Qualification
	FROM
		`TblOuverture`
		
	LEFT JOIN
		`TBLInscritsEnt`
	ON	
		`TblOuverture`.IDBD=`TBLInscritsEnt`.IDBD
	
	
	WHERE `DateOuv`BETWEEN DATE(NOW() - INTERVAL WEEKDAY(now()) DAY) 
	AND DATE(NOW() + INTERVAL 15 DAY) 
	
	ORDER by `TblOuverture`.DateOuv,`TblOuverture`.Horaire,`TBLInscritsEnt`.HO  asc
		
	";	
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
	
$old=" ";
	$i=0;
	$oldH=" ";
	$iH=0;
 
	while($data = mysql_fetch_assoc($req))
	{
		if($data['IDBD'] != $old)
		{
			
				if($i != 0)	{echo "</ul>";}
 				else
				{}	
   				
				if($data['HO'] != $oldH)
				{
			
					if($iH != 0)	{echo "</ul>";}
 					else
					{}	
				
				echo "<p><strong>" . $data['Jour']. " ". $data['DateOuv']. ", " .$data['Type'] . " à " .$data['Horaire'] .", " .$data['Encadrant'] ."(".$data['Qualification'] .") ".$data['Description']." </strong></p>" // titre de la liste
				
     	 			. "<ul>"
      				. "<li value=$i>" . $data['HO']  . " : " . $data['NOMS']  . "  " . $data['PRENOMS']  ." - " . $data['Souhait']  . "</li>"; // liste des évenements
 
   				$old = $data['IDBD'] ;
				
				
				}
				
			}
			
			else
			//{
  		 	echo "<li>" . $data['HO']  . " : " . $data['NOMS']  . "  " . $data['PRENOMS']  ." - " . $data['Souhait']  . "</li>";
			//}
		$iH=$iH+1;
		$i=$i+1;
		}
		echo "</ul>"; 
	
    mysql_free_result ($req);
    mysql_close ();
    ?>

Petit nouveau ! | 7 Messages

15 juil. 2020, 16:20

Merci pour la modification et les conseils !

pour l'instant mon code génère une page de ce type :

http://www.club-aviron-embrun.fr/Inscrits3.php

et je souhaiterais obtenir ceci :

http://www.club-aviron-embrun.fr/Inscrits2.php


je bute bêtement sur une question de logique....merci de l'aide !