Variable array dans condition qui ne fonctionne pas

Mammouth du PHP | 804 Messages

12 févr. 2010, 16:55

Bonjour,

j'ai vérifier toute les variables avant ma condition et elle existe toutes correctement, mais dans ma condition plus rien ???
if($DB_rst_points != $gardelespoints[$DB_race_code]){
	$DB_rst_place[$DB_race_code] ++;
    echo $DB_rst_place[$DB_race_code]; // petit test pour vérifier mais rien ne s'affiche
}
merci d'avance pour votre aide
Modifié en dernier par dogmongo le 12 févr. 2010, 16:58, modifié 1 fois.

ViPHP
ViPHP | 5462 Messages

12 févr. 2010, 16:56

et si tu fais
print_r($DB_rst_place);

Mammouth du PHP | 804 Messages

12 févr. 2010, 17:03

idem rien
while($row = mysql_fetch_array($result)){
						  
$DB_rst_points = $row['points'];

$DB_race_code = $row['race_code']; // CODE RACE DOG

$gardelespoints[$DB_race_code] = $DB_rst_points; // CLASSEMENT PRECEDENT
	
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] ++;

                       echo $DB_rst_place[$DB_race_code]; // ECHEC
	
	}
Modifié en dernier par dogmongo le 12 févr. 2010, 17:10, modifié 1 fois.

ViPHP
ViPHP | 5462 Messages

12 févr. 2010, 17:07

c'est pas très logique ton code, $DB_rst_points c'est un tableau ou pas ?

Mammouth du PHP | 804 Messages

12 févr. 2010, 17:13

j'ai modifié mon message précédent pour que tu comprennes, je cree des classements en sortie de requete, afin de pouvoir lister ses tableaux séparement, je crée une clé lié à un champs précis pour générer un classement, hors ca ne fonctionne pas.

ViPHP
ViPHP | 5462 Messages

12 févr. 2010, 17:19

j'ai modifié mon message précédent pour que tu comprennes, je cree des classements en sortie de requete, afin de pouvoir lister ses tableaux séparement, je crée une clé lié à un champs précis pour générer un classement, hors ca ne fonctionne pas.
mais $DB_rst_place il est ou a la base ?

Mammouth du PHP | 804 Messages

12 févr. 2010, 17:59

c'est un champ dans la BDD , je t'ai mis le code plus haut

ViPHP
ViPHP | 5462 Messages

12 févr. 2010, 18:43

c'est un champ dans la BDD , je t'ai mis le code plus haut
non je vois pas, si c'est un champs c'est pas un array

c'est pas plutot :
$DB_rst_place = $row['place'];

if($DB_rst_points != $gardelespoints[$DB_race_code])
{
    $DB_rst_place++;
    echo $DB_rst_place;
}
travail tu vace le display errors sur On ? et le error reporting sur E_ALL | E_STRICT ?




while($row = mysql_fetch_array($result)){
                                                 
$DB_rst_points = $row['points'];

$DB_race_code = $row['race_code']; // CODE RACE DOG

$gardelespoints[$DB_race_code] = $DB_rst_points; // CLASSEMENT PRECEDENT
       
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] ++;

                       echo $DB_rst_place[$DB_race_code]; // ECHEC
       
        }

Mammouth du PHP | 804 Messages

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

Mammouth du PHP | 804 Messages

12 févr. 2010, 19:00

je précise que j'ai bien mes résultats mais il n'apparait pas le numéro de classement :wink:

ViPHP
ViPHP | 5462 Messages

12 févr. 2010, 19:09

oui avec tout c'est plus claire, mais affiche tu les erreurs ?

en plus :

$DB_rst_place = 0;

non fait plutot

$DB_rst_place = array();

de plus tu fais

$DB_rst_place[$DB_race_code]++;

mais on ne peu pas incémenter une valeur qui n'existe pas

null++ = null

ca va te retourner une erreur, meme si techniquement ca le fait quand meme

Mammouth du PHP | 804 Messages

12 févr. 2010, 23:59

non , j'ai configuré mon serveur pour ne pas voir les erreurs, j'ai apporté tes modification sans résultats non plus.

ViPHP
ViPHP | 5462 Messages

13 févr. 2010, 01:27

non , j'ai configuré mon serveur pour ne pas voir les erreurs, j'ai apporté tes modification sans résultats non plus.
faut les afficher sinon tu verras jamais ou ca coince...