Pb avec include

twinsen60 Messages postés 69 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 21 janvier 2012 - 12 mai 2007 à 17:11
twinsen60 Messages postés 69 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 21 janvier 2012 - 15 mai 2007 à 14:48
Bonjour

Voilà, j'ai un gros probmème avec ma News en PHP.
D'abord, mon site, se compose d'un fichier index.php, avec dedans, un <?php include 'head.php'; ?>  (qui me charge ma partie haute et mon menu)

J'ai une news dans
www.toto.com/tiker.php qui afficher mes news a partir d'un fichier
www.toto.com/news.txt aussi tout les deux dans la racine du site.
donc, dans mon head.php j'ai

<?php include "ticker.php"; ?>

Donc, là, ma page index fonctionne très bien, et m'affiche bien mon texte issu du news.txt.
Sauf que ...j'ai d'autres pages, dans différents dossiers:
www.toto.com/page1/voitures.php

www.toto.com/page2/maison.php etc ...etc

où j'ai dans voitures.php :

<?php include '../head.php'; ?>  (avec le nombres de .... et de / suivants l'endrois)

Si je retire de mon head.php, include ticker.php, celà fonctionne bien, mais j'ai pas de news (normal)
Mais si je laisse include ticker.php dans head.php, j'ai un message d'erreur :

Warning : file (news.txt) : failled to open stream : No such file directory in /usr/local/www/toto on line 25

Comment faire ? Car je cherche depuis pas mal de temps, mais je ne trouve rien.
J'espére avoir été limpide.

5 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
12 mai 2007 à 19:40
Salut,

Le nombre de ../ dépend du niveau de profondeur dans la hiérarchie des dossiers du script qui est appelé dans l'URI.

Ce que je fais, pour m'éviter des problèmes de calcul de nombre de ../, c'est que j'ai un fichier que j'inclus dans TOUTES mes pages et dans lequel je définis la racine de mon site d'après le système de fichiers (et pas selon l'arborescence de publication du site web).

$root = dirname(__FILE__) . '/';

Cet exemple est valable en considérant que le fichier inclus est à la racine du site. S'il se trouve dans un répertoire 'includes' par exemple, j'utilise ça :

$root = realpath(dirname(__FILE__) . '../') . '/';

A partir de là, j'utilise toujours la variable $root pour appeler mes fichiers.
Ainsi, ils ne sont pas appelés d'après un emplacement relatif, mais absolu depuis la racine du serveur. Je peux donc utiliser la même ligne quel que soit la profondeur dans les répertoires de la page que j'appelle.

include($root . 'news/news.txt');

Ca marchera à tous les coups, depuis une page située à la racine, ou depuis n'importe quel répertoire.
0
twinsen60 Messages postés 69 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 21 janvier 2012
12 mai 2007 à 19:50
En faites, le dossiers news n'est pas utile, c'était juste un test. Je peu le mettre aussi dans ma racine de mon site.
Faut-il mettre les fichiers ticker.php et news.txt a la racine ou dans un dossier ?

Mais sinon, quel serai le code a appliquer pour mes pages ?

Merci d'avance, car j'ai pas très bien compris
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
13 mai 2007 à 14:24
Salut,

Je ne peux pas te donner LE code qui tue que TU dois mettre dans TES pages.
Je ne peux que t'expliquer, te donner des exemples et t'orienter. Pour le reste, c'est un peu à toi de te prendre par la main...

Admettons que le fichier news.php que tu veux ouvrir se trouve dans le répertoire /news/ (lequel répertoire se trouve donc à la racine de ton SITE).
Amettons que tu aies un fichier start.inc.php dans / (à la racine de ton SITE)

Ce fichier start.inc.php pourrait se présenter comme ceci :

<?php
$root = realpath(dirname(__FILE__) . '/../') . '/';
?>

Dans ce fichier, tu peux également inclure des fichiers de fonctions, instancier des classes, définir des constantes, etc. Tu l'appelleras TOUJOURS depuis tous tes scripts.
La variable $root contient alors le chemin absolu du répertoire de publication de ton site web, sur le serveur. Par exemple : /home/moncompte/html/

Il suffit ensuite d'utiliser cette variable pour appeler les fichiers dont tu connais le chemin ABSOLU (mais pas toujours le chemin relatif).

Par exemple, tu veux inclure le fichier /news/news.php depuis un script qui se trouve à la racine, mais peut-être aussi depuis un script qui se trouve dans u répertoire admin, ou que sais-je.
En utilisant cette variable $root, tu ne peux jamais te tromper et tu n'as pas besoin de compter combien de ../ tu dois ajouter suivant le script qui appelle.
La ligne pour inclure le fichier /news/news.php sera TOUJOURS celle-ci :
include($root . 'news/news.php');
et ce quel que soit l'emplacement du script qui fait l'inclusion.

Est-ce que c'est plus clair ?
0
twinsen60 Messages postés 69 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 21 janvier 2012
15 mai 2007 à 14:47
Mon problème ne viendrai pas de là (ce qui est en rouge). Celà fait parti de mon fichier Ticker.php :


<MARQUEE onmouseover= this.stop() onmouseout=this.start()
scrollAmount=1 direction=up width="180" height=130><?php $fp = file("news.htm");
for($i = 0; $i <sizeof($fp);$i++){
echo $fp[$i]."
";
} ?></MARQUEE>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
twinsen60 Messages postés 69 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 21 janvier 2012
15 mai 2007 à 14:48
Oups, je me suis trompé, c'est pas news.hmt mais news.txt

Celà reviens au même de toute manière je pense.
0
Rejoignez-nous