IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème de logique dans ce test conditionnel


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Gunner4902
    Invité(e)
    Par défaut Problème de logique dans ce test conditionnel
    Bonjour,
    Petit problème de logique dans ce test conditionnel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Pas sur, mais en rajoutant les accolades manquantes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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>";
    	}
    }
     
    ?>

  3. #3
    Gunner4902
    Invité(e)
    Par défaut
    Après avoir testé le code corrigé, celà semble être bon.
    Merci MaitrePylos

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/04/2013, 11h45
  2. problème de logique dans une boucle
    Par volubiliss dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/03/2011, 11h57
  3. Problème de logique dans des boucles "If"
    Par bilou95 dans le forum Langage
    Réponses: 3
    Dernier message: 16/10/2007, 11h05
  4. [XSLT] Problème de variable dans un test
    Par san julio dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 30/01/2007, 16h56
  5. Problème de lecteur logique dans Windows XP
    Par olosta dans le forum Windows XP
    Réponses: 1
    Dernier message: 04/05/2006, 17h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo