fonction et if { ... } else { ... }

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : fonction et if { ... } else { ... }

par azerty53 » 09 juin 2006, 13:31

donc voila j'ai tout bien indenté et tout fonctionne a merveille merci a vous...

Bonne aprem sous ce beau soleil 8) 8) 8) 8)

par sadeq » 09 juin 2006, 12:59

C'est un problème de conception algorithmique :
Tu veux conditionner l'affichage du haut et du bas selon si l'utilisateur est loggé et sinon afficher un message.

Les fonctions haut et bas ne doivent pas gérer la condition à leur niveau et surtout pas le session_start

Chaque fonction doit se contenter de faire ce qu'elle a à faire. C'est au programme principal d'ordonner les tâches en les conditionnant :

Proposition de correction:
<?php 
//Programme principal
//Ne pas oublier de mettre le session_start() 
session_start(); 
//Ensuite on vérifie que la variable $_SESSION['logged'] existe et vaut bien true. 
if (isset($_SESSION['logged']) && $_SESSION['logged'] == true) 
{ 
   //Afficher le haut
    haut (......); //donner le titre
   //Faire autre chose peut être
   ......
  //Afficher le bas
  bas ();
}
else 
{ 
   //Message d'erreur   
   echo 'Erreur : vous devez être connecté pour accéder à cette page !'; 
}
//Fin du principal

// -----------------------------
// FONCTION UTILISEES
// -----------------------------

function haut($titre) // Déclaration de la fonction HAUT 
{ 

?> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
        <title><?php echo $titre; ?></title> 
    </head> 
    <body> 
         
        <!-- Design de la page --> 
        <div id="page">      
            <div id="header"> 
            </div> 
                <div id="sousmenuH" align="center"> 
                <!-- Menu Horizontal --> 
                    <div id="menu_H">   
                        <?php 
                        // On appelle le menu horizontal 
                        include('menu_h.php'); 
                        ?> 
                    </div> 
             
                    <!-- Menu Vertical Gauche --> 
                    <div id="menu_VG"> 
                        <?php 
                        // On appelle le menu de gauche 
                        include('menu_g.php'); 
                        ?> 
                    </div> 
             
                        <!-- Menu Vertical Droite --> 
                        <div id="menu_VD"> 
                            <?php 
                            // On appelle le menu de droite 
                            include('menu_d.php'); 
                            ?> 
                        </div> 
             
            <!-- Nous appelons le contenu central de la page -->         
            <div id="content"> 
<?php 
} // Fin de la fonction haut 

function bas() // Déclaration de la fonction BAS 
{ 
?> 
            </div> 
            <!-- Pied de page --> 
            <div id="footer" align="center"> 
                <?php 
                // On appelle le pied de page 
                include('footer.php'); 
                ?> 
            </div> 
        </div> 
</div> 
    </body> 
    </html> 
<?php 
}  //Fin de la fonction BAS
?>

par azerty53 » 09 juin 2006, 12:45

allez je vais retourner au boulot et je vous tient au courant !

par jpaul » 09 juin 2006, 12:07

Si tu as fait cette erreur, c'est peut être que tu n'utilises pas un outil qui puisse t'aider.
Moi j'utilise un éditeur gratuit qui s'apelle notepad++, ça me permet de repérer ce genre de problèmes en un coup d'oeil.
Ce n'est certainement pas le seul mais c'est celui qui me convient le mieux parmi ceux que j'ai testé...

par Ryle » 09 juin 2006, 11:52

Bah je vais répeter ce que les autres ont dit, mais c'est un peu du grand n'importe quoi ce que tu nous présentes là :)

Voilà ce que donne ton code si l'on néglige tout le superflu et qu'on l'INDENTE PROPREMENT :twisted: :

Code : Tout sélectionner

fonction { if { } fonction { } else { }
une fonction qui n'a pas de fin,
un else qui ferme une fonction,
etc. c'est pas joli-joli tout ça... et après on s'étonne que ça ne fonctionne pas ?! Aller hop, au travail ! et on se rappel que l'indentation n'est pas un privilège du html ;)

Re: fonction et if { ... } else { ... }

par guilt92 » 09 juin 2006, 11:32

donc je me demande si quand je ferme ma fonction haut il ne me ferme pas le if au lieu de la fonction.
Quand tu fermes une accolade cela ferme la derniere accolade ouverte, donc il ferme le if qui est ouvert après la fonction.
Comme tu ne peux pas déclarer une fonction dans une fonction c'est normal que tu aies une erreur.

par Vaedan » 09 juin 2006, 11:29

Je pense que tu devrais sortir la fonction bas de ta fonction haut et réessayer. le problème pourrait venir de là :-k

fonction et if { ... } else { ... }

par azerty53 » 09 juin 2006, 11:27

re

j'ai une petite question technique a poser.
je vous donne mon code et je vous explique

<?php
function haut($titre) // Déclaration de la fonction HAUT
{
//Ne pas oublier de mettre le session_start()
session_start();
//Ensuite on vérifie que la variable $_SESSION['logged'] existe et vaut bien true.
if (isset($_SESSION['logged']) && $_SESSION['logged'] == true)
{
?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <title><?php echo $titre; ?></title>
    </head>
    <body>
        
        <!-- Design de la page -->
        <div id="page">     
            <div id="header">
            </div>
                <div id="sousmenuH" align="center">
                <!-- Menu Horizontal -->
                    <div id="menu_H">  
                        <?php
                        // On appelle le menu horizontal
                        include('menu_h.php');
                        ?>
                    </div>
            
                    <!-- Menu Vertical Gauche -->
                    <div id="menu_VG">
                        <?php
                        // On appelle le menu de gauche
                        include('menu_g.php');
                        ?>
                    </div>
            
                        <!-- Menu Vertical Droite -->
                        <div id="menu_VD">
                            <?php
                            // On appelle le menu de droite
                            include('menu_d.php');
                            ?>
                        </div>
            
            <!-- Nous appelons le contenu central de la page -->        
            <div id="content">
<?php
} // Fin de la fonction haut
?>

<?php
function bas() // Déclaration de la fonction BAS
{
?>
            </div>
            <!-- Pied de page -->
            <div id="footer" align="center">
                <?php
                // On appelle le pied de page
                include('footer.php');
                ?>
            </div>
        </div>
</div>
    </body>
    </html>
<?php
}
else
{
   echo 'Erreur : vous devez être connecté pour accéder à cette page !';
}
?>
j'obtient cette erreur
Parse error: parse error, unexpected T_ELSE in D:\wamp\www\Dcp\Administration\source.php on line 72
j'ai donc compté les { et les } mails il ne veut pas prendre le else.

donc je me demande si quand je ferme ma fonction haut il ne me ferme pas le if au lieu de la fonction.

:roll: :roll: :roll: :roll:

Merci cordialement