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 :

Les données s'affichent de façon répétée [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Points : 11
    Points
    11
    Par défaut Les données s'affichent de façon répétée
    Bonjour à vous tous, enchanté de vous connaitre!

    J'ai un problème d'affichage de données sur un de mes sites. (C'est en rapport à un jeu faut pas avoir peur! )

    Une fois dessus, il faut cliquer sur le lien "Registres" du menu à gauche puis sur le lien "Baptêmes" qui apparait dans la partie centrale en haut.

    Comme vous pouvez le voir la liste qui s'affiche comporte des doublons d'années, mois, jours et baptisés.

    Voici la table:
    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
    CREATE TABLE `regfideles` (
      `id` int(5) NOT NULL auto_increment,
      `fidele` varchar(30) character set latin1 collate latin1_general_ci NOT NULL,
      `sexe` varchar(1) character set latin1 collate latin1_general_ci NOT NULL,
      `lieubapt` varchar(30) character set latin1 collate latin1_general_ci NOT NULL,
      `jourbapt` varchar(2) character set latin1 collate latin1_general_ci NOT NULL,
      `moisbapt` varchar(2) character set latin1 collate latin1_general_ci NOT NULL,
      `anneebapt` varchar(4) character set latin1 collate latin1_general_ci NOT NULL,
      `pretrebapt` varchar(30) character set latin1 collate latin1_general_ci NOT NULL,
      `parrain` varchar(30) character set latin1 collate latin1_general_ci NOT NULL default 'Aucun',
      `marraine` varchar(30) character set latin1 collate latin1_general_ci NOT NULL default 'Aucune',
      `lieumari` varchar(30) character set latin1 collate latin1_general_ci NOT NULL,
      `jourmari` varchar(2) character set latin1 collate latin1_general_ci NOT NULL,
      `moismari` varchar(2) character set latin1 collate latin1_general_ci NOT NULL,
      `anneemari` varchar(4) character set latin1 collate latin1_general_ci NOT NULL,
      `pretremari` varchar(30) character set latin1 collate latin1_general_ci NOT NULL,
      `temoin` varchar(30) character set latin1 collate latin1_general_ci NOT NULL,
      `conjoint` varchar(30) character set latin1 collate latin1_danish_ci NOT NULL,
      `exco` varchar(3) character set latin1 collate latin1_general_ci NOT NULL default 'non',
      `jourexco` varchar(2) character set latin1 collate latin1_general_ci NOT NULL,
      `moisexco` varchar(2) character set latin1 collate latin1_general_ci NOT NULL,
      `anneeexco` varchar(4) character set latin1 collate latin1_general_ci NOT NULL,
      `pretreexco` varchar(30) character set latin1 collate latin1_general_ci NOT NULL,
      `funerailles` varchar(3) character set latin1 collate latin1_general_ci NOT NULL default 'non',
      `lieufuner` varchar(30) character set latin1 collate latin1_general_ci NOT NULL,
      `jourfuner` varchar(2) character set latin1 collate latin1_general_ci NOT NULL,
      `moisfuner` varchar(2) character set latin1 collate latin1_general_ci NOT NULL,
      `anneefuner` varchar(4) character set latin1 collate latin1_general_ci NOT NULL,
      `pretrefuner` varchar(30) character set latin1 collate latin1_general_ci NOT NULL,
      PRIMARY KEY  (`id`)
    )
    Et voici le script d'affichage:
    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
     
    <?php 	
    $query3="SELECT * FROM regfideles WHERE anneebapt != '----' Order by anneebapt ASC";
    $result3=exec_sql($query3);
    for ($i=1; $ligne3=mysql_fetch_array($result3) ; $i++) 
    	{	
    		echo "<br><strong><font color='#0000CC' size='4' >".$ligne3[anneebapt]."</font></strong><br>";
     
     
     
    $query2="SELECT * FROM regfideles WHERE anneebapt='".$ligne3[anneebapt]."' AND anneebapt != '----' Order by anneebapt ASC, moisbapt ASC";
    $result2=exec_sql($query2);
    for ($i=1; $ligne2=mysql_fetch_array($result2) ; $i++) 
    	{	
    		echo "<strong><font color='#00FF00'>".$ligne2[moisbapt]."</font></strong><br>";
     
     
     
    $query1="SELECT * FROM regfideles WHERE anneebapt='".$ligne3[anneebapt]."' AND moisbapt='".$ligne2[moisbapt]."' AND moisbapt != '--' Order by moisbapt ASC, jourbapt ASC";
    $result1=exec_sql($query1);
    for ($i=1; $ligne1=mysql_fetch_array($result1) ; $i++) 
    	{	
    		echo "<strong>".$ligne1[jourbapt]."</strong><br>";
     
     
     
    $query="SELECT * FROM regfideles WHERE anneebapt='".$ligne3[anneebapt]."' AND moisbapt='".$ligne2[moisbapt]."' AND jourbapt='".$ligne1[jourbapt]."' Order by jourbapt ASC, fidele ASC";
    $result=exec_sql($query);
    for ($i=1; $ligne=mysql_fetch_array($result) ; $i++) 
    	{	
    		echo "<A href='javascript:popup(\"info_fidele.php?id=".$ligne[fidele]."\",\"WHpopup\",\"width=400,height=500,left=300,top=150,resizable=no,copyhistory=no,fullscreen=no,toolbar=no,location=no,directories=no,menubar=no,status=no,scrollbars=no\")'>".$ligne[fidele]."</a> ";
    	} echo "<br>"; 
     
    	}
     
    	}
     
    	}
    ?>
    Quelqu'un pourrait me dire où ça cloche?

    Merci!

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    j'ai remarque que cette ligne apparait plein de fois sans que je ne vois son utilité
    surtout la variable i (vu que tu ne l'utilise pas)
    for ($i=1; $ligne=mysql_fetch_array($result) ; $i++).
    fais tout simplement un while
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while ($ligne=mysql_fetch_array($result)){
       blablabla
    }

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    J'approuve à deux mains ce que dit ouatmad, d'autant plus que tes boucles for sont imbriquées et qu'elles utilisent toutes la variable $i. M'est avis que si tu fais des echos de $i un peu partout dans tes boucles, tu vas t'apercevoir que $i ne s'incrémente pas franchement de façon régulière

    Ensuite pour l'exécution des requêtes, tu utilises exec_sql(). Personnellement, j'utilise mysql_query() (je ne sais même pas comment fonctionne exec_sql...) et les renvois d'erreur mysql_error() avec affichage de la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result=mysql_query($query) or die ('Erreur sur '.$query.' <br/> '.mysql_error());

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Je pense avoir corrigé comme vous le dites mais cela ne change rien du tout à l'affaire.

    Code php : 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
    <?php 	
    $query3="SELECT * FROM regfideles WHERE anneebapt != '----' Order by anneebapt ASC";
    $result3=mysql_query($query3) or die ('Erreur sur '.$query3.' <br/> '.mysql_error());
    while ($ligne3=mysql_fetch_array($result3)){	
    		echo "<br><strong><font color='#0000CC' size='4' >".$ligne3[anneebapt]."</font></strong><br>";
     
     
     
    $query2="SELECT * FROM regfideles WHERE anneebapt='".$ligne3[anneebapt]."' AND anneebapt != '----' Order by anneebapt ASC, moisbapt ASC";
    $result2=mysql_query($query2) or die ('Erreur sur '.$query2.' <br/> '.mysql_error());
    while ($ligne2=mysql_fetch_array($result2)){
    		echo "<strong><font color='#00FF00'>".$ligne2[moisbapt]."</font></strong><br>";
     
     
     
    $query1="SELECT * FROM regfideles WHERE anneebapt='".$ligne3[anneebapt]."' AND moisbapt='".$ligne2[moisbapt]."' AND moisbapt != '--' Order by moisbapt ASC, jourbapt ASC";
    $result1=mysql_query($query1) or die ('Erreur sur '.$query1.' <br/> '.mysql_error());
    while ($ligne1=mysql_fetch_array($result1)){
    		echo "<strong>".$ligne1[jourbapt]."</strong><br>";
     
     
     
    $query="SELECT * FROM regfideles WHERE anneebapt='".$ligne3[anneebapt]."' AND moisbapt='".$ligne2[moisbapt]."' AND jourbapt='".$ligne1[jourbapt]."' Order by jourbapt ASC, fidele ASC";
    $result=mysql_query($query) or die ('Erreur sur '.$query.' <br/> '.mysql_error());
    while ($ligne=mysql_fetch_array($result)){
    		echo "<A href='javascript:popup(\"info_fidele.php?id=".$ligne[fidele]."\",\"WHpopup\",\"width=400,height=500,left=300,top=150,resizable=no,copyhistory=no,fullscreen=no,toolbar=no,location=no,directories=no,menubar=no,status=no,scrollbars=no\")'>".$ligne[fidele]."</a> ";
    	} echo "<br>"; 
     
    	}
     
    	}
     
    	}
    ?>

    Le truc étonnant quand même c'est que le script de mon premier message fonctionne pour une autre page, Menu de gauche -> Paroisses puis menu en haut dans la partie centrale -> Paroisses. Peut-être est-ce parce que celui affiche le résultat de requêtes faites sur des tables différentes et non une seule comme c'est le cas pour le script qui me pose problème...

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php 	$query3="SELECT * FROM regprovinces Order by province ASC";
    											$result3=exec_sql($query3);
    												for ($i=1; $ligne3=mysql_fetch_array($result3) ; $i++) 
    												{	echo "<br><strong><font color='#0000CC' size='4' >".$ligne3[infos]." ".$ligne3[province]."</font></strong><br>";?>
    							  	<?php 	$query2="SELECT * FROM regdioceses WHERE province='".$ligne3[province]."' Order by province ASC, diocese ASC";
    											$result2=exec_sql($query2);
    												for ($i=1; $ligne2=mysql_fetch_array($result2) ; $i++) 
    												{	echo "<strong>".$ligne2[infos]." ".$ligne2[diocese]."</strong><br>";?>
    								<?php 	$query="SELECT * FROM regparoisses WHERE diocese='".$ligne2[diocese]."' Order by diocese ASC, paroisse ASC";
    											$result=exec_sql($query);
    												for ($i=1; $ligne=mysql_fetch_array($result) ; $i++) 
    												{	echo "<A href='info_paroisse.php?id=".$ligne[id]."'>".$ligne[paroisse]."</a> ";
    												} echo "<br>"; }}?>

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Etant donné que tes requêtes imbriquées portent toutes sur la même table sans intervention d'autre chose, on doit pourvoir tout faire avec une seule requête et quelques if...
    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
    <?php 	
    $query = "SELECT * FROM regfideles WHERE anneebapt != '----' Order by anneebapt ASC, moisbapt ASC, jourbapt ASC";
    $result = mysql_query($query) or die ('Erreur sur '.$query.' <br/> '.mysql_error());
    $annee ="";
    $mois = "";
    $jpur = "";
     
    while ($ligne=mysql_fetch_array($result)){
    	if ($annee != $ligne['anneebapt']) {
    		$annee = $ligne['anneebapt'];
    		echo "<br><strong><font color='#0000CC' size='4' >".$annee."</font></strong><br>";
    	}
     
    	if ($mois != $ligne['moisbapt']) {
    		$mois = $ligne['moisbapt'];
    		echo "<strong><font color='#00FF00'>".$mois."</font></strong><br>";
    	}
     
    	if ($jour != $ligne['jourbapt']) {
    		$jour = $ligne['jourbapt'];
    		echo "<strong>".$jour."</strong><br>";
    	}
    	echo "<A href='javascript:popup(\"info_fidele.php?id=".$ligne[fidele]."\",\"WHpopup\",\"width=400,height=500,left=300,top=150,resizable=no,copyhistory=no,fullscreen=no,toolbar=no,location=no,directories=no,menubar=no,status=no,scrollbars=no\")'>".$ligne[fidele]."</a> ";	
    }
    ?>

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup!!!!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/03/2013, 10h09
  2. afficher les données dans une datagridview d'une façon verticale
    Par mounim_taoufik dans le forum Windows Forms
    Réponses: 0
    Dernier message: 13/11/2009, 19h37
  3. Réponses: 3
    Dernier message: 04/04/2008, 07h03
  4. Les données sont dans la base, mais ne s'affichent pas
    Par ryan dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 31/03/2006, 10h59
  5. [MySQL] Une liste déroulante affichant les données d'une requête SHOW par ordre alphabétique
    Par jack_1981 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 22/12/2005, 15h53

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