par
dogmongo » 12 févr. 2010, 18:58
Tu vas mieux comprendre comme ca :
je travail sur une base de donnée qui detient des résultats d'animaux avec points et
code >> (identification race) cf.
$DB_race_code
je fais une seule requete et utilise les tableau associatif pour dispatcher mes résultats par
code
à chaque fois qu'un résultats sort de la table je lui attribu un classement 1 , 2 , 3 possible execo d'ou la condition cf.
if($DB_rst_points != $gardelespoints[$DB_race_code]){
ensuite quand ma requete est fini j'affiche tout ca grace à une boucle for, ce qui me permet d'avoir un joli classement de résultat par race et en une seule requete
je te met le code en entier pour que tu comprennes très bien mon objectif
// déclaration des variables
$DB_rst_place = 0;
$texte = "";
$lescoderace = array(304,305,306,307,327,303,320,856,857,858,859,860,861,862,317,316,333,868,869,183,310,309,308,311);
$result = mysql_query("
SELECT a.rst_chien, a.rst_points, SUM(a.rst_points) AS points, b.dog_codrace, d.race_code, d.race_nom, c.prenom, c.nom, c.clt_civilite
FROM source_resultats AS a
LEFT JOIN source_chiens AS b ON b.dog_nom = a.rst_chien
LEFT JOIN source_clients AS c ON c.id = b.dog_pro
LEFT JOIN source_race AS d ON d.race_code = b.dog_codrace
GROUP BY rst_chien
ORDER BY points DESC
");
//$DB_rst_place = 0;
while($row = mysql_fetch_array($result)){
//$DB_prenom = $row['prenom'];
$DB_rst_points = $row['points'];
$DB_rst_chien = $row['rst_chien'];
$DB_race_nom = $row['race_nom'];
$DB_clt_civilite = $row['clt_civilite'];
$DB_nom = $row['nom'];
$DB_race_code = $row['race_code']; // variable race
$gardelespoints[$DB_race_code] = $DB_rst_points; // score du précédent
//echo $gardelespoints[$DB_race_code]; // TEST OK
//echo $DB_rst_points; // TEST OK
if($DB_rst_points != $gardelespoints[$DB_race_code]){
$DB_rst_place[$DB_race_code] ++;
}
$texte[$DB_race_code].= $DB_rst_place[$DB_race_code]."$DB_race_nom $DB_rst_chien $DB_clt_civilite $DB_nom $DB_rst_points*\n";
echo $texte[$DB_race_code];
}// fin du while
$count = count($lescoderace);
for( $i = 0; $i < $count ; $i++){
$code = $lescoderace[$i];
$nouveautexte.= $texte[$code]."\n";
}
merci de ton aide
Tu vas mieux comprendre comme ca :
je travail sur une base de donnée qui detient des résultats d'animaux avec points et [b]code [/b]>> (identification race) cf. [u]$DB_race_code[/u]
je fais une seule requete et utilise les tableau associatif pour dispatcher mes résultats par [b]code[/b]
à chaque fois qu'un résultats sort de la table je lui attribu un classement 1 , 2 , 3 possible execo d'ou la condition cf.[u] if($DB_rst_points != $gardelespoints[$DB_race_code]){[/u]
ensuite quand ma requete est fini j'affiche tout ca grace à une boucle for, ce qui me permet d'avoir un joli classement de résultat par race et en une seule requete
je te met le code en entier pour que tu comprennes très bien mon objectif
[php]
// déclaration des variables
$DB_rst_place = 0;
$texte = "";
$lescoderace = array(304,305,306,307,327,303,320,856,857,858,859,860,861,862,317,316,333,868,869,183,310,309,308,311);
$result = mysql_query("
SELECT a.rst_chien, a.rst_points, SUM(a.rst_points) AS points, b.dog_codrace, d.race_code, d.race_nom, c.prenom, c.nom, c.clt_civilite
FROM source_resultats AS a
LEFT JOIN source_chiens AS b ON b.dog_nom = a.rst_chien
LEFT JOIN source_clients AS c ON c.id = b.dog_pro
LEFT JOIN source_race AS d ON d.race_code = b.dog_codrace
GROUP BY rst_chien
ORDER BY points DESC
");
//$DB_rst_place = 0;
while($row = mysql_fetch_array($result)){
//$DB_prenom = $row['prenom'];
$DB_rst_points = $row['points'];
$DB_rst_chien = $row['rst_chien'];
$DB_race_nom = $row['race_nom'];
$DB_clt_civilite = $row['clt_civilite'];
$DB_nom = $row['nom'];
$DB_race_code = $row['race_code']; // variable race
$gardelespoints[$DB_race_code] = $DB_rst_points; // score du précédent
//echo $gardelespoints[$DB_race_code]; // TEST OK
//echo $DB_rst_points; // TEST OK
if($DB_rst_points != $gardelespoints[$DB_race_code]){
$DB_rst_place[$DB_race_code] ++;
}
$texte[$DB_race_code].= $DB_rst_place[$DB_race_code]."$DB_race_nom $DB_rst_chien $DB_clt_civilite $DB_nom $DB_rst_points*\n";
echo $texte[$DB_race_code];
}// fin du while
$count = count($lescoderace);
for( $i = 0; $i < $count ; $i++){
$code = $lescoderace[$i];
$nouveautexte.= $texte[$code]."\n";
}
[/php]
merci de ton aide