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 :

if/else séparé en deux fichiers ?


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 117
    Points : 67
    Points
    67
    Par défaut if/else séparé en deux fichiers ?
    Bonjour,

    Ma question est simple même si apparemment je pense avoir trouver la réponse : es-ce possible de commencer un if/else dans un fichier "header.php" et de le finir dans un fichier "footer.php", d'inclure ça dans un "index.php" et que ça fonctionne ?

    Pour l'explication je suis sur un petit site perso et je fais mes page de la manière suivante : un fichier "header.inc.php" qui contient le code de ma page depuis <html> en passant par le menu ainsi que tout ce qui est fixe pour le haut de chaque page jusqu'à l'ouverture de ma div de contenu variable, et un fichier "footer.inc.php" qui contient le code de la fermeture de ma div de contenu variable jusqu'à </html>. Ces deux fichiers sont inclus dans un "index.php" qui contient les variables de paramétrage des pages, et mon contenu variable.

    Maintenant ce que je veux faire, c'est ouvrir une connexion BDD, vérifier si elle est correcte, si c'est le cas j'affiche le contenu variable, sinon j'affiche un message d'erreur, mais dans les deux cas je veux que la page s'affiche tout de même (logo, menu, etc.. et pas juste un message d'erreur).

    Cette manière de fonctionner m'oblige donc à ouvrir un if/else dans un fichier et le fermer dans un autre, et l'erreur que j'ai semble venir de là. Le code assemblé dans un même fichier aucun problème, mais séparé ça ne marche pas. Pour vous es-ce possible ou y-a-t-il un moyen de le faire fonctionner ainsi ?

    Pour info comme je n'ai pas le projet sur moi je fais mes essais sur des pages de test dont voici les codes :

    header.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
    <html>
    	<head>
    		<title>Test connexion BDD :: <?php echo $title; ?></title>
    	</head>
    	<body>
    		<?php
    			include("class.mysql.php");
    			include("config.php");
    			$mysql = new MySQL;
    			$mysql->open($host,$dbname,$user,$password);
    		?>
    		<div>
    			<?php
    				if(!$mysql->isConnected()){
    					echo $mysql->getConnectionErrorMessage();
    				}else{
    			?>
    footer.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    			<?php
    					$mysql->close();
    				}
    			?>
    		</div>
    		<div>
    			Mon footer
    		</div>
    	</body>
    </html>
    index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    	$title = "Test 1";
    	include("header.php");
    ?>
    	<div>Mon contenu</div>
    <?php
    	include("footer.php");
    ?>
    Merci d'avance pour vos réponse

    PS : ma solution actuelle serait de faire mon if/else directement dans le index.php mais cela m'oblige à faire un copier-coller de cette condition dans chacune de mes pages (ou à faire une page modèle) et en cas de changement de fonctionnement d'accès à la base de données (j'utilise un classe perso pour l'accès à MySQL car je vais héberger mes pages chez Free et après recherche PDO semblerai ne pas ou mal fonctionner chez eux) cela m'obligerait à parcourir tous les fichiers pour faire les modifications.

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Points : 704
    Points
    704
    Par défaut
    Bonjour,

    En php un bloc d'instruction peut commencer dans un fichier et se terminer dans un autre.
    En fait c'est comme si le serveur qui interprète le code ne voyait qu'un seul fichier, tous les fichiers étant mis bouts à bouts en fonction des inclusions.

    Cependant pour permettre une bonne lisibilité du code il faut éviter de faire des if, for, while, ... qui commencent dans un fichier et se termine dans un autre...

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 117
    Points : 67
    Points
    67
    Par défaut
    C'est ce que je pensais aussi qu'il n'y aurait pas d'importance à les séparés car au final il serait interprété comme un seul et même code. Mais là j'ai bien une erreur parce que mon if/else est séparé, plus précisément parce que mon else est ouvert dans un fichier et fermer dans un autre.

    Je viens de faire le test réunissant uniquement ce bloc d'instruction dans mon fichier index et là pas de soucis.

    De quoi celà pourrrait-il venir ?

  4. #4
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    En php un bloc d'instruction peut commencer dans un fichier et se terminer dans un autre.
    A bon ?

    De mémoire il me semble avoir lu l'inverse.
    D'ailleurs, ça sous entends qu'il serait possible aussi de créer le début d'une classe ou d'une fonction dans un fichier et la suite dans un autre.
    Ca me semble improbable.


    Par curiosité j'ai essayé (debut_if.php/fin_if.php), et ça me renvoie une erreur de syntaxe :
    Parse error: syntax error, unexpected $end in ...\debut_if.php on line 5
    Pour ma part, il faudrait initialiser au minimum une variable, et l'exploiter dans 2 conditions, dans les 2 fichiers.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // Fichier 1 (initialisation)
    $isConnected = $mysql->isConnected();
     
    if ($isConnected === TRUE) {
        ... etc ...
    }
     
    // Fichier 2
    if ($isConnected === TRUE) {
        ... etc ...
    }
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Points : 704
    Points
    704
    Par défaut
    En php un bloc d'instruction peut commencer dans un fichier et se terminer dans un autre.
    Citation Envoyé par RunCodePhp Voir le message
    Salut

    A bon ?

    De mémoire il me semble avoir lu l'inverse.
    D'ailleurs, ça sous entends qu'il serait possible aussi de créer le début d'une classe ou d'une fonction dans un fichier et la suite dans un autre.
    Ca me semble improbable.
    ... Mea culpa... Je sais pas ce que j'avais bu ce jour là pour dire une telle connerie !
    Je crois que j'ai mélangé ce que je voulais dire...
    Voici ce qui est possible de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (/* ma condition */) {
       include 'monfichier.php';
    } else {
       include 'monautrefichier.php';
    }
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function myFunction () {
       include 'encoreunfichier.php';
    }
    Mais effectivement si un bloc de code peut être sur plusieurs fichiers, son ouverture '{' et sa cloture '}' doivent être sur le même fichier.

Discussions similaires

  1. Compiler deux fichiers séparés
    Par mimi403 dans le forum Bases de données
    Réponses: 0
    Dernier message: 17/02/2011, 19h34
  2. Concaténer deux fichiers Ligne/Ligne avec SH
    Par guiltouf dans le forum Linux
    Réponses: 7
    Dernier message: 22/05/2007, 14h35
  3. [langage] Comparaison de deux fichiers
    Par perlgirl dans le forum Langage
    Réponses: 4
    Dernier message: 04/05/2005, 16h05
  4. Réponses: 22
    Dernier message: 29/01/2005, 11h29
  5. Réponses: 5
    Dernier message: 09/01/2005, 19h54

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