Pages :
Bonjour

Une fois de plus sur ce forum l'un de mes soucis consiste à bien expliquer le soucis en question. Très cértainement une broutille mais ca va faire 3 heures que je m'arrache les cheveux.

Alors :
A la racine : index.php, couverture04.php,... parmis d'autres fichiers dont le dossier avec les CSS. A la racine toujours, un dossier "machinchose" dans lequel il ya un index.php

Partie code de l'index.php à la racine :
<div id="Magazine"><?php require "couverture04.php"; ?></div>


Code de couverture04.php :
<div id="Couverture"><img src="images/couvertures/couverture04.jpg" alt="descriptif de l'image" width="268" height="377" /></div>


Et pour finir, la partie du code de l'index.php situé dans le dossier "machinchose", ce code pointe vers exactement le même fichier que le lien dans index.php à la racine. Autrement dit :
<div id="Magazine"><?php require "../couverture04.php"; ?></div>


L'image situé dans le fichier couverture04.php s'affiche quand je suis dans l'index de la racine, mais j'ai une image brisé quand je lis l'index du dossier "machinchose" mais le texte alternatif lui est bien présent.

J'y comprends rien !

Pourquoi un même fichier lu depuis 2 endroits différents ne donne pas le même résultat. Remarquez que dans le lien de l'index.php du dossier "machinchose" j'ai mis un (comme pour d'autres éléments qui eux se voient bien) l'indicatif "../" pour remonter au niveau parent.

Voila j'espère que c'est pas trop confus.

Merci
Modifié par milsou2 (11 May 2007 - 20:38)
Le required ou include en php fait un copier coller de la page que tu importes sur ta page d'orgine.

Au final, ton code php te génére une page située sur "machinchose/index.php", tous les appels à des images se font à partir de cette page et non à partir de la page que tu as inclue.

Pour que ton image marche à partir de la page "machinchose/index.php", il faudrait que son adresse soit "../images ..."

Une idée de solution, dans tes fichiers pho de base (ceux à partir desquels tu inclus le fichier "couverture04.php"), crée une variable "$chemin" à qui tu donnes une valuer différente selon la page sur laquelle tu es.

Plus clairement :

Sur index.php

$chemin="";


Sur machinchose/index.php

$chemin="../";


Et ensuite sur courverture04.php

<img src="<? echo $chemin; ?>images/ ..." alt="...">
Merci
sur l'index de la racine j'ai remplacé donc le code par :
<div id="Magazine"><?php $chemin="couverture04.php"; ?></div>


Au test... je n'ai rien... pas d'image.

Dans le fichier contenant l'image :
<div id="Couverture">
<img src="<? echo $chemin; ?> images/couvertures/couverture04.jpg" alt="alttexte">
</div>


Et la pas d'image non plus... lien brisé
La variable chemin est en plus du include pas à la place... En gros elle te sert à savoir où tu es au moment d'insérer l'image.

Quelque chose qu'il faut bien comprendre ici :

Le include se fait côté serveur, c'est à dire avant d'envoyer au navigateur de ton client le code html.

L'appel de l'image se fait côté client : quand ton serveur interprète ton code php, pour lui, le img n'est qu'une chaine de caractère comme une autre, c'est le navigateur de ton client (qui a reçu le code généré par ton serveur) qui analyse que c'est une image et qui va la chercher à partir du chemin spécifié dans src.
Ok super tout marche bien sauf depuis l'index de "machinchose" dont voici le code que j'ai "mixé" :

<div id="Magazine"><?php require "couverture04.php"; $chemin="../couverture04.php"; ?></div>


Et la il me sort un message d'erreur dans le div :
Warning: main(couverture04.php) [function.main]: failed to open stream: No such file or directory in /Library/WebServer/Documents/project/machinchose/index.php on line 31
Il faut faire comme ca :

pour machinchose/index.php

<div id="Magazine">
$chemin="../"; /* La variable chemin te sert à définir le chemin de retour à la racine */
<?php require $chemin + "couverture04.php";  ?></div>


pour index.php


<div id="Magazine">
$chemin="";
<?php require $chemin + "couverture04.php";  ?></div>


pour couverture04.php

<div id="Couverture">

<img src="<? echo $chemin; ?> images/couvertures/couverture04.jpg" alt="alttexte">

</div>
Désolé ca ne fonctionne pas voila le message d'erreur ;

Warning: main(0) [function.main]: failed to open stream: No such file or directory in /Library/WebServer/Documents/project/machinchose/index.php on line 33

Du reste écrire $chemin="../" juste après l'entrée de la balise <div id=Magazine> est considéré comme du texte. Peut-être faut-il le mettre dans des <?php ???
<?php require $chemin + "couverture04.php"; ?></div

+? n'est ce pas du js ça essai avec . pour concaténer
a écrit :
+? n'est ce pas du js ça essai avec . pour concaténer


En PHP, . ou + permettent la concaténation. Smiley cligne
appel aux modo : Ce sujet ne serait il pas plus à sa place dans le salon consacré aux langages serveurs ?
En éffet, voila ce que j'ai écrit dans l'index du dossier "machinchose" remplacement du + par le . :


 <div id="Magazine">
  	<?php 
		$chemin="../";
		require $chemin."couverture04.php"; 
	?>
  </div>


la je n'ai plus le message d'erreur...mais toujours un lien brisé... pas d'image.

Alors que depuis l'index de la racine tout marche bien.

Je n'y comprends rien Smiley fache
Ouf... ca y est... juste un espace en trop dans l'adresse du fichier converture04.php

Merci à tous et bonjour chez vous.

Smiley lol
oh bonjour chez vous n°2 ( faut toujours être poli avec le n°2 , même si moi je ne suis pas un numéro!!! )

mais lol finalement au départ tu écrivais

<div id="Magazine"><?php require "../couverture04.php"; ?></div>

et finalement

<div id="Magazine">
<?php
$chemin="../";
require $chemin."couverture04.php";
?>
</div>

c'était pareil. c'est cet espace qui était le noeud du problème
Modifié par CPascal (11 May 2007 - 17:33)
a écrit :

c'était pareil. c'est cet espace qui était le noeud du problème

Non, le noeud du problème venait de l'appel à l'image coté client depuis des répertoire différents.

L'utilisation de la variable chemin n'est pas nécessaire pour le require, mais comme on s'en sert pour l'image, autant s'en servir quand on inclut des pages de la racine : comme ca si on change de répertoire, on ne change qu'une variable !
Pages :