2017-07-23 5 views
0

zugreifen kann ich eine Datenbank-Konfigurationsdatei (db_config.php) in meiner header.php Datei nenne. Ich rufe header.php in meiner Vorlage (location.php) I die Variablen in der db-Konfigurationsdatei zugreifen müssen, wie ich Abfragen renne, die ein Ergebnis ausgeben, das ich dann in der Vorlage aufrufen.

Also in meinem db_config.php Datei habe ich die folgenden:

$area_query = "SELECT * FROM `locations` where `type` = 'area'"; 

mysqli_query($db, $area_query) or die('Error querying database.'); 

$area_result = mysqli_query($db, $area_query); 

if (!$area_result) { 
    printf("Error: %s\n", mysqli_error($con)); 
    exit(); 
} 

dann in einer Datei namens locations.php ich durch das Ergebnis der der oben bin mit Looping:

  while ($row = mysqli_fetch_array($area_result)) 
     { 
      echo "<li class='location-list-item'><a href='location/$row[name]'><span class='initial-letter'>".mb_substr($row['name'],0,1)."</span>".$row['name']." <i class=\"fa fa-chevron-circle-right\" aria-hidden=\"true\"></i></a></li>"; 
     } 

Dies funktioniert gut, wenn ich die db_config.php in header.php unter Verwendung der folgenden einschließen:

Allerdings, wenn ich benutze:

include($_SERVER['DOCUMENT_ROOT']."/config/db_config.php"); 

Sie den db_config.php findet wie erwartet (wie etwas in db_config.php Ausgaben Echo, wenn locations.php Datei Besuch), aber ich kann nicht mehr als $ area_result zugreifen. Ich erhalte die folgende Fehlermeldung:

Notice 
: Undefined variable: area_result 
on line 
28 


Warning 
: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null 
given in 
locations.php 
on line 
28 

Ich bin verwirrt, warum _SERVER $ mit [ ‚DOCUMENT_ROOT‘] hindert mich die Variable zugreifen? Ich muss $ _SERVER ['DOCUMENT_ROOT'] für Dateipfad Gründe verwenden.

Um zu klären, in locations.php ich header.php bin auch wiederum die db_config.php einschließlich ist. Ich kann Sachen in db_config widerspiegeln, die beim Besuch von locations.php ausgegeben werden, aber ich kann nicht auf die Variablen zugreifen.

Vielen Dank.

+0

Siehe https://stackoverflow.com/questions/11893832/is-it-a-good-idea-use-serverdocument-root-in- enthält – Amir

+0

Danke, versuchte ein paar Dinge drin, aber keiner von ihnen hat funktioniert. – user3725781

Antwort

0

Ich würde vorschlagen, dass Sie zuerst den Rückgabewert von $ _SERVER [ ‚DOCUMENT_ROOT‘] echo um sicherzustellen, dass Sie den Pfad zeigt Sie es erwarten. Tun Sie dies in einer lokalen Umgebung, natürlich.

<?php echo $_SERVER['DOCUMENT_ROOT']; ?> 

Ihr Konfigurationsverzeichnis (für einen Teil des verwendeten Pfades für include()) muss direkt in Ihrem Dokument-Root-Verzeichnis sein, dieser Weg, zu arbeiten, zu sehen, warum ist die Überprüfung, welcher Weg zuerst zurückgegeben wird, wird dazu beitragen, Du damit.

Unter Umständen müssen Sie Ihren Weg, um genauer zu entsprechen anzupassen, wo die Datei, die Sie aufnehmen möchten, befindet.

<?php include($_SERVER['DOCUMENT_ROOT'] . "/SOME_DIR/config/db_config.php"); ?> 

Eine weitere Option für Sie, wenn Sie diese Datei in mehrere Dateien in mehreren Tiefe Verzeichnisse aufnehmen möchten ist, dann können Sie auch wie so ...

<?php include('../config/db_config.php'); ?> 

einen relativen Pfad mit Doppelpunkten bilden

die oben würden Sie auf die config/db_config.php Datei über dem aktuelle Verzeichnis zugreifen und die folgenden würden Sie in die Datei zwei Verzeichnisse über dem aktuelle Verzeichnis in der aktuelle Datei zugreifen.

<?php include('../../config/db_config.php'); ?> 

Als Randbemerkung, könnte es besser sein include_once zu verwenden, um mehr einschließlich der Datei zu vermeiden, oder noch besser, require_once, die Sie tatsächlich ohne es diese Datei als Teil der Zusammenstellung verwenden, was in der Datei läßt.

Eine letzte Sache, die Sie versuchen könnten, obwohl ich nicht sicher bin, ob dies nur für Objektorientierte Programmierung (OOP) gilt, aber Sie können die Variable als global markieren, bevor Sie sie verwenden.

<?php 

global $area_result; 

while ($row = mysqli_fetch_array($area_result)) { 
    echo "<li class='location-list-item'><a href='location/$row[name]'><span class='initial-letter'>".mb_substr($row['name'],0,1)."</span>".$row['name']." <i class=\"fa fa-chevron-circle-right\" aria-hidden=\"true\"></i></a></li>"; 
} 

?> 

Hoffentlich habe ich Ihnen geholfen und Ihr Problem gelöst. :)

Verwandte Themen