if... else... while.. boucle.. sos.... [PHP] - Programmation
Marsh Posté le 24-08-2001 à 14:35:15
oui c'est normal, tu ne l'initialises jamais.
if ($nb == "" ) // $nb non initialisé donc ($nb == "" ) == true
{
$nb = 0; // donc ($nb == "" ) == true
}
else
{
// un gros bloc else par lequel php ne passera jamais car la condition plus haut est toujours vérifiée.
}
Marsh Posté le 24-08-2001 à 14:43:14
ben oui mais la première fois....
if ($nb == "" ) // $nb non initialisé donc ($nb == "" ) == true
{
$nb = 0; // donc ($nb == "" ) == true
}
est normal... c ce que je veux...
mais je ne savais pas que
$nb = 0; // donc ($nb == "" ) == true
considérant que je pensais que "" était différent de 0....
tu vois ce que je veux faire ?
comment le contourner ?
Marsh Posté le 24-08-2001 à 14:45:45
si tu veux juste initialiser $nb, tu peux faire ton premier test avec isset(). if (!isset($nb)) ...
Marsh Posté le 25-08-2001 à 16:29:06
pourtant je change le contenu de la variable en faisant $nb = 0; s'il est vide ("" ) ou $nb = 0; si $row1->id_cat est différent de $nb
donc il ne peut être égal à rien que la première fois que la boucle est lancée.. ensuite il est au moins égalà 0 mais pas à rien...
cela veut-il dire que $nb est remis à "vide" à chaque fin de boucle ???
Marsh Posté le 25-08-2001 à 16:54:22
non, parce qu'en php, tu as une traduction de type dynamique. quand tu écris $nb=="" il considère que $nb est un string, or le string "" est aussi représenté par 0.
Marsh Posté le 26-08-2001 à 17:22:06
hmm.... fais chier... alors comment faire ?? en partant de 1 au lieu de 0 pour faire mes comparaisons ? ensuite (puique j'utilise la valeur 0) je ferai $bn - 1 (qui le ramèenra à 0)
bref, je comprend mieux... merci
Marsh Posté le 26-08-2001 à 17:31:18
isset() ! ça teste si la variable est initialisée (si on lui à déjà affecté une valeur).
Marsh Posté le 26-08-2001 à 17:37:07
ha oui, j'avais squiizzé ton msg )
merci, je vais faire comme ça
Marsh Posté le 24-08-2001 à 14:10:55
voici ma boucle :
while ($row1 = mysql_fetch_object($req1))
{
$row1->id_cat = $row1->id_cat - 1;
if ($nb == "" )
{
$nb = 0;
echo "nb est à 0<br>";
$nb1 = 0;
echo "nb1 est à 0<br>";
}
else
{
if ($row1->id_cat == $nb)
{
$nb1 = $nb1 + 1;
echo "on rajoute 1 à nb1<br>";
}
else
{
$nb = $nb + 1;
echo "on rajoute 1 à nb<br>";
$nb1 = 0;
echo "nb1 est à 0<br>";
}
}
$ligne = "zlien["."$row1->id_cat"."]["."$nb1"."] = '<A HREF=\"..\materiels\matos_gen.php3?sscat="."$row1->id_sscat"."\" CLASS=ejsmenu>"."$row1->nom_sscat"."</A>';\n";
echo $ligne;
echo "<br><br>";
$menu_centre .= $ligne;
}
et voici ce que j'obtiens :
nb est à 0
nb1 est à 0
zlien[0][12] = 'Divers Divers Diversccccc';
nb est à 0
nb1 est à 0
zlien[0][12] = 'azedazdezad';
nb est à 0
nb1 est à 0
zlien[0][12] = 'ffdfdfdfeffezzef';
nb est à 0
nb1 est à 0
zlien[0][12] = 'Divers Divers Divers Divers';
nb est à 0
nb1 est à 0
zlien[0][12] = 'ffdfdfdfeffezzefdddddd';
nb est à 0
nb1 est à 0
zlien[0][12] = 'ffdfdfdfeffezzefd';
nb est à 0
nb1 est à 0
zlien[0][12] = 'sdfsdfsdfdf';
nb est à 0
nb1 est à 0
zlien[0][12] = 'Divers Ecrans';
nb est à 0
nb1 est à 0
zlien[0][12] = '14 pouces';
nb est à 0
nb1 est à 0
zlien[0][12] = '15 pouces';
nb est à 0
nb1 est à 0
zlien[0][12] = '17 pouces';
nb est à 0
nb1 est à 0
zlien[1][12] = 'Divers Boîtiers';
nb est à 0
nb1 est à 0
zlien[1][12] = 'Mini-tour';
comme si la variable $nb était réinitialisée à chaque début de while..... c normal... y'a un truc que j'aimal fait mais quoi ? je pige pas là....
merci les copines,
Elcap
PS : comme vous le voyez je suis toujours sur mon site sur le hardware