conseils pour une optimisation

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : conseils pour une optimisation

par Snipy » 23 avr. 2008, 14:09

Le soucis,
est que ma première requete est :
<?php $requete = mysql_query("SELECT id_equipe_dom, id_equipe_ext, equipes.nom AS  nom_equipe_dom, EXT.nom AS nom_equipe_ext, DATE_FORMAT(date_reelle, '%d/%m/%Y') AS ma_date, DATE_FORMAT(date_reelle, '%H/%i') AS mon_heure, buts_dom, buts_ext, equipes.nom_stade, archive
			FROM phpl_matchs, equipes, equipes AS EXT
			WHERE phpl_matchs.id_equipe_dom = equipes.id_equipe
			AND phpl_matchs.id_equipe_ext = EXT.id_equipe
			AND phpl_matchs.id = $id_match") or die (mysql_error());
			$result = mysql_fetch_assoc($requete); ?>
Il y a une seule entrée par match et c'est dans cette entrée qu'il y a les 2 id des équipes (id_equipe_dom, id_equipe_ext,)

Je ne peux donc pas boucler cette première requête :?

Sinon ton idée était tout à fait bonne :)

par Devether » 22 avr. 2008, 16:30

Selon ce que je comprend tu as à chaque fois un match qui fait référence à deux équipes.
Ce que je te propose c'est de faire une première requête qui liste les équipes pour un match donné puis pour chaque équipe trouvée construire un tableau.

Ex :
$id_match = $_POST['matchid']; // Le match dont on veut voir les équipes
$entete_tableau = "...";

// Première requête qui liste les équipes pour le match $id_match
$sql1 = "SELECT * FROM phpl_stats WHERE id_match = $id_match";
$res1 = mysql_query($sql1) or die(...);
while ($data1 = mysql_fetch_assoc($res1)) {
  
  // Requête qui va lister tous les joueurs et leurs stats pour chaque équipe $data1['id_equipe']
  $sql2 = "SELECT DISTINCT id_joueur, points .... FROM equipes, joueurs WHERE joueurs.id_equipe = ".$data1['id_equipe'];
  $res2 = mysql_query($sql2) or die(...);

  echo $entete_tableau; // On affiche le début du tableau
  while ($data2 = mysql_fetch_assoc($res2)) {
    // Affichage d'un tableau contenant l'équipe $data1['id_equipe']
  }
} 
Je pense que ça devait t'aider sous réserve d'avoir bien compris ton schéma
@+

conseils pour une optimisation

par Snipy » 21 avr. 2008, 16:15

Bonjjour à tous,

J'ai un script qui affiche 2 tableaux de stats séparés
Ces 2 tableaux contiennent les stats de joueurs mais il y a 2 tableaux séparés car il y en a un pour chaque équipe.

Ma question comment affiché 2 tableaux qui parte d'une même requete ?

Je m'explique, faire un tableaux avec tous les (donc des 2 équipes ) facile...
Faire 2 tableaux en faisant 2 requetes + 2 tableaux xhtml facile aussi..

Mais pour rendre cela plus pratique j'aimerais partir d'une suele requete j'ai donc pensé à une boucle qui se lance 2 fois (une fois pour chaque tableau mais comme vous pouvez le voir c'ets un peu farfelus (obligé de passer par les premières conditions...

<?php 
$i=0;
				
			// On fait les 2 tableaux de stats
				
			while (	$i <=1)
			{	
// Condition pour savoir agir en focntion qu'on soit dnas le prmeier ou le second tableau
				if($i ==0)
				{
				$equipe ="DOMICILE";
				$id_equipe_ = $result['id_equipe_dom'];
				$g = 'class ="imageflottantef"';
				}
				else
				{
				$equipe ="EXTERIEUR";
				$id_equipe_ = $result['id_equipe_ext'];
				$g = "";
				}
				
				
				echo '
				
				<div '.$g.'>
// En tete des tableaux
				<table class="module_table" style="width: 25%;">	
			<tr>
				<th colspan="8">
					'.$equipe.'
				</th>
			</tr>
				
			<tr style="font-weight:bold;text-align: center;">
				
				<td class="row3">
					Joueur
				</td>
				
				<td class="row3">
					Pts
				</td>
				
				<td class="row3">
					2pts
				</td>
				
				<td class="row3">
					3pts
				</td>
				
				<td class="row3">
					lf
				</td>
				
				<td class="row3">
					rb\'d
				</td>
				
				<td class="row3">
					rb\'o
				</td>
				
				<td class="row3">
					int
				</td>
				
				<td class="row3">
					ct
				</td>
				
				<td class="row3">
					f
				</td>
				
							
			</tr>';
			
// requete pour prendre toutes les stats de sjoueurs de l'équipe dont l'id est $id_equipe_ (assigner précedemment)

			$requete2 = mysql_query("SELECT DISTINCT id_joueur, points, _2pts_r, _2pts_t, _3pts_r, _3pts_t,  reb_off, reb_def, lf_t, lf_r, interceptions, contres, fautes, joueurs.nom AS nom_joueur, prenom 
			FROM  phpl_stats, joueurs, equipes
			WHERE  phpl_stats.id_joueur = joueurs.id
			AND joueurs.id_equipe = $id_equipe_
			AND  phpl_stats.id_match = $id_match") or die (mysql_error());
			
// Boucle pour lister les joueurs
		while ($data2 = mysql_fetch_assoc($requete2))
		   {
		   ?>
// Contenu du tableau
				<tr> 
				
					
					<td nowrap class="row2" style="text-align:center;">
					<?php  echo  '<a href="joueurs.php?fiche='.$data2['id_joueur'].'">'.$data2['prenom'].' '.$data2['nom_joueur'].'</a>'; ?>
					</td>
					
					<td class="row2" style="text-align:center;">
								<?php echo $data2['points'];?>
					</td>
								
					<td class="row2" style="text-align:center;"> 
						<?php echo $data2['_2pts_r'].'/'.$data2['_2pts_t'];?>
					</td>
				
					<td class="row2" style="text-align:center;"> 
					<?php echo $data2['_3pts_r'].'/'.$data2['_3pts_t'];?>
					</td>
					
					<td class="row2" style="text-align:center;"> 
					<?php echo $data2['lf_r'].'/'.$data2['lf_t'];?>
					</td>
					
					<td class="row2" style="text-align:center;"> 
					<?php echo $data2['reb_def'];?>
					</td>
														
					<td class="row2" style="text-align:center;"> 
					<?php echo $data2['reb_off'];?>
					</td>
										
					<td class="row2" style="text-align:center;"> 
						<?php echo $data2['interceptions'];?>
					</td>
					
					<td class="row2" style="text-align:center;"> 
						<?php echo $data2['contres'];?>
					</td>
					
					<td class="row2" style="text-align:center;"> 
						<?php echo $data2['fautes'];?>
					</td>
				</tr>
				

<?php
			}

			$i++;
			echo '</table></div>';
}

Je suis donc à l'écoute de vos conseils car inutile de vous dire que pour placer les tableaux dans une page c'est pas peu le bazare avec mon code (j'aimerais mettre les 2 tableaux cote a cote...)


Bonne journée