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

Requêtes MySQL Discussion :

requette avec jointure et affichage redondant


Sujet :

Requêtes MySQL

  1. #21
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Ou la la ! j'avais même pas fais vu, tu parcours deux résultats de requêtes l'une dans l'autre. Tu parles d'un bazar !

    Effectivement, fais une seule requête en jointure avec un ORDER BY sur la rando et gère la rupture de rando classiquement dans le parcours du résultat en php.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  2. #22
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Points : 71
    Points
    71
    Par défaut
    hi hi hi

    la c'est moi qui comprend pas je patine

    la premiere requette concernant l'affichage des randos à faire est bonne ? c'est une requette toute simple

    c'est la 2éme que je gere avec un ORDER BY ?

    ou alors faire une seule requette pour tout qui intégre les datas de la rando à faire + les participant que je gere avec un ORDER BY ? se qui m'oblige à joindre les 3 tables

  3. #23
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Ce qui m'affole un peu c'est de parcourir deux résultats de requêtes en même temps.
    La technique de chargement du résultat de la première requête dans un array que tu parcourerais ensuite avec foreach au cours duquel tu lancerais tes requêtes de participation me semble préférable à la présente.
    Mais pourquoi lancer une requête puis n requêtes (une par rando, en fait) alors que tu peux tout rapatrier avec une seule requête et faire le traitement des ruptures en php lors du parcours du résultat ?
    Faut voir, dans un cas tu ne récupères les infos des randos qu'une fois (moins de volume) mais tu fais plus de requêtes, dans l'autre cas tu récupères les données rando pour chaque participant (redondance) mais tu n'envoies qu'une requête au serveur.
    Je ne sais pas ce qui est préférable mais je te conseille d'abandonner la technique actuelle.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  4. #24
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Points : 71
    Points
    71
    Par défaut
    bon le plus simple et de tout reprendre à la base et d'abandonner la technique actuellement employer.

    nouvelle methode (dit moi ce que tu en pense)

    1 requette (des randos à faire) donc le resultat serais dans un tableau du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while($data_1 = mysql_fetch_assoc($aff_rando_a_faire)) { $tablo_1[]=$rando_a_faire; }
    1 requette (des participants) donc le resultat serais dans un tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while($data_2 = mysql_fetch_assoc($aff_participant)) { $tablo_2[]=$participant; }
    ensuite je parcours tableau_1 avec un for ou un foreach pour afficher les rando_a_faire et au sein du for je met un foreach pour afficher les participants du tableau_2

    mais ne risque ton pas de retrouver la meme problematique la je me retrouve avec 1 for et un foreach imbrique ou 2 foreach imbriqué??

  5. #25
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Points : 71
    Points
    71
    Par défaut
    OUFFFFFFFFFFFFFFFFF sa marche voici le code fini et fonctionel

    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
    $afaire = "select ID_RANDO,DUREE,NIVEAU,DEPART,LIBELLE,DATE,CARTE,TXT from RANDO_A_FAIRE where FLAG = 'Y'";    
    
    $result=" SELECT PARTICIPANT.ID_RANDO,RANDONNEUR.NOM_PRENOM,RANDONNEUR.VILLE ";
    $result.="FROM RANDONNEUR LEFT JOIN PARTICIPANT ON RANDONNEUR.ID_RANDONNEUR=PARTICIPANT.ID_RANDONNEUR ";   
    $aff_randonneur = rando($result);	
    while($data = mysql_fetch_assoc($aff_randonneur)) { $tablo[]=$data; }
    $aff_rando = rando($afaire);	
    while($rando = mysql_fetch_array($aff_rando)) 
         {	
    	 ?>
    	<table width=600 border=1 align=center cellpadding=2 cellspacing=0 summary="" rules=none>
    	<tr>
    		<td width="200" rowspan="2" valign="middle" align="center">
    		<?echo"<A href=\"javascript:twPopupImage('/rando/carte/".$rando["CARTE"]."','','')\">";?>
    		<img src="randopei/carte/<?echo''.$rando["CARTE"].'';?>" border="0" height="150" alt=""></a>
    		</td>
    		<td bgcolor=#FFFF99 align=center valign=top><b><?echo''.$rando["LIBELLE"].'';?></b></td>
    	</tr>
    	<tr>
    		<td valign=top><p align="justify">	  
    		<b>Rando de niveau <?echo''.$rando["NIVEAU"].'';?> sur une durée de <?echo''.$rando["DUREE"].'';?></b><br>
    		<b>Départ : <?echo''.$rando["DEPART"].'';?></b><br><br>
    		<?echo''.$rando["TXT"].'';?>
    		</p>
    		
    		<form name="<?echo''.$rando["ID_RANDO"].'';?>" action="<?echo'?menu=pei&nv=ok&id_rando='.$rando["ID_RANDO"].'';?>" method="post">		 
      		<input type="text" name="pwd" size="8" maxlength="8">
    		<input type="hidden" name="id_rando" value="<?echo''.$rando["ID_RANDO"].'';?>">
       		<input type="image" src="randopei/inscrivez_vous.gif" border="0" width="110" height="22" align="absmiddle">
    		 pour le <b><?echo''.$rando["DATE"].'';?></b>
    		</form>
    		
    		</td>
    	</tr>
    	<tr>
    		<td colspan=2><hr>
    		<?	  
    		$resa=$rando["ID_RANDO"];	  
    		$nbcol=3; //détermine le nombre de colonnes
    		 
    		echo '<table border="0" valign="top" width="600" cellspacing="0" cellpadding="0">';
    		$nb=count($tablo);	
    		for($i=0;$i<$nb;$i++)
       		{
       		//les valeurs à afficher
       		$nom_prenom=$tablo[$i]['NOM_PRENOM']; 
       		$ville=$tablo[$i]['VILLE']; 
       		$id_rando=$tablo[$i]['ID_RANDO'];
       		
    		if($i%$nbcol==0)	  
      		echo '<tr>';
       		echo '<td align="center">';	   
    		if($id_rando == "$resa") {echo'<b>'.$nom_prenom.'</b><br>'.$ville.'<br><br>';}
       		echo'</td>';
       		if($i%$nbcol==($nbcol-1))	
      		echo '</tr>';
       		}
    		echo '</table>';
    		?>
    		</td>
    	</tr>
    	</table> 
    	<br>	 
    	 <?
    	 }
    voir le resultat :http://reunion-rando.com/index.php?menu=pei

    un grand merci à toi pour ta patience

  6. #26
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Juste pour faire mon chieur, evite les short-tags php <? ?>, tu risques des conflits avec des serveurs ou la directive serait à off et des chevauchements avec des balises xml.
    Amike et bravo.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  7. #27
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Points : 71
    Points
    71
    Par défaut
    bonjour

    merci pour le conseil. Et une habiude de plus à prendre

    a+ gilles

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [AC-2007] affichage redondant avec cette analyse
    Par niamo dans le forum Modélisation
    Réponses: 2
    Dernier message: 28/05/2010, 11h24
  2. affichage de sous requette avec foreach et while
    Par keusty78 dans le forum Langage
    Réponses: 11
    Dernier message: 17/10/2009, 12h42
  3. problème avec jointure dans ma requette
    Par sinifer dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/07/2009, 16h48
  4. requette udpate avec jointure
    Par comme de bien entendu dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 28/02/2008, 17h45
  5. Réponses: 4
    Dernier message: 23/07/2007, 17h43

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