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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    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
    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
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    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
    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
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    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 éclairé 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
    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 habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    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

  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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include('contenu.php?rub=17');
    Ca ça marche ?

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    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

  10. #10
    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
    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.

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

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

    A bientôt

    oragoun

  12. #12
    Membre très actif
    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 : 43
    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
    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.

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