xml und include
jenslm
- php
Komme mal wieder nicht weiter.
Mein Code:
$xml = simplexml_load_file("".$_SERVER['DOCUMENT_ROOT']."/subordner/templ/template.xml");
$count = count($xml); //2
$id = 0;
do
{
$pos = $xml->positions->position[$id]->name;
echo "<div class=\"".$pos."\">";
$sql = "SELECT module FROM pos_assoc WHERE pos = '$pos'";
$result = mysql_query($sql, $database) or die(mysql_error());
do
{
echo $row['module']; //funktionert einwandfrei
include("".$_SERVER['DOCUMENT_ROOT']."/subordner/modules/".$row['module'].".php"); //siehe unten
}
while($row = mysql_fetch_assoc($result));
$id++;
}
while($id <= $count);
die xml dazu:
<?xml version="1.0" encoding="utf-8" ?>
<template>
<generals>
<inf1>inf1</inf1>
<inf2>inf2</inf2>
</generals>
<positions>
<position><name>top</name></position>
<position><name>middle</name></position>
</positions>
</template>
Soweit so gut. Die Ausgabe der gewünschten Variable ($row['module']) funktioniert genauso wie ich mir es vorgestellt habe.
Ausgabe:
nav
content
Setze ich die Variable allerdings in einen Include-Befehl ein erhalte ich Folgendes:
Warning: include(Laufwerk:/xampp/htdocs/subordner/modules/.php) [function.include]: failed to open stream: No such file or directory in Laufwerk:\xampp\htdocs\subordner\templ\html\template.php on line 22
Warning: include() [function.include]: Failed opening 'Laufwerk:/xampp/htdocs/subordner/modules/.php' for inclusion (include_path='.;\xampp\php\pear') in Laufwerk:\xampp\htdocs\subordner\templ\html\template.php on line 22
navText aus nav.php
Warning: include(Laufwerk:/xampp/htdocs/subordner/modules/.php) [function.include]: failed to open stream: No such file or directory in Laufwerk:\xampp\htdocs\subordner\templ\html\template.php on line 22
Warning: include() [function.include]: Failed opening 'Laufwerk:/xampp/htdocs/subordner/modules/.php' for inclusion (include_path='.;\xampp\php\pear') in Laufwerk:\xampp\htdocs\subordner\templ\html\template.php on line 22
contentText aus content.php
Warning: include(Laufwerk:/xampp/htdocs/subordner/modules/.php) [function.include]: failed to open stream: No such file or directory in Laufwerk:\xampp\htdocs\subordner\templ\html\template.php on line 22
Warning: include() [function.include]: Failed opening 'Laufwerk:/xampp/htdocs/subordner/modules/.php' for inclusion (include_path='.;\xampp\php\pear') in Laufwerk:\xampp\htdocs\subordner\templ\html\template.php on line 22
In den letzten Zeilen der 2. und 4. Fehlermeldung wird allerdings alles ausgegeben. Auch der Echo-Befehl der Include-Datei?!
Was mache ich falsch?
Lg, Jens
Hi!
include("".$\_SERVER['DOCUMENT\_ROOT']."/subordner/modules/".$row['module'].".php"); //siehe unten
Leerstrings zu verknüpfen ist unsinnig.
Das SimpleXMLElement arbeitet mit PHP-Magie, konkret: __toString(). Nicht immer gelingt es PHP, einwandfrei festzustellen, dass die String-Darstellung gewünscht ist, also __toString() aufzurufen ist. Da muss man mit einem Typecast nachhelfen: (string)$row['module']
Da du hier in einem Ausdruck bist (Stringkonkatenation), musst du den Typecast insgesamt auch nochmal klammern.
Lo!
war das jetzt so gemeint...
include("".$_SERVER['DOCUMENT_ROOT']."/subordner/modules/".(string)$row['module'].".php");
oder hab ich da jetzt was falsch verstanden?
lg, jens
war das jetzt so gemeint...
ausprobieren! ich glaube aber, er hat es genau so gemeint. wozu ist eig. das "" am anfang des includestrings?
Nick
ausprobieren! ich glaube aber, er hat es genau so gemeint.
funktioniert nicht...selbe fehlermeldungen!
wozu ist eig. das "" am anfang des includestrings?
ne verdammt gute frage :)
lg, jens
ich raffs einfach nicht. wie kann denn das sein?
auch sowas funktioniert nicht:
include($_SERVER['DOCUMENT_ROOT']."/bp_cms/modules/".(string)$row['module'].".php");
das hier aber schon
echo (string)$row['module'];
lg, jens
und der kleine Fehler befand sich hier:
while($id <= $count);
und jetzt funktionierts so:
while($id < $count);
lg