Page 1 sur 1

Parametres dans un include ??

Posté : 04 juin 2007, 10:59
par risa83
Bonjour,

Je souhaiterais appeler des paramètres avec un include mais cela ne fonctionne pas ..
include('example.php?id=12');
Si j'appelle uniquement 'example.php' je n'ai aucun souci mais il est impossible de passer des paramètres avec un include car il recherche un fichier inexistant : 'example.php?id=12'
Existe-t-il un moyen de remédier à ce problème ??

Merci

Posté : 04 juin 2007, 11:04
par titerm
On ne peux pas utiliser ce type de syntaxe pour un include.

Imagine que quad tu effectues un include, c'est comme si tu faisais un copier coller du code de l'include dans le script qui l'effectue.

Si tu veux rendre dispo un parametre pour le code que tu inclues.

il suffit de le définire avant l'include.
$id=12;
includee('example.php');
// Accessoirement, tu vire la variable, sinon elle reste dispo jusqu'a la fin du script.
unset($id);

Posté : 04 juin 2007, 11:16
par risa83
Si tu veux rendre dispo un parametre pour le code que tu inclues.

il suffit de le définire avant l'include.
Malheureusement de cette manière il n'execute que example.php et ne prend pas en compte le paramètre précédemment défini :(

Posté : 04 juin 2007, 11:52
par titerm
Tu te trompes certainement qq part.

Si tu est dans le script principale hors de toute fonction,

cat main.php
<?php
$id = 12; // La variable $id est global et disponible partout en global, y compris dans les includes
include('toto.php');
cat toto.php
<?php
var_dump($id);  // Fonctionne et voie bien $id
function toto () {
  var_dump($id);  // ne voie pas $id car on est dans une fonction, si tu veux voir $id ici 2 solutions
  var_dump($GLOBALS['id']);  // Solution 1 : on accede à la super global $GLOBAL
  global $id;
  var_dump($id); // Voie $id car elle a été définie comme une var globale à la ligne précédente
}

Si tu fais ta définition ainsi que l'include dans une fonction ,

cat main.php
<?php
function bingo() {
$id = 12; // La variable $id est local 
include('toto.php');
}
cat toto.php
<?php
var_dump($id); // Fonctionne car on est dans le meme scope que la fonction bingo()
function toto () {
 // Impossible d'acceder ici a $id, $id est une var local a la fonction bingo()
}

Posté : 04 juin 2007, 13:47
par risa83
Voici un petit bout de mon code :

cat main.php
<?php
  $id=15;
  include('example.php');
?>
cat example.php
<?php
  $id= $_GET['id'];
?>
Mon souci est que example.php est appelé soit par main.php soit par un autre php.
Suivant les appels $id peut ne pas etre renseigné donc je ne peux pas mettre cette variable en globale...

Posté : 04 juin 2007, 14:05
par titerm
Bah voila, quand on pose une question claire, on obtient une réponse plus précise :)

donc dans ton cas, tu peux te contenter de mettre dans exemple.php qq chose comme
$id = isset($_GET['id']) ?  $_GET['id'] : 15;

Posté : 04 juin 2007, 16:18
par risa83
Bah voila, quand on pose une question claire, on obtient une réponse plus précise :)

donc dans ton cas, tu peux te contenter de mettre dans exemple.php qq chose comme
$id = isset($_GET['id']) ?  $_GET['id'] : 15;
Ok j'ai compris le principe

Merci pour tout titerm :wink: