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

EDI, CMS, Outils, Scripts et API PHP Discussion :

[Forum] Gérer les if et else


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut [Forum] Gérer les if et else
    bonjour à tous
    je dois faire 16 test de if et else
    comment puis je les gerer
    voici le code :


    PHP:
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    <?php
         if($dossier != "")
              {    
           include("connexion.php");
           $doc=$HTTP_POST_VARS['dossier'];
           $requetesql="SELECT documents.id_document,fichiers.nom_fichier,fichiers.extension_fichier
           ,documents.nom_document, fichiers.adresse_fichier,fichiers.lien_fichier
            FROM documents,fichiers WHERE  documents.id_document = fichiers.id_document AND documents.nom_document LIKE '%$doc%'";        
            $result=mysql_query($requetesql);    
            if($result)
            {
         ?>
     
        <?php while($ligne=mysql_fetch_row($result))
          {
           {
        ?>
     
       <?php
        //affichages des dossiers trouvés
         $body .= $ligne[1] . "%0a";            
         //echo "<a href='join/'>$ligne[1].$ligne[7]</a></br>";
         echo"<tr><td><a class=\"mininews\" href=\"join/{$ligne[1]}\" target=\"_blank\">";
         switch($ligne[2])
            {
            case ".doc" : echo"<img src=\"img/word.gif\" border=\"0\">";
            break;
            case ".pdf" : echo"<img src=\"img/acrobat.gif\" border=\"0\">";
            break;
            case ".xls" : echo"<img src=\"img/excel.gif\" border=\"0\">";
            break;
            case ".ppt" : echo"<img src=\"img/powerpoint.gif\" border=\"0\">";
            break;
            case ".jpg" : echo"<img src=\"img/ftvimage.gif\" border=\"0\">";
            break;
            case ".bmp" : echo"<img src=\"img/ftvimage.gif\" border=\"0\">";
            break;
            case ".jpeg" : echo"<img src=\"img/ftvimage.gif\" border=\"0\">";
            break;
            default : echo"<img src=\"img/ftvimage.gif\" border=\"0\">";
     
            }
            echo"&nbsp;{$ligne[1]}</a> ";                            
        ?>
    <?php
    echo"<table cellSpacing=1 cellPadding=1 width=\"100%\"  border=\"0\">
         <tr>
         <td align=middle width=\"5%\" bgcolor='white'>ACTION</td>
         </tr>
         <tr>
         <td class=\"titrecel\" colSpan=2>
         <table width=\"100%\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\">
         <tr>
         <!--<td width=\"2%\" valign=\"center\"><a class=titre href=\"ajoutdoc.php?id={$id}\"><img src=\"img\modifier.gif\"  border=\"0\"></a></td>
         <td width=\"23%\" valign=\"center\"><a class=titre href=\"ajoutdoc.php?id={$id}\">Modifier&nbsp;&nbsp;|</a></td>
         <td width=\"2%\" valign=\"center\"><a class=titre href=\"javascript:supprimer({$id},'{$dbresult[1]}')\"><img src=\"img\supprimer.gif\" border=\"0\"></a></td>
         <td width=\"23%\" valign=\"center\"><a class=titre href=\"javascript:supprimer({$id},'{$dbresult[1]}')\">Supprimer</a></td>-->
         <td width=\"2%\" valign=\"center\"><a class=titre href=\"javascript:email()\"><img src=\"img\outlook.gif\" border=\"0\"></a></td>
         <td width=\"23%\" valign=\"center\"><a class=titre href=\"javascript:email()\">Envoyer un email</a></td>
         <!--<td width=\"2%\" valign=\"center\"><a class=titre href=\"archivage.php?id={$id}\"><img src=\"img\archive.gif\" border=\"0\"></a></td>
         <td width=\"23%\" valign=\"center\"><a class=titre href=\"archivage.php?id={$id}\">Archiver le document</a></td>-->
         </tr>
         </table>
        </table>"
    ?>
     
    <?php
             }
            }
           }
       else
        {    
     
          //echo "erreur sql";
         }
      ?>
     
    <?
    }
    ?>

    dois je repeter 16 fois ce code à chaque else if
    ou est ce qu'on peut gerer le test en haut
    car en bas je fais une affichage qui depend du test
    merci pou votre aide

  2. #2
    Membre habitué Avatar de dor_boucle
    Inscrit en
    Juin 2003
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 147
    Points : 136
    Points
    136
    Par défaut
    tu fais une fonction avec ce code et tu fais 16 if qui appelle cette fonction.

  3. #3
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    J'ai rien compris.

    Ce code marche vraiment ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        <?php while($ligne=mysql_fetch_row($result))
          {
           {
        ?>

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    macbook : Je n'ai jamais testé en PHP mais ça marche en C, ça permet de définir un scope réduit. En PHP, l'intérêt est inexistant à ma connaissance.

  5. #5
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut
    pouvez vous m'initier up peu sur
    le script utilisant une fonction
    je suis encore un debutant

  6. #6
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Je parlais de la double accolades...

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 109
    Points : 131
    Points
    131
    Par défaut
    Peux-tu m'expliquer d'ou sort ce chiffre 16 !
    .. j'ai pas tout compris ...

  8. #8
    Membre régulier Avatar de Pe04
    Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2005
    Messages : 111
    Points : 71
    Points
    71
    Par défaut
    pour utiliser une fonction... tu declare function...

    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function Fin($msg){
      printf(....
      ....
      }

  9. #9
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Citation Envoyé par macbook
    Je parlais de la double accolades...
    Lol ça tombe bien, moi aussi (cette fois). Du moment que tu en fermes autant que tu en ouvres, cela ne pose pas de problème particulier. En C/C++, il faudrait faire attention au scope des variables déclarées mais ce n'est pas le cas ici.

  10. #10
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Je viens de faire le test avec ce code ridicule :

    <?php

    &#160;&#160;&#160;&#160;$i&#160;
    =&#160;0&#160;;
    &#160;&#160;&#160;&#160;while&#160;(&#160;
    $i&#160;<&#160;10&#160;)
    &#160;&#160;&#160;&#160;{
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo&#160;
    $i&#160;.&#160;'<br&#160;/>'&#160;;
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $i&#160;++&#160;;
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;}
    ?>

    Phpsyntaxcolor powered by decabodi
    Je n'ai aucune erreurs, mais je n'en vois pas l'utilité en PHP...

  11. #11
    Membre averti Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Points : 392
    Points
    392
    Par défaut
    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
    <?php 
         if($dossier != ""){    
           include("connexion.php"); 
           $doc=$HTTP_POST_VARS['dossier']; 
           $requetesql="SELECT documents.id_document,fichiers.nom_fichier,fichiers.extension_fichier 
           ,documents.nom_document, fichiers.adresse_fichier,fichiers.lien_fichier 
            FROM documents,fichiers WHERE  documents.id_document = fichiers.id_document AND documents.nom_document LIKE '%$doc%'";        
            $result=mysql_query($requetesql);    
            if($result) { 
    			while($ligne=mysql_fetch_row($result)) { 
    				//affichages des dossiers trouvés 
    				$body .= $ligne[1] . "%0a";            
    				 //echo "<a href='join/'>$ligne[1].$ligne[7]</a></br>"; 
    				 echo"<tr><td><a class=\"mininews\" href=\"join/{$ligne[1]}\" target=\"_blank\">"; 
    				 switch($ligne[2])   { 
    						case ".doc" : echo"<img src=\"img/word.gif\" border=\"0\">"; 
    						break; 
    						case ".pdf" : echo"<img src=\"img/acrobat.gif\" border=\"0\">"; 
    						break; 
    						case ".xls" : echo"<img src=\"img/excel.gif\" border=\"0\">"; 
    						break; 
    						case ".ppt" : echo"<img src=\"img/powerpoint.gif\" border=\"0\">"; 
    						break; 
    						case ".jpg" : echo"<img src=\"img/ftvimage.gif\" border=\"0\">"; 
    						break; 
    						case ".bmp" : echo"<img src=\"img/ftvimage.gif\" border=\"0\">"; 
    						break; 
    						case ".jpeg" : echo"<img src=\"img/ftvimage.gif\" border=\"0\">"; 
    						break; 
    						default : echo"<img src=\"img/ftvimage.gif\" border=\"0\">"; 
                    } //end switch
    				echo"&nbsp;{$ligne[1]}</a> ";                            
    				echo <<<END
    					<table cellSpacing=1 cellPadding=1 width=\"100%\"  border=\"0\"> 
    					 <tr> 
    					 <td align=middle width=\"5%\" bgcolor='white'>ACTION</td> 
    					 </tr> 
    					 <tr> 
    					 <td class=\"titrecel\" colSpan=2> 
    					 <table width=\"100%\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\"> 
    					 <tr> 
    					 <!--<td width=\"2%\" valign=\"center\"><a class=titre href=\"ajoutdoc.php?id={$id}\"><img src=\"img\modifier.gif\"  border=\"0\"></a></td> 
    					 <td width=\"23%\" valign=\"center\"><a class=titre href=\"ajoutdoc.php?id={$id}\">Modifier&nbsp;&nbsp;|</a></td> 
    					 <td width=\"2%\" valign=\"center\"><a class=titre href=\"javascript:supprimer({$id},'{$dbresult[1]}')\"><img src=\"img\supprimer.gif\" border=\"0\"></a></td> 
    					 <td width=\"23%\" valign=\"center\"><a class=titre href=\"javascript:supprimer({$id},'{$dbresult[1]}')\">Supprimer</a></td>--> 
    					 <td width=\"2%\" valign=\"center\"><a class=titre href=\"javascript:email()\"><img src=\"img\outlook.gif\" border=\"0\"></a></td> 
    					 <td width=\"23%\" valign=\"center\"><a class=titre href=\"javascript:email()\">Envoyer un email</a></td> 
    					 <!--<td width=\"2%\" valign=\"center\"><a class=titre href=\"archivage.php?id={$id}\"><img src=\"img\archive.gif\" border=\"0\"></a></td> 
    					 <td width=\"23%\" valign=\"center\"><a class=titre href=\"archivage.php?id={$id}\">Archiver le document</a></td>--> 
    					 </tr> 
    					 </table> 
    					</table>" 
    END;
     
    			} //end while
            } //end if
           else {    
                //echo "erreur sql"; 
    		} 
    	 } 
    ?>
    voici le meme code en un peu plus propre
    utilise un logiciel genre note pad ++ pour la coloration et le repli du code.

    pour tes 16 if....
    ca depend de ce que tu veux faire...

  12. #12
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut
    Attend je vais bien vous expliquer le probleme
    voila
    il y a 4 formulaire dans ma rubrique recherche activé tous chacun par un checkbox
    les utilisateurs peuvent choisir de cocher :
    le premier checkbox(seul) donc un formaulaire activé
    ou
    le deuxieme (seule) donc un seul formulaire active
    ou
    le troisieme
    ou
    le quetrieme
    ou
    deux checkbox en meme temps donc 2 formulaire en meme temps
    ou
    trois en meme temps
    ou
    les quatre en meme temsp
    en gros il y 16 requetes

    je dois donc faire 16 test dont voici l'algorithme


    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
    if(dossier !=vide)
    {
    blablabla
    ........
    requete de recheche à partir du dossier
    et affichage
    }
    else if (motcle!=vide)
    {
    requete de recheche à partir du motclé
    et affichage
    }
    elseif(date!=vide)
    {
    requete de recheche à partir du date
    et affichage
    }
     
    elseif(date!=vide &&motclé!=vide){
    requete de recheche à partir du date et mot clé
    et affichage
    }
    merci pour votre aide

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    je suppose qu c'est 16 if ont quelq choz de commun n'est ce pas? essai d'en faire une fonction et tu pourra par la suite faire des switch ou des if et appeler cette fonction. sinon pour le moment peut etre q les 16 if t'arrange mais dis toi q ça peut devenir 40 if demain...tu vois non

  14. #14
    Membre averti Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Points : 392
    Points
    392
    Par défaut
    je te conseil de poser ta question dans le forum approprié:
    http://www.developpez.net/forums/viewforum.php?f=56
    ou
    http://www.developpez.net/forums/viewforum.php?f=24

    ceci n'est pas un problème de php mais plutot de logique/analyse.

  15. #15
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut
    non non Monsieur XtofRoland
    c'est du php

  16. #16
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Amha c'est l'algorithme qui n'est pas optimal...

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    J'avais eu un truc un peu similaire, je ne sais pas si ça peut t'aider mais j'avais cela :

    Je récupérai les checkbox et j'initialisais une variable pour chaque cas de figure (check A seul ou check A + check B etc...).

    Ensuite selon la variable, je passais tel ou tel paramètre à la requête.

    Ca fait donc un script tout de même beaucoup plus clair que 16 if de suite.

  18. #18
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut
    peut etre que ca peut maider

  19. #19
    Membre confirmé Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Points : 587
    Points
    587
    Par défaut
    Bonjour,

    Si j'ai bien compris, c'est dans la clause where que tuas des changements en fonction des demandes de l'utilisateur.

    Dans ce genre de problème, je développe la clause en question en testant les demandes du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $requete='select champ1, champ2, ... from table where';
    if (isset($_POST['dossier']))
    $requete.=' champxyz like "%'.$_POST['dossier'].'%" and';
    if (isset ($_POST['motcle']))
    $requete.=' champabc like "%'.$_POST['motcle'].'%" and';
    ...
    if (substr($requete, -5)=='where')
    {$requete=substr($requete,0, -6);}
    else
    {$requete=substr($requete,0,-4);}

  20. #20
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Je suis assez d'avis également que c'est un problème de structure de code, c'est donc quelque chose qui, a priori, correspond davantage à de l'algorithmique. Cependant, PHP gère la structure switch d'une manière assez particulière (il permet les chaînes de caractère), ce qui rend le thread valable ici également, AMHA.

    De mon côté, j'ai tendance à beaucoup utiliser switch ou foreach en me débrouillant pour avoir des variables faciles à réutiliser.

Discussions similaires

  1. forum : gérer les messages lus et non lus avec un cookie
    Par elcoyotos dans le forum Langage
    Réponses: 2
    Dernier message: 18/08/2014, 14h30
  2. Gérer les heures sur un forum.
    Par psychoBob dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 18/04/2006, 09h59
  3. Gérer les clics sur les boutons
    Par cyberlewis dans le forum Windows
    Réponses: 4
    Dernier message: 08/02/2004, 15h34
  4. Comment gérer les espaces blancs?
    Par Lambo dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 16/05/2003, 09h44
  5. gérer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 14/06/2002, 13h39

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