2010-07-19 10 views
0

J'ai un fichier DB contenu mon DB info. le fichier db.php situé sur le dossier de ma mère [ici le dossier des applications]. Maintenant, comment puis-je inclure le fichier db.php n'importe où sur le projet en utilisant base_url()? Voici ma fonction d'url de base:PHP: inclure le fichier

function base_url() { 
    return "http://localhost/apps"; 
} 

J'ai essayé de cette façon mais cela ne fonctionne pas.

$link=base_url()."/"."db.php";  
include('$link'); 

Quelqu'un peut-il s'il vous plaît aider>

Merci riad

+0

Que voulez-vous dire par « pas des œuvres »? Avez-vous une erreur de compilation, ou le comportement de sortie est différent? –

+0

Pourquoi cela ne fonctionne pas? Quel message d'erreur recevez-vous? – mck89

Répondre

1
include('../db.php'); 

"../" sera reapeat (par exemple '../../../db.php') que la profondeur du fichier à partir duquel vous incluez

vous pouvez utiliser $ _SERVER [ « DOCUMENT_ROOT »] var comme l'URL de base/PATH trop

+0

Je pense avoir à faire face à '../ ..' est ce qu'il veut éviter avec sa fonction. –

+0

merci sadat.i utiliser $ link = $ _ SERVER ['DOCUMENT_ROOT']. "/ Apps/db.php"; \t \t include $ link; cela fonctionne .. – riad

3

base_url() doit retourner un chemin de fichier ici, pas une URL http://.

(Il serait alors sans doute faire sens pour le renommer à base_path())

+0

mais l'URL de base j'ai utilisé tout le porject..soit le nom de fichier ne peut pas être return.that pourquoi j'ai ajouté le nom de fichier après la fonction base_url. la variable $ lien correctement montré le résultat.Mais ne peut pas inclure le fiel.OR de toute autre façon vous savez inclure le fichier en utilisant l'URL ?? – riad

+0

@riad y compris le fichier via une URL est stupide, sauf si c'est ce que vous * spécifiquement * veut. Tout code PHP sera analysé * avant inclusion *, et un processus de serveur web démarré. Vous voudrez généralement utiliser un chemin de fichier. –

+0

thx pekka pour votre total ans – riad

0

Dans single quotes occurrences variables comme votre $link ne sont pas remplacés par leurs valeurs. Mais vous pouvez simplement écrire ceci:

$link = base_url()."/db.php"; 
include $link; 

Maintenant, si cela fonctionne comme prévu dépend si vous voulez que le code source de db.php à inclure ou juste la sortie de db.php. Parce que travailler sur le système de fichiers vous obtient le code source tout en le demandant via HTTP vous obtient la sortie.

+0

@riad oui, parce que vous utilisez une URL (en plus, une incorrecte) comme chemin d'inclusion. Je te parie une bière ce n'est pas ce que tu veux. Mais je l'ai dit trois fois maintenant, je ne vais plus me répéter. –

+0

hahah..vous corrigez – riad

2

problèmes multiples.

  1. include('$link'); sera jamais travailler parce que les guillemets simples signifient le lien chaîne $ littérale et non la valeur de la variable, vous serez besoin d'utiliser include($link) ou include("$link");
  2. comprennent est un langage construit pas une fonction , de sorte que vous ne devez include $link;
  3. stipulant «/» comme séparateur de répertoire pourrait causer des problèmes, PHP fournit une constante pour vous d'utiliser DIRECTORY_SEPARATOR
  4. votre fonction base_url doit retourner un chemin de fichier et non une URL
  5. base_url devrait probablement être juste une vision constante car il ne changera pas

est ici une version qui devrait travailler pour vous

function application_root() 
{ 
    return dirname(__FILE__) . DIRECTORY_SEPARATOR; 
} 
$link = application_root() . 'db.php'; 
include $link; 
+0

Je ne suis pas d'accord avec 2. et 3. et pas sûr de 5. mais +1 pour le remarquer 1. :) –

+0

merci beaucoup .. très descriptif..je l'aime..thx bro – riad

+0

@Pekka ne savez pas comment vous pouvez être en désaccord avec 2 ?? inclure simplement * est * une construction - comme pour 3, si le script doit être n'importe quel type de portable, alors préférable d'utiliser le séparateur de répertoire OS natif peut-être .. – nathan