Problème avec un include

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème avec un include

par Gomme » 23 déc. 2007, 20:58

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

par dunbar » 23 déc. 2007, 19:14

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

par Ryle » 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(); 
?>

par dunbar » 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>

par Gomme » 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

par Ryle » 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>

par Gomme » 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

par dunbar » 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();
?>

Problème avec un include

par Gomme » 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