2010-07-07 11 views
2

Vraiment simple Je pense juste que c'est moi.en utilisant global à l'intérieur de la fonction pour obtenir variable du fichier inclus. PHP

ce fichier est 1.php

if(ctype_digit($_GET['id'])) 
{ 
    $item_id = "Hello"; 
} 
else 
{ 
    //Something 
} 

ce fichier est 2.PHP

function item_show(){ 

     $item_query = "SELECT title FROM tbl_items WHERE id='" . mysql_real_escape_string($item_id) . "' "; 

} 

Maintenant, ma question est de savoir comment puis-je obtenir la valeur de $item_id de 1.php dans la fonction 2.php?

Pour ajouter le fichier 1.php et le fichier 2.PHP sont tous deux inclus dans index.php

+0

est de fichier2.php inclus dans le fichier file1.php? – robjmills

+0

fichier 1.php et le fichier 2.php sont tous deux inclus dans index.php –

+0

Gardez juste à l'esprit que les fichiers inclus dans PHP fonctionnent comme s'ils y étaient copiés et collés, utilisez donc vos variables et vos méthodes comme si vous étiez tous un fichier. – quantumSoup

Répondre

2

Y at-il quelque chose que vous arrêter en passant comme un argument de fonction comme celui-ci?

item_show($item_id); 

ou (la très hacky et non recommandé):

function item_show(){ 
     global $item_id; 
     $item_query = "SELECT title FROM tbl_items WHERE id='" . mysql_real_escape_string($item_id) . "' "; 

} 
1

Je suppose que index.php inclut les fichiers suivants de l'ordre file1.php, file2.php.

Dans ce cas, vous pouvez utiliser le code suivant dans file2.php:

function item_show() { 
    global $item_id; 
    $item_query = "SELECT title FROM tbl_items WHERE id='" . mysql_real_escape_string($item_id) . "' "; 
} 
+0

oh donc j'appelle global dans la fonction pas dans le fichier d'origine inclus? –

+0

@Oliver Bayes-Shelton: Une fonction ne peut pas accéder aux variables globales, si elles ne sont pas déclarées. Les variables super globales ('$ _GET',' $ _POST', '$ GLOBALS') sont différentes car elles peuvent être accédées sans les déclarer. – kiamlaluno

1
function item_show($item_id){} 

ou

function item_show() 
{ 
    global $item_id; 
} 
0

Utilisez

$GLOBALS['item_id'] 

dans les deux fichiers, au lieu de

$item_id 
1
  1. Utilisez le code require pour inclure le code de 1.php.
  2. Dans 1.php, renvoyez la valeur de $ item_id.
  3. Appelez la fonction dans 1.php depuis 2.php.
0
function item_show() 
{ 
    global $item_id; 
} 

mais j'ai entendu que l'utilisation globale n'est pas une bonne méthode de codage.

+0

Vous avez raison, les globales ne sont généralement pas bonnes. Vous pouvez facilement modifier cette fonction pour passer l'identifiant de l'article en paramètre, ce qui serait beaucoup mieux. – Mansfield

Questions connexes