par
zeus » 22 déc. 2009, 10:21
Bonjour,
Est ce que c'est mes } qui sont mal placées ?
Pour ça, on a inventé un truc très utile qu'il s'appelle "identation", et qui consiste à décaler vers la droite le contenu d'une paire d'accolades ({)
Identé, ton code donne ça :
<?php
$select ='SELECT numero FROM membres';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
while($row = mysql_fetch_array($result)) {
$i =0;
while ($i == $row['numero'])
{
$i++;
}
echo'numero'.$i;
}
?>
Donc, a priori, non, ce n'est pas le soucis.
Par contre, ta logique est très bizarre. Si je l'écris en français, ça donne ça :
Code : Tout sélectionner
Récupérer les numéros existants dans la base
Pour chaque numéro de la base Faire
Initialiser i à 0
Pour chaque valeur du numéro en cours
Incrémenter i
FinPour
Afficher i
FinPour
Ce qui est étrange ici, ce que tu remets i à 0 à chaque fois, et que ta seconde boucle foreach ne te sers à rien.
Sinon, pour faire ce que tu cherches à faire, tu pourrais également te contenter de récupérer la plus grande valeur présente dans la base de données, et lui ajouter 1. Ça serait plus rapide, et moins compliqué, puisque faisable en une seule requête SQL :
SELECT MAX(numero)+1 as nouvelle_valeur FROM membres
Attention, ce système ne marche pas quand il n'y a aucune valeur dans ta base de données. Pour cela, il faut ajouter un petit bout de code PHP qui vérifie qu'une valeur a été remontée :
// Execution de la requête permettant de trouver le 1er numéro non présent dans la table
$str_select ='SELECT MAX(numero)+1 as nouvelle_valeur FROM membres';
$o_result = mysql_query($select, $link) or die ('Erreur : '.mysql_error() );
$a_row = mysql_fetch_array($result))
// Si mysql_fetch_array a retourné false, c'est qu'aucun numéro n'est présent en base
if( $a_row === false )
{
$nouvelle_valeur = 1;
}
// Sinon, c'est que la requête a fonctionnée
else
{
$nouvelle_valeur = $a_row['nouvelle_valeur']
}