probleme variables avec include()

zarbrok
Invité n'ayant pas de compte PHPfrance

05 janv. 2007, 18:39

bonjour à tous(tes)
je vous expose mon probleme :
j'ai une page (128.php) qui contient des variables .
Je fais un include d'une autre page ne se trouvant pas dans le meme répertoire(../categorie/gauche).
alors voila mon probleme :
si je met un chemin relatif (../categorie/gauche.php) il ne l'inclu pas
si je met un chemin absolue (http://.../categorie/gauche.php) la page est inclue mais elle les variables de la page(128.php) sont vides !!!
je travail sur un serveur dédié plesk en unix !
merci de votre aide

ViPHP
ViPHP | 1961 Messages

05 janv. 2007, 18:42

Bonjour,

Surement que ton chemin relatif n'est pas bon.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

zarbrok
Invité n'ayant pas de compte PHPfrance

05 janv. 2007, 18:43

et pourtant si il est bon !!
sinon est ce normal qu'en entrant le chemin absolue les variables ne sont pas récupérées ?

ViPHP
ViPHP | 1961 Messages

05 janv. 2007, 18:46

Montre tes deux fichiers.
On pourra voir plus clair. Car aucune des deux choses sont normales.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

zarbrok
Invité n'ayant pas de compte PHPfrance

05 janv. 2007, 18:57



//le code qui génère la page de la page 128.PHP 
$videotext = "
 \$t = \"$t\" ;
\$modele= \"$modele\";
\$img_cat=\"$img_cat\";
\$haut_cat= \"$haut_cat\";
\$largeur_cat= \"$largeur_cat\";
\$url_bouton=\"$url_bouton\";
\$hauteur_bouton= \"$hauteur_bouton\";
\$largeur_bouton= \"$largeur_bouton\";
\$telecharger= \"$telecharger\";
\$macat = \"../\".\"$cat\"; // contient : ../categorie/gauche.php
\$page = \"$page\";
\$nb_cat = \"$nb_cat\";
\$classement= \"$classement\";
\$nb_resultat= \"$nb_resultat\";
include \"http://www.monsite.com/include/dynamisme.php\";
\$separation = \"_\";
\$site = \"http://www.monsite.com\";
include (\"../include/configuration.php\");
include \"../include/fonctions.php\";
include \"../include/conf_mb.php\";
include (\"../t/meta_$t.php\");
echo \"<link href=\"../t/$t.css\" rel=\"stylesheet\" type=\"text/css\">\"

		
include (\"\$macat\");
include (\"http://www.monsite.com/include/pied.php\");
";
et la page gauche.php
<table border="0" align="left">
  <tr>
    <td>&nbsp;</td>
    <td><div align="left"><?php include ("$page"); ?></div></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td valign="top"><?php include( "http://www.monsite.com/categorie.php"); ?></td>
    <td align="left" valign="top"><?php
include ("../include/configuration.php");

$nb_avant = 4; // nombre de page avant la page courante 
$nb_apres = 6; // nombre de page après la page courante 
$premiere = 1; // aficher le lien "première page" (1 ou 0) 
$derniere = 0; // afficher le lien "dernière page" (1 ou 0) 
$courant = empty($_GET['page']) ? 1 : $_GET['page']; // page 
$start = ($courant - 1) * $nb_resultat; // start (requete mysql) 
$cont_filmx = mysql_query("SELECT count(id) FROM videos WHERE `id_emission` LIKE '%$cat%' AND valide='1' ORDER BY id ASC");
$ret_film_x = mysql_fetch_array($cont_filmx); 
$nb_results = $ret_film_x[0];
$nb_pages = ceil($nb_results / $nb_resultat); 
// nombre de pages avant 
$avant = $courant > ($nb_avant + 1) ? $nb_avant : $courant - 1; 
// nombre de pages après 
$apres = $courant <= $nb_pages - $nb_apres ? $nb_apres : $nb_pages - $courant; ?>
<?php 
$sql = "SELECT id, titre_fr, des_fr, poids, duree, img FROM videos WHERE `id_emission` LIKE '%$cat%' AND valide='1' ORDER BY $classement DESC LIMIT $start, $nb_resultat";
$result = mysql_query($sql);
echo "cat:".$cat ;
echo "classement:".$classement ;
echo "result:".$nb_resultat ;

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$id= $row["id"]; ?> 
<?php include "$adress_mod$modele$fin"; ?><?php 
}

mysql_free_result($result);

?>
</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><div align="left"><?php include ("$page"); ?></div></td>
    <td>&nbsp;</td>
  </tr>
</table>

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

05 janv. 2007, 18:58

Attention, je te conseille de relire le manuel concernant include (qui n'est d'ailleurs pas une fonction). Pour te faire une idée simple, c'est comme si tu remplaçais ton "include" par du code PHP. Ce ne sont pas des frames, ce n'est pas une méthode magique qui assemble des bouts de pages entre eux. C'est comme si tu tapais le contenu du fichier include directement dans le fichier en cours.

Si tu utilise une URL extérieure ("http://...") alors c'est comme si tu faisais Affichage > Voir le source et que tu copiais/collais le HTML dans ton script PHP. En clair, ce n'est pas du PHP, tu ne transmets aucune variables de l'un vers l'autre. Donc, jamais jamais jamais d'include sur une URL autre que locale.

ViPHP
ViPHP | 1961 Messages

05 janv. 2007, 19:03

Que dire après la réponse de Hubert ?
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

zarbrok
Invité n'ayant pas de compte PHPfrance

05 janv. 2007, 19:03

salut
merci pour ta remarque, mais je n'utilise aucune url exterieur à mon site
c d'ailleur un peu le sens de ma question, si le fait d'écrire une url en absolue et considéré comme une url exterieur ?
et je ne sais pas non plus pourquoi en indicant le chemin relatif de cet url, ça ne marche pas alors que les autres marchent tres bien

ViPHP
ViPHP | 1961 Messages

05 janv. 2007, 19:06

Re,
Si tu regardes ton premier code, la coloration syntaxique, elle te donne à penser quoi ???
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

zarbrok
Invité n'ayant pas de compte PHPfrance

05 janv. 2007, 19:12

je vous avez la variable qui contenait le code à générer pour créer 128.php
donc la je vous met le code de la page ainsi créer 128.php

Code : Tout sélectionner

<?php $t = "128"; $modele= "1"; $img_cat=""; $haut_cat= ""; $largeur_cat= ""; $url_bouton=""; $hauteur_bouton= ""; $largeur_bouton= ""; $telecharger= ""; $macat = "categorie/gauche.php"; $page = "page.php"; $nb_cat = "6"; $classement= "date_enr"; $nb_resultat= "5"; include "../include/dynamisme.php"; $separation = "_"; $site = "http://www.monsite.com"; include ("../include/configuration.php"); include "../include/fonctions.php"; include "../include/conf_mb.php"; ?> <?php include ("../t/meta_128.php");?> <link href="../t/128.css" rel="stylesheet" type="text/css"> <?php include ("../"."$macat");?> <?php include ("http://www.monsite.com/include/pied.php");?>

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

05 janv. 2007, 19:22

si le fait d'écrire une url en absolue et considéré comme une url exterieur ?
Ça n'est peut-être pas évident si tu débutes (PS: il y a un forum "Débuter en PHP", celui-ci est réservé aux problèmes propres à PHP5) mais tout se qui se trouve avant "://" est le protocole (sous-entendu, "de communication"). Le système de fichiers n'est pas réellement un protocole, mais pour des besoins pratiques on dit que c'est "file". Tout le reste est considéré comme extérieur, "http", "ftp", etc...

Voici quelques exemples d'URL:

Code : Tout sélectionner

// locales, relatives fichier.php ../fichier.php // locale, absolue /var/www/fichier.php (dans PHP) file:///var/www/fichier.php (dans PHP ou un navigateur... auquel cas tu accèdes aux fichiers locaux de l'utilisateur, ce qui est généralement interdit pour des raisons de sécurité) // extérieure, absolue http://www.example.com/fichier.php
Pour résumer, si l'URL commence par un protocole autre que "file" alors c'est extérieur.

zarbrok
Invité n'ayant pas de compte PHPfrance

05 janv. 2007, 19:30

merci pour ces explications ;)
mais que me conseilles tu d'utiliser ?
car si je tape include ("../categorie/gauche.php") qui est le bon chemin (je suis pas fou tout de meme) le include ne marche pas du tout

ViPHP
ViPHP | 1961 Messages

05 janv. 2007, 19:33

Ton code est contenu dans une variable, tu dois exécuter cette variable. Regarde du coté de eval().
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

zarbrok
Invité n'ayant pas de compte PHPfrance

05 janv. 2007, 19:40

je vois bien ce que tu essais de me dire, mais on m'a demandé de déplacer un site qui marche nikel d'un serveur vers un serveur dédié, et la ça ne marche plus...
le code etait tout à fait valide je ne comprends vraiment pas !

Mammouth du PHP | 505 Messages

05 janv. 2007, 20:45

un petit echo getcwd() te permettra d'etre sur que ton chemin relatif est correcte par apport a ton rep courant.
Ensuite, un is_readable($filename)) t'assurera que le fichier est bien lisible pour le serveur http qui fait tourner ton php.