Problème avec un include

Petit nouveau ! | 4 Messages

23 déc. 2007, 17:27

Bonjour,

Je suis débutant en PHP et j'ai un problème avec un include. Le contenu de mon include ne s'affiche pas et je n'ai aucune idée pourquoi. Pouvez-vous m'aider svp.

Voici mon code qui a le include :

Code : Tout sélectionner

<?php require 'configuration.php'; $content = ' <div id="cont"> avant <?php include "templates/myphoto_fr.php"; ?> apres </div> '; ob_start(); include 'templates/footer.php'; ob_end_flush(); ?>
Voici le contenu du include myphoto_fr.php :

Code : Tout sélectionner

<?php print "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"; print "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"fr\" lang=\"fr\">"; print "<head>"; print "<meta http-equiv=\"Content-Type\" content=\"text/html\" /> "; print "</head>"; print "<BODY>"; print "test - ceci est un test"; print "</BODY>\n</HTML>\n"; ?>
J'ai mis une trace, les mots "avant" et "après" s'affichent, mais pas le contenu du include myphoto_fr.php

Merci pour votre aide

ViPHP
ViPHP | 2291 Messages

23 déc. 2007, 17:41

Salut

Et comme ceci :?:
<?php
require 'configuration.php';

$content = '

    <div id="cont">';
    echo'avant';
    include "templates/myphoto_fr.php";
    echo'apres';
    '</div>';



ob_start();
include 'templates/footer.php';
ob_end_flush();
?>

Petit nouveau ! | 4 Messages

23 déc. 2007, 17:50

Bonjour Dunbar,

Merci d'avoir pris le temps de me répondre. J'ai remplacé le code par celui que tu m'a fourni.
Il y a du progrès...

Le contenu s'affiche, mais pas au bon endroit. Il ne s'affiche pas à l'intérieur de la balise <div id="cont">. Comment faire pour le faire afficher au bon endroit.

Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 déc. 2007, 18:04

Il faut bien comprendre qu'un include exécute le code qui a été inclu au moment où il est appellé. Il ne s'agit pas d'une fonction qui retourne une chaine que l'on peut stocker dans une variable.

En revanche, tu peux dans ton include définir une variable contenant ton code, que tu pourras ensuite utiliser dans ton script après avoir fait appel au include. Tu peux également ouvrir un fichier et lire son contenu avec les fonction du type fopen().

A toi de voir à partir de là comment et à quel endroit le code doit être exécuté :)

A noter qu'il ne faudrait n'utiliser le code php que lorsque tu en as besoin et que ton myphoto_fr.php ferait exactement la même chose, et serait plus lisible et plus rapide à exécuter s'il n'était pas surchargé inutilement de print :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html" />
</head>

<BODY>

<?php // mais rien ne t'empêche d'en mettre ponctuellement, là où tu en as vraiment besoin
  $var = 'test';
  echo $var . ' - ceci est un ' . $var;
?>

</BODY>
</HTML>
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 4 Messages

23 déc. 2007, 18:08

Merci pour la suggestion... J'ai essayé et cela ne fonctionne toujours pas.
Voici maintenant mon code :

Code : Tout sélectionner

<?php require 'configuration.php'; require 'templates/contact_fr.php'; $content = 'include "templates/myphoto_fr.php" '; ob_start(); include 'templates/campinggregoire.php'; ob_end_flush(); ?>
Et le le contenu de myphoto_fr.php :

Code : Tout sélectionner

<?php print "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"; print "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"fr\" lang=\"fr\">"; print "<head>"; print "<meta http-equiv=\"Content-Type\" content=\"text/html\" /> "; print "</head>"; print "<BODY>"; print "<div id=\"cont\">"; print "test - ceci est un test"; print "</div>"; print "</BODY>\n</HTML>\n"; ?>
Le contenu de myphoto_fr.php, ne s'affiche pas

ViPHP
ViPHP | 2291 Messages

23 déc. 2007, 18:23

Dans la même direction que RYLE (enfin je pense :oops: )
<?php
require 'configuration.php';
include 'templates/myphoto_fr.php';

$content = 'apres';

echo'<div id="cont">'.$var.' '.$content.'</div>';

ob_start();
include 'templates/footer.php';
ob_end_flush();
?>
myphoto_fr.php
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"fr\" lang=\"fr\">
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html\" />
</head>

<BODY>
<?php
$var ='test - ceci est un test';
?>
</BODY>
</HTML>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 déc. 2007, 19:11

Euh.... j'ai pas du être bien clair ... :?
Il faut bien comprendre qu'un include exécute le code qui a été inclu au moment où il est appellé.
Il ne s'agit pas d'une fonction qui retourne une chaine que l'on peut stocker dans une variable.
Je ne sais pas à quoi sert ta variable $content, si elle est utilisée ou pas par la suite, mais tu ne pourras jamais y stocker le résultat d'un include. Oublie que c'est un fichier externe et imagine que le code qu'il contient est à l'endroit exacte où tu fais appel à include(), car ce n'est ni plus ni moins que ce qui se passe :)

Voici une possibilité :
<?php 
  require 'configuration.php';
  ob_start(); 
?>

<div id="cont">
  avant
  <?php include "templates/myphoto_fr.php"; ?>
  apres
</div>

<?php
  include 'templates/footer.php'; 
  ob_end_flush(); 
?>
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 2291 Messages

23 déc. 2007, 19:14

Euh.... j'ai pas du être bien clair ... :?
Ok je retourne à mes livres alors :oops:

Petit nouveau ! | 4 Messages

23 déc. 2007, 20:58

Merci, grâce à votre aide, j'ai résolu mon problème