Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/12/2010, 22h59   #1
Candidat au titre de Membre du Club
 
Inscription : juillet 2009
Messages : 193
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juillet 2009
Messages : 193
Points : 12
Points : 12
Par défaut Impossible de faire un include

Bonsoir all,
je teste en vain de faire un include ou d'ajouter directement mon code dans un dossier et ça n'affiche rien de rien donc j'ai testé de mettre directement le code mais la encore y a un souci quand je mais le code toute la partie du bas s'efface.

donc je vous explique en plus claire :p

a la racine de mon site (vote.php) et les fichiers qui va avec (ip.txt, data.txt, admin.php et config.php)

a la racine de mon site j'ai créer index.php qui include droit.php et gauche.php qui sont les colonnes droite et gauche de mon site.

Ce qui nous intéresse c'est droit.php car il contient soit mon code soit mon include, avec le code ou le include tout fonctionne correctement si les fichiers se trouvent a la racine de mon site.

maintenant quand je l'include dans le dossier partenaire/index.php ou dans jeux/index.php la rien ne s'affiche et aucune erreur a part ma colonne qui s'efface et laisse juste la partie du haut.

j'ai testé plusieurs façons mais il veut rien savoir

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
Code 1
<?
include ("http://www.lien.org/vote.php");
?>
 
Code 2
<?
$a = file_get_contents("http://www.lien.org/vote.php");
echo ($a);
?>
 
Code 3
<?
include (vote.php);
?>
 
Code 4
<?
require_once($_SERVER['DOCUMENT_ROOT'].'vote.php');
?>
par contre avec le code dans dessous mon sondage s'affiche mais on ne peut pas voter ni voir les résultats

Code :
1
2
3
4
<?
$a = file_get_contents("http://www.lien.org/vote.php");
echo ($a);
?>

Cordialement,
Stéphane
snip74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 09h59   #2
Membre éclairé
 
Inscription : août 2007
Messages : 360
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 360
Points : 334
Points : 334
Bonjour,

Tu n'as pas bien compris comment fonctionnait l'include ou le require.

Quand tu es à la racine de ton site, les deux fichiers sont dans le même répertoire. Donc aucun problème.

Par contre, lorsque tu es dans un répertoire différent, il faut que tu remontes ou descendes d'un répertoire ("../vote.php")...

J'espère t'avoir aidé...

Cdt,

Mathieu
mathieu44800 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 10h48   #3
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 89
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 89
Points : 36
Points : 36
Code php :
include('vote.php');
doit normalement fonctionner
cedrick21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 11h02   #4
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
Include et file_get_contents sont deux choses extrêmement différentes à ne pas confondre.

Le include sert à organiser ton code. En pratique ce qui va se passer c'est que include('monfichier.php'); va se faire remplacer, directement dans ton code, par le contenu de monfichier.php (d'ailleurs, tu devrais plutôt utiliser include_once, qui s'assure que même si tu fais l'include plusieurs fois, il ne sera pris en compte qu'une seule fois).
Le include se fait "avant" que ton code php soit exécuté. De fait, le contenu du fichier est exécuté de la même manière que si tu faisais un copier/coller du contenu du fichier inclu, directement à l'endroit de ton inclusion.

file_get_contents par contre sert pendant l'exécution à aller lire un fichier pour réaliser un traitement dessus. Avec ton echo par exemple, le traitement réalisé est un affichage, pas une exécution.

Typiquement, si tu as un index.php qui fait appel à d'autres fichiers php, c'est include_once qu'il faut utiliser. Si tu veux lire un fichier (pour récupérer le résultat de tes votes par exemple ?), tu utilise file_get_contents.

