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 avec un "include"


Sujet :

Langage PHP

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Problème avec un "include"
    Bonjour,

    Je suis nouveau ici. J'ai fait une recherche avec le terme "include" sur le forum mais je n'ai pas trouvé de solution, je me permet donc de poser la question ici.

    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
    <?
    function lien_contenu($page)
    {
    	if($page=='mail')
    		{
    		include('form_mail_nkm.html');
    		}
    	elseif($page=='')
    		{
    		$rub='1';
    		include('contenu.php?rub=$rub');
    		}
    	elseif(preg_match('`^[0-9]{1,4}$`',$page))
    		{
    		$rub=$page;
    		include('contenu.php?rub=$rub');
    		}
    }
    ?>
    c'est une fonction que j'utilise pour inclure une page "contenu" dans une page générale avec des changement en fonction du lien cliqué dans la page générale.

    La réponse du serveur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Warning: main(contenu.php?rub=1): failed to open stream: No such file or directory in /home/.../site/page.php on line 18
     
    Warning: main(): Failed opening 'contenu.php?rub=1' for inclusion (include_path='.:/usr/share/php:/usr/share/php/PEAR') in /home/.../site/page.php on line 18
    Je ne vois pas mon erreur.

    Merci

    oragoun

  2. #2
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    J'imagine que si tu postes, c'est que tu as vérifié que les fichiers que tu essaies d'inclure sont dans les répertoires pointés dans les messages d'erreur ?

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    absolument, si j'enlève le "?rub=$rub" sur les tests 2 et 3 ça fonctionne sans problème, ça me renvoie la page "contenu" (mais sans variable, donc page vierge), et ça fonctionne parfaitement sur le lien "contact" de la page principale qui renvoie "mail" (si j'enlève les 2 autres tests bien sur).

    oragoun

  4. #4
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par oragoun
    absolument, si j'enlève le "?rub=$rub" sur les tests 2 et 3 ça fonctionne sans problème
    Est-ce que allow_url_fopen est à 1 dans ton php.ini ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Eusebius
    Est-ce que allow_url_fopen est à 1 dans ton php.ini ?
    Oui, je viens de faire un phpinfo chez mon hebergeur et "allow_url_fopen" est noté "on"

    oragoun

  6. #6
    Membre régulier Avatar de luggerhouse
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2006
    Messages : 62
    Points : 73
    Points
    73
    Par défaut
    L'appel a la fonction include n'est pas légale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include('contenu.php?rub=$rub');
    n'est pas légale. Tu essaye d'inclure ton fichier en lui faisant une query...

    Essaye plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location:contenu.php?rub=$rub');

  7. #7
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par luggerhouse
    L'appel a la fonction include n'est pas légale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include('contenu.php?rub=$rub');
    n'est pas légale. Tu essaye d'inclure ton fichier en lui faisant une query...

    Essaye plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('location:contenu.php?rub=$rub');
    Non. Dans ce cas-là, si la suite du script affiche des trucs, personne ne les verras. C'est pas le même principe qu'un include.

  8. #8
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    dans ton include la chaîne est entre guillements simples. Dans ce cas les variables PHP ne sont pas interprétées. Mets des guillemets doubles.

  9. #9
    Membre régulier Avatar de luggerhouse
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2006
    Messages : 62
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par Eusebius
    Non. Dans ce cas-là, si la suite du script affiche des trucs, personne ne les verras. C'est pas le même principe qu'un include.
    Je comprend... Mais encore... peux tu just pour le plaisir essayer comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $rub=1
    include('contenu.php');
    Et voir si le contenu de la variable est affichée ??

  10. #10
    Membre régulier Avatar de luggerhouse
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2006
    Messages : 62
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par Eusebius
    dans ton include la chaîne est entre guillements simples. Dans ce cas les variables PHP ne sont pas interprétées. Mets des guillemets doubles.
    Pourtant il semble que dans le message d'erreur la variable ait .t. interprétée...

    Failed opening 'contenu.php?rub=1'

  11. #11
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par luggerhouse
    Pourtant il semble que dans le message d'erreur la variable ait .t. interprétée...

    Failed opening 'contenu.php?rub=1'
    Heu... Je donne ma langue au chat ! Parce que ça devrait pas être le cas !

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Pour vous éviter de chercher dans tous les sens je vous donne les tests que j'ai fait :

    - initialiser la variable dans la fonction ($rub='17') ça fonctionne pas
    - saisir directement "contenu.php?rub=17" dans le navigateur, ça fonctionne
    - enlever le "rub=$rub" ça fonctionne pas
    - changer le "rub=" en "test=" dans la fonction et dans la page "contenu", ça fonctionne pas
    - remplacer le "include" par un "href" ça fonctionne :
    elseif($page=="")
    {$rub="1";
    echo "<a href=contenu.php?rub=$rub>test</a>";}
    donne un lien valide qui renvoit bien sur la page avec comme variable "1"

    oragoun

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Eusebius
    dans ton include la chaîne est entre guillements simples. Dans ce cas les variables PHP ne sont pas interprétées. Mets des guillemets doubles.
    Désolé, j'avais des guillemets double, mon copié-collé a été fait juste après un test de changement de guillemets. Et j'ai remis les doubles tout de suite après

    oragoun

  14. #14
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include('contenu.php?rub=17');
    Ca ça marche ?

  15. #15
    Membre régulier Avatar de luggerhouse
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2006
    Messages : 62
    Points : 73
    Points
    73
    Par défaut
    Bon voilà ce que tu devrais faire, c'est testé:

    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
     
    <?
    function lien_contenu($page)
    {
                 global $rub;
    	if($page=='mail')
    		{
    		include('form_mail_nkm.html');
    		}
    	elseif($page=='')
    		{
    		$rub='1';
    		include('contenu.php');
    		}
    	elseif(preg_match('`^[0-9]{1,4}$`',$page))
    		{
    		$rub=$page;
    		include('contenu.php');
    		}
    }
    ?>
    En mettant ta variable $rub globale, elle est maintenant accessible dans ta page contenu.php.

    Donne moi en des news

    LuggerHouse

  16. #16
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par luggerhouse
    Bon voilà ce que tu devrais faire, c'est testé:
    +1, pour moi c'est la solution la plus propre. Je ne suis pas fan des GET dans les includes, c'est pas super portable.

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Eusebius
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include('contenu.php?rub=17');
    Ca ça marche ?
    Non, apparement c'est le "?rub=nimportnawak" qui le dérange, le fait qu'il n'existe pas de fichier s'appelant exactement "contenu.php?rub=nimportnawak" qui empeche l'include.

    oragoun

  18. #18
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par oragoun
    Non, apparement c'est le "?rub=nimportnawak" qui le dérange, le fait qu'il n'existe pas de fichier s'appelant exactement "contenu.php?rub=nimportnawak" qui empeche l'include.

    oragoun
    T'as plus qu'à adopter la solution de luggerhouse.

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Merci à tous les deux, ça tourne nickel

    A bientôt

    oragoun

  20. #20
    Membre averti
    Avatar de if_zen
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 275
    Points : 317
    Points
    317
    Par défaut
    salut,

    pour info tu ne peux pas inclure de page avec des paramètre GET. La fonction include copie et colle le contenu de la page que tu passes en paramètre et le colle dans la page actuelle. C'est cette page actuelle qui contient tes données de $_GET et de $_POST.
    Plusieurs solutions s'offrent à toi :
    Soit tu utilises dans la page incluse les paramètres $_GET employés dans ta page appelante
    Soit tu déclares simplement un $mavar='truc'; avant ton include. Ton code étant alors copié collé, ça sera transparent au final, et tu pourras sans problème utiliser ta variable $vavar (en global si utilisé dans une fonction).
    Pour info, un include('toto.php?page=accueil'); va aller chercher le fichier qui se nomme toto.php?page=accueil, et non le fichier toto.php. D'ou ton erreur : failed open stream.
    J'espère avoir éclairé quelques lanternes

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème avec la fonction include chez ifrance.com
    Par othmane126 dans le forum Langage
    Réponses: 10
    Dernier message: 26/05/2007, 11h56
  2. [Système] problème avec la fonction include()
    Par daemon2a dans le forum Langage
    Réponses: 4
    Dernier message: 10/05/2007, 11h02
  3. Problème avec mon 2nd include
    Par Diabless6 dans le forum Langage
    Réponses: 10
    Dernier message: 16/03/2007, 13h10

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