Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/12/2007, 10h32   #1
Gunner4902
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Par défaut Problème de logique dans ce test conditionnel

Bonjour,
Petit problème de logique dans ce test conditionnel :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
if ($folder[$i] == "multi"){
	$res = count_chars($file[$ii],1);
	$w=0;
	while (list($k,$v)=each($res))
	{
		$w=$w+$v;
	}
	if ($w <= "9"){
		function name()
		{
			$fichier = file("+name.php", FILE_IGNORE_NEW_LINES);
			$i = array_rand($fichier);
			echo "<span class=\"$fichier[$i]\">$fichier[$i]</span><span class=\"et\">et</span><span class=\"second\"><span class=\"$fichier[$i]\" >$fichier[$i]</span></span>";
		}
		name();
	}
	else
		ereg("^(.+)\((.+)$", $file[$ii], $n);
		$fichier = file("+name.php", FILE_IGNORE_NEW_LINES);
		$i = array_rand($fichier);
		echo "<span class=\"$n[1]\">$n[1]</span><span class=\"et\">et</span><span class=\"second\"><span class=\"$fichier[$i]\" >$fichier[$i]</span></span>";
}
else
{
	$res = count_chars($file[$ii],1);
	$w=0;
	while (list($k,$v)=each($res))
	{
		$w=$w+$v;
	}
	if ($w <= "9"){
		function name()
		{
			$fichier = file("+name.php", FILE_IGNORE_NEW_LINES); 
			$i = array_rand($fichier); 
			echo "<span class=\"$fichier[$i]\">$fichier[$i]</span>";
		}
		name();
	}
	else
		ereg("^(.+)\((.+)$", $file[$ii], $n);
		echo "<span class=\"$n[1]\">$n[1]</span>";
}
Ce que je veux faire est :
Si le dossier choisit est "multi" alors renvoyer le nom de fichier 2 fois (avec sous condition que si le nom est de moins de 9 caractère, renvoyer un nom aléatoire provenant d'un fichier name.php, sinon prendre le nom du fichier).
Sinon renvoyer le nom du fichier une seule fois.

Le hic, c'est que si le résultat du test est :
multi avec nom de fichier <9 : 2 noms de renvoyés : OK
multi avec nom de fichier >9 : 3 noms de renvoyés :
dossier autre que multi avec nom de fichier <9 : 1 nom de renvoyé : OK
dossier autre que multi avec nom de fichier >9 : 1 nom de renvoyé : OK

Pourquoi Y a t il 3 noms de renvoyés avec multi else ? J'ai pourtant bien imbriqué les else et les if (enfin je pense)…

Merci de vos éclairages
  Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2007, 13h31   #2
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 182
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 182
Points : 6 469
Points : 6 469
Pas sur, mais en rajoutant les accolades manquantes

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
 
if ($folder[$i] == "multi"){
	$res = count_chars($file[$ii],1);
	$w=0;
	while (list($k,$v)=each($res))
	{
		$w=$w+$v;
	}
	if ($w <= "9"){
		function name()
		{
			$fichier = file("+name.php", FILE_IGNORE_NEW_LINES);
			$i = array_rand($fichier);
			echo "<span class=\"$fichier[$i]\">$fichier[$i]</span><span class=\"et\">et</span><span class=\"second\"><span class=\"$fichier[$i]\" >$fichier[$i]</span></span>";
		}
		name();
	}
	else{
		ereg("^(.+)\((.+)$", $file[$ii], $n);
		$fichier = file("+name.php", FILE_IGNORE_NEW_LINES);
		$i = array_rand($fichier);
		echo "<span class=\"$n[1]\">$n[1]</span><span class=\"et\">et</span><span class=\"second\"><span class=\"$fichier[$i]\" >$fichier[$i]</span></span>";
	}
}
else
{
	$res = count_chars($file[$ii],1);
	$w=0;
	while (list($k,$v)=each($res))
	{
		$w=$w+$v;
	}
	if ($w <= "9"){
		function name()
		{
			$fichier = file("+name.php", FILE_IGNORE_NEW_LINES);
			$i = array_rand($fichier);
			echo "<span class=\"$fichier[$i]\">$fichier[$i]</span>";
		}
		name();
	}
	else{
		ereg("^(.+)\((.+)$", $file[$ii], $n);
		echo "<span class=\"$n[1]\">$n[1]</span>";
	}
}
 
?>
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2007, 14h38   #3
Gunner4902
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Après avoir testé le code corrigé, celà semble être bon.
Merci MaitrePylos
  Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Mettre Résolu
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h28.


 
 
 
 
Partenaires

Hébergement Web