Ensuite, mettre des url en chemin, ce n'est pas terrible, avec certaines fonctions, sur un malentendu et parce que php est sympa, il n'est pas impossible que ca marche (genre ton file_get_content), n'empêche que c'est crade pour un tas de bonne raison (si tu le demandes gentiment, je veux bien t'expliquer, sinon, crois-moi sur parole ^^). Non, ce qu'il faut faire, c'est comme l'a suggéré mathieu44800, utiliser les chemins relatifs.
Pour remonter d'un répertoire par rapport à ton répertoire actuel : ../nomfichier
pour aller dans un dossier : nomdudossier/nomfichier
Et si tu es dans le même répertoire : nomdufichier.

Donc tu devrais avoir des includes qui ont une tête comme ca :
Code :
1
2
include_once('vote.php'); 
include_once('../lerepertoiredacote/fichier.php');
Dernier point, utilise les balises <?php ?> et pas <? ?>, sinon, au moment de la mise en ligne de ton site chez un hébergeur professionnel, il y a une chance sur deux pour qu'il te jette, le <? ?> n'est pas "à la norme".
__________________
Rakken

Oneira, un monde imaginaire d'Heroic Fantasy.

Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/
Rakken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 15h13   #5
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 015
Points : 5 015
A noter que, si ta configuration PHP t'y autorise (désactivé par défaut il me semble), tu peux faire des include d'URLs. Cependant, c'est généralement considéré comme une faille de sécurité car tu ouvre volontairement un fenêtre vers l'intérieur de ton application, si tu ne contrôles pas ce qui provient de cette url, tu peux aller au devant de bien moches surprises.

Petit rappel, la syntaxe correcte pour la directive include est :
Code :
1
2
 
include "filename.php"; // .php3 .phtml .inc sont généralement tolérés.
Voir http://php.net/manual/en/function.include.php

A noter: include raise un E_WARNING si le fichier est introuvable, require quand à lui emet un E_FATAL et balance l'appli dans les orties.
A noter: include_once et require_once évitent que les fichiers soient chargés plus d'une fois, très pratique pour les libraires ou autres...
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 13h27   #6
Candidat au titre de Membre du Club
 
Inscription : juillet 2009
Messages : 193
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juillet 2009
Messages : 193
Points : 12
Points : 12
Bonjour a tous,
merci de votre aide et mes excuse de ne pas avoir répondu plus tot car des souci de boite mail ^^.

donc j'ai suivie un peut tout vos conseil mais y a vraiment rien a faire sois rien ne s'affiche sois les menus qui se trouve en dessous du sondage disparer j'ai pourtant testé tout sa :

Code :
1
2
3
4
5
6
7
8
9
<?php include_once('../vote.php'); ?>
<?php include_once('vote.php'); ?>
<?php include "vote.php"; ?>
<?php include "vote.php"; ?>
<?php include "../vote.php"; ?>
<?php include('vote.php'); ?>
<?php include('../vote.php'); ?>
<?php include('http://www.tchat-fusion.org/vote.php'); ?>
etc...
Cordialement stéphane
snip74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 15h06   #7
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
Je pense que le mieux pour toi est de commencer par faire un exercice à part pour comprendre comment ca marche.

Dans un nouveau répertoire, crée ces trois fichiers :


inc1.php
Code :
1
2
3
4
 
<?php
   echo ('Dans inc1.php <br />');
?>
inc2.php
Code :
1
2
3
4
 
<?php
   echo ('Dans inc2.php <br />');
?>
index.php
Code :
1
2
3
4
5
6
7
 
<?php
   include_once('inc1.php');
   echo ('La, on est dans le index.php.<br />');
   include_once('inc2.php');
   include_once('inc2.php');
?>
Là, tu as un code minimal. Que fait-il ?
A partir de là, tu peux jouer un peu, du genre retirer le include_once('inc2.php'); de l'index et le mettre dans inc1.php
Tu peux aussi t'amuser à créer des répertoires, déplacer le fichier inc1.php et trouver comment faire l'include pour que ca continue de se passer correctement.

C'est pas grand chose, limite ca peut sembler idiot, mais une fois que tu auras bien compris ca, revient sur ton problème actuel, avec un peu de bol, soit ca se débloquera tout seul, soit tu pourras éliminer ce problème là et cerner, pourquoi pas, d'autres soucis.

ps : pour les notations.
include_once('mon_fichier.php'); est équivalent à include_once 'mon_fichier.php'; par contre, include_once(mon_fichier.php); (sans quote ou guillemets) même s'il fonctionne probablement (php est gentil) si tu n'as pas activé les warning, est une notation fausse.
__________________
Rakken

Oneira, un monde imaginaire d'Heroic Fantasy.

Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/
Rakken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 18h45   #8
Candidat au titre de Membre du Club
 
Inscription : juillet 2009
Messages : 193
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juillet 2009
Messages : 193
Points : 12
Points : 12
Bonsoir Rakken,
je fait suite a se message :
Citation:
Rakken
Là, tu as un code minimal. Que fait-il ?
j'ai mis les 3 fichiers dans un dossier nomé test ici lein

quand je vais sur la page lien y marquer sa :

Dans inc1.php
La, on est dans le index.php.
Dans inc2.php

donc vue que les 3 fichiers son dans le même dossier sa fonctionne.

par contre quand je mais se code dans le dossier (partenaire/links.php) lien

Code :
1
2
3
4
5
<?php
   include_once('vote.php');
   echo ('La, on est dans le index.php.<br />');
   include_once('../vote.php');
?>
sa m'affiche le echo (La, on est dans le index.php.)
mais tout mes menu qui se trouve en dessous il disparré

Cordialement Stéphane
snip74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 09h27   #9
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 699
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 699
Points : 3 269
Points : 3 269
Salut

Citation:
maintenant quand je l'include dans le dossier partenaire/index.php ou dans jeux/index.php la rien ne s'affiche et aucune erreur a part ma colonne qui s'efface et laisse juste la partie du haut.
Je ne suis pas certain d'avoir bien compris le problème, mais à mon avis ton problème serait lié à l'arborescence (complexe) que tu as adopté.

Au lieu de mettre les pages dans des répertoires comme :
www/index.php
www/partenaire/index.php
www/jeux/index.php

Il serait mieux à mon sens de procéder ainsi, de tout mettre à la racine (www) :
www/index.php
www/partenaire.php
www/jeux.php
www/vote.php
... etc ...

Ensuite, de mettre les contenu dans les répertoire : (pure exemple)
www/partenaire/link.php
www/jeux/link.php
www/css/style.css
www/js/style.css
www/images/logo.jpg
... etc ...

Au final, on effectue les inclusion à partir de la racine, donc plus de souci de chemin :
Pour partenaire.php :
Code :
1
2
3
 
// On inclus les liens
include('partenaire/link.php');
Pour jeux.php :
Code :
1
2
3
 
// On inclus les liens
include('jeux/link.php');
Pour vote.php :
Code :
1
2
3
4
 
// On inclus les liens
include('partenaire/link.php');
include('jeux/link.php');
De plus, et donc le fait que les pages soient à la racine, c'est théoriquement plus simple de gérer les truc comme Css, Javascript, les images, etc ...
En gros : tout est à la racine, et on recherche tous les contenus (php, css, js, image, etc ...) dans les répertoires structurés, classés comme il faut.
Et surtout, on évite les includes dans un include, et encore dans un include, etc ... on s'y perd à la longue.
__________________
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]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 09h51   #10
Membre éprouvé
 
Avatar de defcon_suny
 
Développeur informatique
Inscription : décembre 2006
Messages : 436
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2006
Messages : 436
Points : 486
Points : 486
Salut,

À mon sens plus propre...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
<?php
// Affichage des erreurs : E_ALL en développement | 0 en prodution
error_reporting(E_ALL);
 
// Définition d'une constante
define ('ROOTPATH', $_SERVER['DOCUMENT_ROOT']);
 
include_once(ROOTPATH.'/test/1/index.php'); // inclusion du fichier /test/1/index.php 
echo '<hr/>index.php<hr/>';
include_once(ROOTPATH.'/test/2/index.php'); // inclusion du fichier /test/2/index.php
?>
Et ce code est valable pour tous les fichiers de l'arborescence.

++
defcon_suny est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h17.


 
 
 
 
Partenaires

Hébergement Web