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 :

boucle if ou foreach?


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 132
    Points : 69
    Points
    69
    Par défaut boucle if ou foreach?
    j'ai une requête PHP qui me donne un nombre de résultats attendus:
    2 lignes exactements

    j'aimerai implémenter une boucle qui me permettrait de faire apparaître un message du style "le résultat 1 est manquant" ou "le résultat 2 est manquant" ou "les 2 résultats sont manquants"

    j'ai tenté une boucle foreach mais ça me donne un résultat erroné:

    mes 2 lignes sont présentes mais il renvoie aussi par 2 fois "le résultats 1 est manquant"

    voici mon code
    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
     
    <?php
    include ("titre.php");
      $paire = 0;
      reset ($rows17);
      foreach ($rows17 as $row17) {
        if ($row17['dbtimestamp_log']!="") {
          list($chaine,$script) = explode(";",preg_replace("#(.*?)([^/]+)/(?:bin/)?([^/]*?)$#i","\\2;\\3",$row17["script_log"]));
    ?>
            <tr class="<?php echo ($paire==1?"paire":"impaire"); ?>" style="color:<?php echo ($row17["Duree"]!=''?($row17["returncode_log"]==0?"green":($row17["returncode_log"]<16?"orange":"red")):"black"); ?>">
    	  <td>
    <?php 
          if ($row17["jobname_log"] =="")
          {
    	      echo 'Job UNIX';
          }
          else      
          {
    echo $row17["jobname_log"];} ?></td>
              <td><?php echo ($row17["dbendstamp_log"]!='0000-00-00 00:00:00'?$row17["dbendstamp_log"]:"En cours"); ?></td>
              <td><?php echo ($script!=""?$chaine:"PATH"); ?></td>
    	  <td><?php echo ($script!=""?$script:$chaine); ?></td>
    	  <td title="<?php echo $row17['args_log']?>"><?php echo substr($row17['args_log'],0,20).(strlen($row17['args_log'])>20?'...':''); ?></td>
    	</tr>
    	<?php 
      $array =array('premier'=>'pubMCourante.pl', 'deuxieme'=>'pubMCOpsim.pl')
      ?>
    <?php
        }
        else
       {
       foreach ($array as $value){
          if ($script !=$value[1]){
            echo "<tr><td colspan='5' valign='top'><b>pubMCourante n'a pas tourné</b></td></tr>";}
          elseif ($script !=$value[2]){
            echo "<tr><td colspan='5' valign='top'><b>pubMCOpSim n'a pas tourné</b></td></tr>";}
          elseif ($script !=$value[1] && $script !=$value[2]){
            echo "<tr><td colspan='5' valign='top'><b>pubMCourante et pubMCopSim n'ont pas tourné</b></td></tr>";}
          else{}
        }
        }
        $paire = (abs($paire-1));
      };
    d'avance merci

  2. #2
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Bonjour,

    nulle part dans ton script, n'est écrit ton message d'erreurs?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 132
    Points : 69
    Points
    69
    Par défaut message d'erreur
    ça c'est la partie qui est censée renvoyer le message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     foreach ($array as $value){
          if ($script !=$value[1]){
            echo "<tr><td colspan='5' valign='top'><b>pubMCourante n'a pas tourné</b></td></tr>";}
          elseif ($script !=$value[2]){
            echo "<tr><td colspan='5' valign='top'><b>pubMCOpSim n'a pas tourné</b></td></tr>";}
          elseif ($script !=$value[1] && $script !=$value[2]){
            echo "<tr><td colspan='5' valign='top'><b>pubMCourante et pubMCopSim n'ont pas tourné</b></td></tr>";}
          else{}

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 132
    Points : 69
    Points
    69
    Par défaut évolution du code mais...
    toujours pas ce que je veux :/

    je remet le code avec son évolution

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
      $results17 = mysql_query ($query17);
      while ($rows17[] = mysql_fetch_array($results17));
      mysql_free_result ($results17);
      
    
    ?>
          <h4>Main Courante</h4>
    <?php
    include ("titre.php");
      $paire = 0;
      reset ($rows17);
      foreach ($rows17 as $row17) {
        if ($row17['dbtimestamp_log']!="") {
          list($chaine,$script) = explode(";",preg_replace("#(.*?)([^/]+)/(?:bin/)?([^/]*?)$#i","\\2;\\3",$row17["script_log"]));
    ?>
            <tr class="<?php echo ($paire==1?"paire":"impaire"); ?>" style="color:<?php echo ($row17["Duree"]!=''?($row17["returncode_log"]==0?"green":($row17["returncode_log"]<16?"orange":"red")):"black"); ?>">
    	  <td>
    <?php 
          if ($row17["jobname_log"] =="")
          {
    	      echo 'Job UNIX';
          }
          else      
          {
    echo $row17["jobname_log"];} ?></td>
              <td><?php echo ($row17["dbendstamp_log"]!='0000-00-00 00:00:00'?$row17["dbendstamp_log"]:"En cours"); ?></td>
              <td><?php echo ($script!=""?$chaine:"PATH"); ?></td>
              
         
      
    	  <td><?php echo ($script!=""?$script:$chaine); ?></td>
    	          
    	  
    	  
    	  <td title="<?php echo $row17['args_log']?>"><?php echo substr($row17['args_log'],0,20).(strlen($row17['args_log'])>20?'...':''); ?></td>
    	</tr>
    <?php 
        }
        else
       {
       $compteur["$script_log"]=0;
       
          if ($script !='pubMCourante.pl'){
            echo "<tr><td colspan='5' valign='top'><b>pubMCourante n'a pas tourné</b></td></tr>";
            $compteur["$script_log"]++;}
          else{}
          if ($script !='pubMCOpsim.pl'){
          echo "<tr><td colspan='5' valign='top'><b>pubMCOpSim n'a pas tourné</b></td></tr>";
          $compteur["$script_log"]++;}
          else {}
          if ($script !='pubMCourante.pl' && $script !='pubMCOpsim.pl'){
          echo "<tr><td colspan='5' valign='top'><b>pubMCourante et pubMCopSim n'ont pas tourné</b></td></tr>";}
          else{}
              
            
        else{
          }
        }
        
        $paire = (abs($paire-1));
      };
    et en rouge la partie incriminée

  5. #5
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    fais un echo de $script, pour voir ce qu'il retourne ?

  6. #6
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 185
    Points : 225
    Points
    225
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      reset ($rows17);
      foreach ($rows17 as $row17) {
    Ça, c'est inutile, le foreach déclenche automatiquement le reset

    Sinon ... Ton souci ... $script, c'est le nom de ton script ...
    Tu arrive dans ton premier foreach, tu fais un if( ), dans le if, tu définit ta variable $script ... et dans le else, tu l'utilise ...
    Donc ajoute la définition de $script dans le else, pour commencer
    Ensuite, c'est un problème de logique ...
    Si ton nom de script est different de pubMCourante.pl -> pubMCourante.pl n'a pas tourné
    Si ton nom de script est different de pubMCOpsim.pl -> pubMCOpsim.pl n'a pas tourné
    Donc, boucle 1, nom du script pubMCOpsim.pl ( au hazard ), le nom est différent de pubMCourante.pl -> affichage comme quoi pubMCourante.pl n'a pas tourné
    boucle 2, nom du script pubMCourante.pl, le nom est différent de pubMCOpsim.pl -> affichage comme quoi pubMCOpsim.pl n'a pas tourné

    Je sais pas si j'ai bien compris l'idée de ton script, mais je pense que tu as des problèmes d'algo la

    Il faudrait plutôt vérifier es-ce qu'un élément d'un tableau contenant tous les scripts ayant tournés est égal à pubMCOpsim.pl, es-ce qu'un élément est égal à pubMCourante.pl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      Si oui, les 2 ont tournés
    sinon 
      es-ce qu'un élément est égal à pubMCourante.pl
        si oui pubMCourante.pl à tourné et pas l'autre
      si non
        es-ce qu'un élément est égal à pubMCOpsim.pl
          si oui pubMCOpsim.pl à tourné, pas l'autre
        sinon
          aucun n'a tourné
    Voila ce que j'en pense :o

    Bonne chance !
    LoveAngel :: Meow( );
    Personne ne remarque ce qui marche trop bien. Procrastination, Terry Pratchett

Discussions similaires

  1. [PHP 5.3] boucle FOR ou FOREACH
    Par ETVigan dans le forum Langage
    Réponses: 19
    Dernier message: 06/08/2012, 04h05
  2. [PHP 5.0] boucle for dans foreach
    Par stomerfull dans le forum Langage
    Réponses: 6
    Dernier message: 15/01/2010, 11h57
  3. [MySQL] Erreur boucle while et foreach
    Par tiesto95 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 13/01/2009, 12h01
  4. boucle de boucle : mon premier foreach
    Par hpl76 dans le forum Taglibs
    Réponses: 21
    Dernier message: 27/11/2008, 15h31
  5. Réponses: 18
    Dernier message: 25/07/2007, 12h34

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