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 :

Regrouper plusieurs cellules de même valeur ? [tableau php/mysql]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Points : 77
    Points
    77
    Par défaut Regrouper plusieurs cellules de même valeur ? [tableau php/mysql]
    Salut,

    Voilà j'ai fait une requête qui m'affiche les données contenues dans ma table. Ceci ligne par ligne dans un tableau HTML. Le problème c'est que j'ai des champs qui possèdent parfois le même contenu en fonction des appels de requêtes. J'aimerais juste regrouper les champs (cellule dans mon tableau) qui contiennent les même valeurs au sein d'une seule et même cellule.

    Voir le screen1 pour voir ce que j'ai actuellement et le screen 2 (retouche photoshop) pour voir ce que j'aimerais.

    Voici mon code actuel :

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    echo "
    <TABLE border=\"2\">
     
    	  						<tr>
    	  							<td><b>Rentree/Semestre</b></td>
    	 							<td><b>Conn. Scientif.</b></td>
    								<td><b>Techn. et Meth.</b></td>
    								<td><b>Stage</b></td>
    								<td><b>Express. Comm.</b></td>
    								<td><b>Culture Generale</b></td>
    								<td><b>Observation</b></td>
    							</tr>
     
     
     
     
    			";
     
    			$resultat= "SELECT * FROM resultat WHERE nomEtudiantResultat='$data[1]' AND prenomEtudiantResultat='$data[2]' ORDER BY semestreResultat";
    			$req = mysql_query($resultat) or die('Erreur SQL !<br>'.$resultat.'<br>'.mysql_error());
    			$req1 = mysql_num_rows($req);
    			if($req1>0){
    			// on fait une boucle qui va faire un tour pour chaque enregistrement
    			while($res = mysql_fetch_row($req)){
     
     
    				//code des observations 1
    				if($res[9]==1){
    					$res[9]='EXCELLENT SEMESTRE';}
    				elseif($res[9]==2){
    					$res[9]='TRES BON SEMESTRE';}
    				elseif($res[9]==3){
    					$res[9]='BON SEMESTRE';}
    				elseif($res[9]==4){
    					$res[9]='SEMESTRE MOYEN';}
    				elseif($res[9]==5){
    					$res[9]='MAUVAIS SEMESTRE';}
    				elseif($res[9]==6){
    					$res[9]='TRES MAUVAIS SEMESTRE';}
    				elseif($res[9]==7){
    					$res[9]='BON CURSUS';}
    				elseif($res[9]==8){
    					$res[9]='TRES BON CURSUS';}
    				elseif($res[9]==9){
    					$res[9]='EXCELLENT CURSUS';}
     
    				//code des observation 2
    				if($res[10]==10){
    					$res[10]='VOUS AURIEZ PU MIEUX FAIRE';}
    				elseif($res[10]==11){
    					$res[10]='C EST MIEUX NE RELACHEZ PAS VOS EFFORTS';}
    				elseif($res[10]==12){
    					$res[10]='POURSUIVEZ VOS EFFORTS';}
    				elseif($res[10]==13){
    					$res[10]='UN EFFORT S IMPOSE';}
    				elseif($res[10]==14){
    					$res[10]='UN TRES GRAND EFFORT S IMPOSE';}
    				elseif($res[10]==15){
    					$res[10]='UN SANS FAUTE S IMPOSE';}
    				elseif($res[10]==16){
    					$res[10]='VOTRE SITUATION RESTE PREOCUPANTE';}
     
     
    				echo "
     
    					<tr>
    								<TD>$res[7]/$res[6]</TD>
    								<TD>
    								";
    								if($res[8]==2){
    									echo $res[3].' '.$res[4].' '.$res[5];}
    								echo "
    								</TD>
    								<TD>
    								";
    								if($res[8]==3){
    									echo $res[3].' '.$res[4].' '.$res[5];}
    								echo "
    								</TD>
    								<TD>
    								";
    								if($res[8]==5){
    									echo $res[3].' '.$res[4].' '.$res[5];}
    								echo "
    								</TD>
    								<TD>
    								";
    								if($res[8]==4){
    									echo $res[3].' '.$res[4].' '.$res[5];}
    								echo "
    								</TD>
    								<TD>
    								";
    								if($res[8]==1){
    									echo $res[3].' '.$res[4].' '.$res[5];}
    								echo "
    								</TD>
    								<TD>$res[9] - $res[10] - $res[11] - $res[12] - $res[13] - $res[14] - $res[15] - $res[16]</TD>
     
    					</tr>";
    				}
     
     
     
    			}
     
     
    			echo "	
     
    			</table>
    			<br/>";
    Merci pour vos suggestions !!!

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Points : 366
    Points
    366
    Par défaut
    bonjour,
    faire un select distinct pour le champ rentree/semestre
    dans le while, faire une requête pour les autres champs

  3. #3
    Membre régulier Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Points : 77
    Points
    77
    Par défaut
    Voici les différents champs de ma table en fonction de mon tableau actuel :

    -------Colonne 1 du tableau html
    champ1 : rentree
    champ2 : semestre

    -------Colonne 2 ou 3 ou 4 ou 5 ou 6 du tableau html (selon champ vide ou pas)
    champ3 : libelleModule
    champ4 : noteModule
    champ5 : creditModule

    -------Colonne 7 du tableau html
    champ6: observation1
    champ7: observation2
    Comme je l'ai dit, j'aimerais regrouper quelques champs qui porteront les mêmes valeurs au sein d'une même cellule. Il est à savoir aussi que les champs suivants seront toujours regroupé ensemble dans une cellule :

    annee + semestre
    obersvation 1 + observation 2

    Il faut que je fasse donc un DISTINCT sur ces 4 champs. (donc 4 requêtes?)

    Puis pour les autres champs je refais une requête SELECT normal ?

    En tout j'aurais 5 requêtes ?

    Est-il possible des les exécuter en même temps ?

    J'ai essayé de faire çà (juste un distinct sur les champs rentree/semestre et une autre requete sur les champs restant mais çà m'affiche n'importe quoi)

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    $resultat1="SELECT DISTINCT semestreResultat,rentreeResultat FROM resultat";
    			$req1 = mysql_query($resultat1) or die('Erreur SQL !<br>'.$resultat1.'<br>'.mysql_error());
    			$req2 = mysql_num_rows($req1);
    			if($req2>0){
    			// on fait une boucle qui va faire un tour pour chaque enregistrement
    			while($res2 = mysql_fetch_row($req1)){
     
    			$resultat2= "SELECT * FROM resultat WHERE nomEtudiantResultat='$data[1]' AND prenomEtudiantResultat='$data[2]' ORDER BY semestreResultat";
    			$req3 = mysql_query($resultat2) or die('Erreur SQL !<br>'.$resultat2.'<br>'.mysql_error());
    			$req4 = mysql_num_rows($req1);
    			if($req4>0){
    			// on fait une boucle qui va faire un tour pour chaque enregistrement
    			while($res = mysql_fetch_row($req3)){
     
     
     
    				//code des observations 1
    				if($res[9]==1){
    					$res[9]='EXCELLENT SEMESTRE';}
    				elseif($res[9]==2){
    					$res[9]='TRES BON SEMESTRE';}
    				elseif($res[9]==3){
    					$res[9]='BON SEMESTRE';}
    				elseif($res[9]==4){
    					$res[9]='SEMESTRE MOYEN';}
    				elseif($res[9]==5){
    					$res[9]='MAUVAIS SEMESTRE';}
    				elseif($res[9]==6){
    					$res[9]='TRES MAUVAIS SEMESTRE';}
    				elseif($res[9]==7){
    					$res[9]='BON CURSUS';}
    				elseif($res[9]==8){
    					$res[9]='TRES BON CURSUS';}
    				elseif($res[9]==9){
    					$res[9]='EXCELLENT CURSUS';}
     
    				//code des observation 2
    				if($res[10]==10){
    					$res[10]='VOUS AURIEZ PU MIEUX FAIRE';}
    				elseif($res[10]==11){
    					$res[10]='C EST MIEUX NE RELACHEZ PAS VOS EFFORTS';}
    				elseif($res[10]==12){
    					$res[10]='POURSUIVEZ VOS EFFORTS';}
    				elseif($res[10]==13){
    					$res[10]='UN EFFORT S IMPOSE';}
    				elseif($res[10]==14){
    					$res[10]='UN TRES GRAND EFFORT S IMPOSE';}
    				elseif($res[10]==15){
    					$res[10]='UN SANS FAUTE S IMPOSE';}
    				elseif($res[10]==16){
    					$res[10]='VOTRE SITUATION RESTE PREOCUPANTE';}
     
     
    				echo "
     
    					<tr>
    								<TD>$res2[0]/$res2[1]</TD>
    								<TD>
    								";
    								if($res[8]==2){
    									echo $res[3].' '.$res[4].' '.$res[5];}
    								echo "
    								</TD>
    								<TD>
    								";
    								if($res[8]==3){
    									echo $res[3].' '.$res[4].' '.$res[5];}
    								echo "
    								</TD>
    								<TD>
    								";
    								if($res[8]==5){
    									echo $res[3].' '.$res[4].' '.$res[5];}
    								echo "
    								</TD>
    								<TD>
    								";
    								if($res[8]==4){
    									echo $res[3].' '.$res[4].' '.$res[5];}
    								echo "
    								</TD>
    								<TD>
    								";
    								if($res[8]==1){
    									echo $res[3].' '.$res[4].' '.$res[5];}
    								echo "
    								</TD>
    								<TD>$res[9] - $res[10] - $res[11] - $res[12] - $res[13] - $res[14] - $res[15] - $res[16]</TD>
     
    					</tr>";
    				}
     
     
     
    			}
    			}
    			}
    Je suis trop nul !

    Merci !

  4. #4
    Membre régulier Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Points : 77
    Points
    77
    Par défaut
    Je vous remet un screen pour une meilleurs compréhension de ce que j'attends

Discussions similaires

  1. [Débutant] Supprimer plusieurs cellules en même temps
    Par rob408231 dans le forum MATLAB
    Réponses: 3
    Dernier message: 01/11/2010, 17h08
  2. Insérer plusieurs fois la même valeur
    Par chalmou dans le forum SQL
    Réponses: 9
    Dernier message: 15/04/2010, 12h30
  3. Réponses: 4
    Dernier message: 20/01/2010, 20h58
  4. [AC-2007] Regrouper plusieurs cellules dans une seule
    Par J_help dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 20/07/2009, 18h47
  5. Un tableau avec plusieurs clef de même valeurs
    Par singleProject dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 15/10/2008, 10h54

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