[Message édité plusieurs fois mais je suis trèèèèès fatigué...]
Le test
est en dehors de la boucle d'affectation du recordset $donnee_batiment.Le test
Code PHP :
<?php
if (!$nb) {
$niveau_actuelle = 0;
$niveau = 1;
} else {
$niveau_actuelle = $donnee_batiment['niveau'];
$niveau = $donnee_batiment['niveau'] + 1;
}
Du coup, tu as un décalage entre le niveau du batiment et ce que tu affiches.
De plus, tu fais trop de requêtes sur la BDD.
1 requête pour avoir les batiments + une requtete pour chaque batiment dans la liste.
Le mieux à mon avis est faire une seule requête avec une jointure.
Petit squelette rapide :
Code PHP :
<?php
$sql='SELECT * FROM info_batiment as i LEFT JOIN batiment as b ON b.ID_batiment = i.ID_Batiment WHERE ID_membre = "'.$ID_membre.'"';
$rsB=mysql_query($sql) or die(mysql_error());
while($donnee=mysql_fetch_assoc($rsB)){
if(intVal($donnee['niveau']==0){
// Batiment non construit
$niveau_actuel = 0;
$niveau = 1;
} else {
// Batiment déjà construit auparavant
$niveau_actuel = $donnee['niveau'];
$niveau = $niveau_actuel + 1;
}
// Calcul des valeurs pour l'upgrade
$nourriture = $niveau * $donnee['nourriture'];
$pierre = $niveau * $donnee['pierre'];
$or = $niveau * $donnee['or'];
$bois = $niveau * $donnee['bois'];
echo '<tr><td>'.$donnee['nom'].'<br>';
echo '<img src="images/'.$donnee['image'].'" width="50" height="50"></td>';
echo '<td>'.$donnee['nourriture'].' Nourriture '.$donnee['pierre'].' Pierre '.$donnee['or'].' Or '.$donnee['bois'].' Bois</td>';
echo '<td>';
if ( $donnees['nourriture'] > $donnee['nourriture'] && $donnees['bois'] > $donnee['bois'] && $donnees['or'] > $donnee['or'] && $donnees['pierre'] > $donnee['pierre'] ) {
if ( $niveau >= $donnee['niveau_maxi']) {
echo '';
} else {
echo '<form method="post" action="verif_batiment.php?id='.$donnee['ID_batiment'].'"><input type="submit" value="Evoluer niveau '.$niveau.'"></form>';
echo $donnee['ID_batiment'];
}
} else {
echo 'Pas assez de ressources';
}
echo '</td>';
echo '</tr>';
}