Seite 1 von 2

Blockdaten werden nicht eingefügt

Verfasst: 30.10.2008 15:24
von Nescire
Hi ich habe versucht eine eigene Seite in mein phpBB3 Board einzufügen. Das hat auch fast komplett geklappt, nur an einer leider sehr wichtigen Sache hängt es noch und da ich leider nirgends Debugger-Meldungen finde habe ich keine ahnung was falsch ist.

Wenn jemand den Fehler finden würde wäre ich echt dankbar.


Der code meiner gilde.php:

Code: Alles auswählen

<?php
/**
*
* @author Jan-Erik Siegmann jan@siegmann-digital.de - http://www.rechtundordnung.de.tp
*
* @package {BuffedGildendetails}
* @version 1.0
* @copyright (c) 2008 Siegmann Digital
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/
define('IN_PHPBB', true);
// Specify the path to you phpBB3 installation directory.
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
// The common.php file is required.
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);

// specify styles and/or localisation
// in this example, we specify that we will be using the file: my_language_file.php
$user->setup();

/*
* All of your coding will be here, setting up vars, database selects, inserts, etc...
*
*/
$gilde = simplexml_load_file('http://www.buffed.de/public/war/xml/guild/226.xml');

$colorset =0;
  foreach ($gilde->character as $character) {
	  $template->assign_block_vars('gildendetails', array(
        'NAME'        => "Name",
        'KARRIERE'            => $character->career[0],
		'TITLE'            => $character->title[0],
		'RANG'            => $character->rank[0],
		'BGCOLOR' 		=> $bgcolor,
    ));
  
 		if ($colorset == "1")
  		{
   			$bgcolor="'#444444'";
	    }
 		else
  		{
  			$bgcolor="'#666666'";
    		$colorset =0;
  		} 
  
 }


// Page title, this language variable should be defined in the language file you setup at the top of this page.
page_header('Gildendetails');

// Set the filename of the template you want to use for this file.
// This is the name of our template file located in /styles/<style>/templates/.
$template->set_filenames(array(
    'body' => 'gilddetails.html',
));

// Completing the script and displaying the page.
page_footer();

?>
und hier der code der Templatedatei:

Code: Alles auswählen

<!-- INCLUDE overall_header.html -->
<table width="60%" border="0">
<div align="center">
  <tr>
    <th scope="col">Name</th>
    <th scope="col">Karriere</th>
    <th scope="col">Titel</th>
    <th scope="col">Rang</th>
  </tr>
   <!-- BEGIN gildendetails -->
   <tr bgcolor={gildendetails.BGCOLOR}>
    <td>{gildendetails.NAME}</td>
    <td>{gildendetails.KARRIERE}</td>
    <td>{gildendetails.TITLE}</td>
    <td>{gildendetails.RANG}</td>
   </tr>";
<!-- END gildendetails -->
</div>
</table>
<!-- INCLUDE jumpbox.html -->
<!-- INCLUDE overall_footer.html -->
</body>
</html>

Verfasst: 30.10.2008 15:51
von Hasu0bs
Hallo
also was ich auf anhieb sehe: Ich würde mal das

Code: Alles auswählen

</body>
</html> 
nach <!-- INCLUDE overall_footer.html --> weglassen das ist in der overall_footer schon drin ;)

Verfasst: 30.10.2008 16:06
von Nescire
Das wars leider nicht :(

Verfasst: 30.10.2008 16:42
von gn#36
So kommt das irgendwie einer Glaskugelsuche gleich: Wie waere es, wenn du mitteilen wuerdest was genau du da fuer einen Fehler drin hast? Oder damit du die Frage nicht falsch verstehst: Was du zu Gesicht bekommst und was du stattdessen erwarten wuerdest?

Ausserdem: KB:knigge Bitte poste nicht so viel Code auf einmal sondern verlinke den stattdessen. Danke (KB:datei)

Verfasst: 30.10.2008 16:50
von Nescire
Sorry wegen dem Code, kenn das aus anderen Foren nur so das es lieber ist wenn der Code im Posting ist.

Naja was eben nicht passiert ist das die Daten aus den variablen eingetragen werden, er sollte ja die tabelle mit den einträgen füllen. dies geschieht nicht die seite wird aufgebaut und man sieht nur den table header.
Das ist das momentane Resultat:
http://ruo.siegmann-digital.de/gilde.php

Verfasst: 30.10.2008 20:00
von gn#36
Mach mal einen print_r($gilde->character), so wie es für mich aussieht hast du da einfach keine Daten drin, sprich simplexml_load_file funktioniert nicht richtig.

Was das Template angeht hat ein div in einer Tabelle nichts zu suchen, das kannst du außen drum rum machen aber nicht innen drin.

Verfasst: 30.10.2008 20:38
von Nescire
Also daten wurden mit print_r ausgegeben:
SimpleXMLElement Object ( [@attributes] => Array ( [name] => Abratak [lastlogin] => 16.10.2008 - 20:33:03 ) [rank] => 11 [career] => Feuerzauberer [title] => Mitglied )

Und am Div liegt es auch nicht :(

Verfasst: 30.10.2008 20:56
von gn#36
Bau mal oben in das skript die Konstante define('DEBUG_EXTRA', true); ein.

Wenn das ein Objekt ist dann ist das Konstrukt aber so nicht richtig, denn foreach erwartet ein Array von Daten und keine Objekte (welche du ihm lieferst). Entsprechend kann foreach mit deinem SimpleXMLElement Object nichts anfangen und führt daher keine einzige Schleife aus. Du musst dafür sorgen dass die Daten in Arrayform vorliegen oder eine andere Schleifenform wählen in der du selbst kontrollierst wann die Schleife alle Werte durchlaufen hat. Zudem enthält $gilde->character offenbar auch nicht alle Elemente die du ausgeben willst, sondern nur das erste. print_r($gilde) gibt vermutlich mehr aufschluss was du machen musst.

Verfasst: 30.10.2008 21:15
von Nescire
Ähm $gilde ist ein array. simplexml_load_file gibt ein array zurück in dem wiederum arrays liegen der letzendliche wert ist dann ein objekt.

Im array Gilde, liegen arrays namens character, darin sind wieder arrays gespeichert und in diesen sind dann objekte.

hatte das ganze schonmal so programmiert als reine php seite wollte es nun ins forum einbinden und daher das mit der template seite. die ausgabe über foreach schleife mit echo als ausgabe hatte funktioniert. nur habe ich den eindruck das die daten in der template datei ankommen.

ich habe auch DEBUG_Extra nun eingebunden, sehe aber nirgends eine debug meldung.

Verfasst: 30.10.2008 21:25
von gn#36
Wenn $gilde ein Array ist dann ist die Benutzung oben falsch, denn du versuchst per -> auf ein Element zuzugreifen. Probier das mal ohne ->character aus. Allerdings wundert es mich dass dann überhaupt was rauskommt, ich hätte dann einen Fatal Error erwartet.

Hast du DEBUG_EXTRA oder DEBUG_Extra definiert? Ein riesen Unterschied! Kann sein dass du auch noch define('DEBUG', true); brauchst damit es meldungen gibt.