include und der böse Wolf :)

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
ESHdaBaer
Mitglied
Beiträge: 6
Registriert: 07.09.2003 16:13
Kontaktdaten:

include und der böse Wolf :)

Beitrag von ESHdaBaer »

Ich hab ein File namens 'planeten.php'.
In diesem wird ermittelt wieviele Planeten & Sektoren pro Planet ein User unter Kontrolle hat (das ganze gehört zu einem MMOG).

Pro Planet wird nun ein Script für die am Planeten vorkommende Sektorenanzahl eingefügt.
(Hier 1 Sektor pro Planet, das file heißt 'sektor1.php')

Mein Problem ist nun folgendes:
Die beiden files funktionieren beide alleinstehend tadellos, wenn ich 'planeten.php' jedoch das file 'sektor1.php' includen lasse, bekomme ich ein zero sized reply.

Hier die Sources:

planeten.php

Code: Alles auswählen

<?php

  session_start();
  
  include('/srv/www/htdocs/connect.php');

  $daten = "SELECT `besitz` FROM `user` WHERE `id`='" . $_SESSION['id'] . "'";
  $daten = mysql_query($daten);
  $daten = mysql_fetch_array($daten);

  /* Script das irgendwie rausfindet, auf welchen Planeten man rumgammelt =) */

  $besitz = $daten['besitz'];

  $besitz = strtok($besitz,"§");

  $i = 0;
  $planeten_anzahl = 0;


  while($besitz)
  {
	  /*

	  Da es in userem MMOG möglich ist, mehrere Planeten zu besitzen, mehre Sektoren pro Planet UND diese getrennt zu verwalten, wird dieses Script schnell unübersichtlich.

	  Die allgemeine Form von $besitz sieht wie folgt aus:
	  PlanetID§Sektoren_unter_Kontrolle§PlanetID usw
	  d.h. wenn wir jedes zweite strtok zählen, erfahren wir wieviele Planeten der User besitzt, was unser 1. Ziel ist.

	  Somit wissen wir also, wieviele Tables wir brauchen.

	  */

	  $i++;

	  if(($i % 2) == 1)
	  {
		  $planeten_anzahl++;
  		  $planeten_id[$planeten_anzahl] = $besitz;
	  }
	  else
	  {
		  $sektoren[$planeten_anzahl] = $besitz;
	  }
	  $besitz = strtok("§");
  }

  for($i = 1; $i <= $planeten_anzahl; $i++)
  {
	  if (
		     ($sektoren[$i] == 1)
		  || ($sektoren[$i] == 2)
		  || ($sektoren[$i] == 3)
		  || ($sektoren[$i] == 4)
		  || ($sektoren[$i] == 5)
		 )
	  {
		  include('sektor1.php');
	  }
  }


?>
sektor1.php

Code: Alles auswählen

<?php

  /*
  
  Ein-Sektor : Das PHP Script für 1 Sektor auf einem Planet
  Scriptvariablen:

  +--------------------+-------+------------------------------------------+
  | Variablenname      | Typ   | Verwendung                               |
  +--------------------+-------+------------------------------------------+
  | $_SESSION          | Array | Session Informationen                    |
  |                    |       |                                          |
  | $planetare_daten   | Array | DB Informationen ü. den Planeten         |
  | $prozentraten      | Array | Jegliche % - Informationen               |
  | $besitzer_sektor   | Array | Daten Besitzer der einzelnen Sektoren    |
  | $eigene_ressourcen | Array | Metall, Nahrung und Lemex                |
  +--------------------+-------+------------------------------------------+
  | $koordinaten       | Var   | Koordinaten d. Planeten                  |
  | $eigener_sektor    | Var   | Nummer d. eigenen Sektors                |
  +--------------------+-------+------------------------------------------+

  */

  # Schritt 1 - Initialisierung der Hautvariablen

  # $planetare_daten

  $planetare_daten = "SELECT * FROM `planeten` WHERE `id`='".$planeten_id[$planeten_anzahl]."'";
  $planetare_daten = mysql_query($planetare_daten);
  $planetare_daten = mysql_fetch_array($planetare_daten);

  # $koordinaten

  $koordinaten = $planetare_daten['koordinaten'];
  $koordinaten = str_replace("§",":",$koordinaten);
  
  # $besitzer_sektor

  $temp = $planetare_daten['besitzer'];
  $temp = strtok($temp,"§");
  $i = 0;
  while($temp)
  {
	  $i++;
	  $temp_besitzer[$i] = $temp;
	  $temp = strtok("§");
  }

  $temp_daten_1 = "SELECT `nickname`,`spezies`,`rasse`,`sternenbund` FROM `user` WHERE `id`='".$temp_besitzer['1']."'";
  $temp_daten_1 = mysql_query($temp_daten_1);
  $temp_daten_1 = mysql_fetch_array($temp_daten_1);
  $temp_daten_2 = "SELECT `nickname`,`spezies`,`rasse`,`sternenbund` FROM `user` WHERE `id`='".$temp_besitzer['2']."'";
  $temp_daten_2 = mysql_query($temp_daten_2);
  $temp_daten_2 = mysql_fetch_array($temp_daten_2);
  $temp_daten_3 = "SELECT `nickname`,`spezies`,`rasse`,`sternenbund` FROM `user` WHERE `id`='".$temp_besitzer['3']."'";
  $temp_daten_3 = mysql_query($temp_daten_3);
  $temp_daten_3 = mysql_fetch_array($temp_daten_3);
  $temp_daten_4 = "SELECT `nickname`,`spezies`,`rasse`,`sternenbund` FROM `user` WHERE `id`='".$temp_besitzer['4']."'";
  $temp_daten_4 = mysql_query($temp_daten_4);
  $temp_daten_4 = mysql_fetch_array($temp_daten_4);
  $temp_daten_5 = "SELECT `nickname`,`spezies`,`rasse`,`sternenbund` FROM `user` WHERE `id`='".$temp_besitzer['5']."'";
  $temp_daten_5 = mysql_query($temp_daten_5);
  $temp_daten_5 = mysql_fetch_array($temp_daten_5);
  

  $besitzer_sektor = array(
  "1" => array(
    "id" => $temp_besitzer['1'],
    "nickname" => $temp_daten_1['nickname'],
	"spezies" => $temp_daten_1['spezies'],
	"rasse" => $temp_daten_1['rasse'],
	"sternenbund" => $temp_daten_1['sternenbund']
	),
  "2" => array(
    "id" => $temp_besitzer['2'],
    "nickname" => $temp_daten_2['nickname'],
	"spezies" => $temp_daten_2['spezies'],
	"rasse" => $temp_daten_2['rasse'],
	"sternenbund" => $temp_daten_2['sternenbund']
	),
  "3" => array(
    "id" => $temp_besitzer['3'],
    "nickname" => $temp_daten_3['nickname'],
	"spezies" => $temp_daten_3['spezies'],
	"rasse" => $temp_daten_3['rasse'],
	"sternenbund" => $temp_daten_3['sternenbund']
	),
  "4" => array(
    "id" => $temp_besitzer['4'],
    "nickname" => $temp_daten_4['nickname'],
	"spezies" => $temp_daten_4['spezies'],
	"rasse" => $temp_daten_4['rasse'],
	"sternenbund" => $temp_daten_4['sternenbund']
	),
  "5" => array(
    "id" => $temp_besitzer['5'],
    "nickname" => $temp_daten_5['nickname'],
	"spezies" => $temp_daten_5['spezies'],
	"rasse" => $temp_daten_5['rasse'],
	"sternenbund" => $temp_daten_5['sternenbund']
	)
  );
  
  # Arrayform: $besitzer_sektor[Sektoren_Nummer][DB_Name] = Information
  # zB $besitzer_sektor['1']['nickname'] = "LilaLemming"

  # $eigener_sektor
  
  $temp = $planetare_daten['besitzer'];
  $temp = strtok($temp, "§");
  $i = 0;
  while($temp)
  {
	  $i++;
	  $temp_sektoren[$i] = $temp;
	  $temp = strtok("§");
  }
  
  switch($_SESSION['id'])
  {
	  case $temp_sektoren['1']: $eigener_sektor = 1; break;
	  case $temp_sektoren['2']: $eigener_sektor = 2; break;
	  case $temp_sektoren['3']: $eigener_sektor = 3; break;
	  case $temp_sektoren['4']: $eigener_sektor = 4; break;
	  case $temp_sektoren['5']: $eigener_sektor = 5; break;
	  DEFAULT: echo "ERROR";
  }

  # $eigene_ressourcen

  $temp = $planetare_daten['lagernde_ressourcen'];
  
  while($temp)
  {
	  $i++;
	  if ($i == $eigener_sektor)
	  {
		  $temp_res = $temp;
	  }
	  $temp = strtok("§");
  }

  $temp_res = strtok($temp_res,"-");
  $i = 0;

  while($temp_res)
  {
	  $i++;
	  $temp_ress_sorted[$i] = $temp_res;
	  $temp_res = strtok("-");
  }
  $eigene_ressourcen = array(
  "metall" => $temp_ress_sorted['1'],
  "nahrung" => $temp_ress_sorted['2'],
  "lemex" => $temp_ress_sorted['3']
  );

  # $prozentraten

  $temp = $planetare_daten['foerderungsquote'];

  $temp = strtok($temp,"§");
  $i = 0;
  
  while($temp)
  {
	  $i++;
	  $temp_foerderung[$i] = $temp;
	  strtok($temp);
  }
  $temp = $planetare_daten['vermehrungsquote'];
  $i = 0;

  while($temp)
  {
	  $i++;
	  $temp_vermehrung[$i] = $temp;
	  strtok($temp);
  }

  $prozente = array(
  "m4e" => $temp_vermehrung['1'],
  "sov" => $temp_vermehrung['2'],
  "tak" => $temp_vermehrung['3'],
  "metall" => $temp_foerderung['1'],
  "nahrung" => $temp_foerderung['2'],
  "lemex" => $temp_foerderung['3']
  );

  # Ende Schritt 1 - Initialisierung d. wichtigsten Variablen

  # Schritt 2 - Table & eingefügtes:

  echo "<div align=\"center\">";
?>
<table border="1" width="80%">
  <tr>
    <td width="29%">
      <table border="1" width="33%" height="151">
        <tr>
          <td width="7%" align="center" height="30">1</td>
          <td width="31%" align="right" height="30">
		  <?php
		  echo $besitzer_sektor['1']['nickname'];
		  ?>
		  </td>
          <td width="63%" height="30">
		  <?php
		  echo $planetare_daten['name'];
		  ?>
		  </td>
        </tr>
        <tr>
          <td width="7%" align="center" height="30">2</td>
          <td width="31%" align="right" height="30"> 
		  <?php
		  echo $besitzer_sektor['2'];
		  ?>
		  </td>
          <td width="63%" rowspan="3" height="86">&nbsp;
            <p>&nbsp;</p>
            &nbsp;
		  </td>
        </tr>
        <tr>
          <td width="7%" align="center" height="30">3</td>
          <td width="31%" align="right" height="30"> 
		  <?php
		  echo $besitzer_sektor['3'];
		  ?>
		  </td>
        </tr>
        <tr>
          <td width="7%" align="center" height="30">4</td>
          <td width="31%" align="right" height="30">
		  <?php 
		  echo $besitzer_sektor['4'];
		  ?>
		  </td>
        </tr>
        <tr>
          <td width="7%" align="center" height="31">5</td>
          <td width="31%" align="right" height="31">
		  <?php
		  echo $besitzer_sektor['5'];
		  ?>
		  </td>
          <td width="63%" height="31">
            <p align="center"> 
			<?php
			echo $koordinaten;
			?>
            </p>
          </td>
        </tr>
      </table>
    </td>
    <td width="71%">
      <table border="1" width="101%" height="165">
        <tr>
          <td width="97%" height="33" align="center" colspan="6"></td>
        </tr>
        <tr>
          <td width="26%" height="33" align="center" colspan="3">Sektor&nbsp;
		  <?php
		  echo $eigener_sektor;
		  ?>
		  </td>
          <td width="25%" height="33"></td>
          <td width="22%" height="33" align="right">Bevölkerung</td>
          <td width="28%" height="33">&nbsp;gesamt 0.000.000</td>
        </tr>
        <tr>
          <td width="7%" height="33" align="center">pic</td>
          <td width="5%" height="33" align="right">
		  <?php
		  echo $prozente['metall'];
		  ?>
		  &nbsp;%
		  </td>
          <td width="14%" height="33" align="right">Metall:</td>
          <td width="25%" height="33"><?php echo $ressourcen['metall']; ?></td>
          <td width="22%" height="33" align="right">Gebäude</td>
          <td width="28%" height="33"></td>
        </tr>
        <tr>
          <td width="7%" height="33" align="center">pic</td>
          <td width="5%" height="33" align="right">
		  <?php
		  echo $prozente['metall'];
		  ?>
		  &nbsp;%
		  </td>
          <td width="14%" height="33" align="right">Nahrung:</td>
          <td width="25%" height="33"><?php echo $ressourcen['nahrung']; ?></td>
          <td width="22%" height="33" align="right">Ausbildung</td>
          <td width="28%" height="33" align="right"></td>
        </tr>
        <tr>
          <td width="7%" height="33" align="center">pic</td>
          <td width="5%" height="33" align="right">
		  <?php
		  echo $prozente['metall'];
		  ?>
		  &nbsp;%
		  </td>
          <td width="14%" height="33" align="right">Lemex:</td>
          <td width="25%" height="33"><?php echo $ressourcen['lemex']; ?></td>
          <td width="22%" height="33" align="right">Produktion</td>
          <td width="28%" height="33" align="right">
            <p align="center">Militär</td>
        </tr>
      </table>
    </td>
  </tr>
</table>
</div>
Bitte um Hilfe *g*
Vielen Dank!
Benutzeravatar
BrahmA
Mitglied
Beiträge: 2283
Registriert: 25.07.2002 13:31
Wohnort: Münsterland

Beitrag von BrahmA »

hab ich das richtig verstanden?
du willst die eine datei in die andere includen damit beides auf einer seite zu sehen ist?
warum erstellst du dann nicht einen neu und includest beide oder kopierst einfach beide datein zusammen?
ESHdaBaer
Mitglied
Beiträge: 6
Registriert: 07.09.2003 16:13
Kontaktdaten:

Beitrag von ESHdaBaer »

nein, das script findet zuerst heraus wieviele planeten ein user hat,
und dann fügt es pro planet das zweite script einmal ein.
für jeden weiteren planet ein weiteres mal.
Benutzeravatar
Mungo
Administrator
Administrator
Beiträge: 6613
Registriert: 03.05.2003 19:34

Beitrag von Mungo »

schon mal mit require_once() anstatt mit include() versucht?
Benutzeravatar
BrahmA
Mitglied
Beiträge: 2283
Registriert: 25.07.2002 13:31
Wohnort: Münsterland

Beitrag von BrahmA »

bei require_once wird das zweite script aber nur einmal eingefügt oder?
wenn ich ihn jetzt richitg verstanden habe, soll das aber mehrfach eingefügt werden.....
ESHdaBaer
Mitglied
Beiträge: 6
Registriert: 07.09.2003 16:13
Kontaktdaten:

Beitrag von ESHdaBaer »

jop,
require() macht die selben probs.
Benutzeravatar
Mungo
Administrator
Administrator
Beiträge: 6613
Registriert: 03.05.2003 19:34

Beitrag von Mungo »

also require() kann man nicht in schleifen einbaun....da muss man include() verwenden....

hast du es jezt mit require() oder mit require_once() versucht?
ESHdaBaer
Mitglied
Beiträge: 6
Registriert: 07.09.2003 16:13
Kontaktdaten:

Beitrag von ESHdaBaer »

eben, das geht ja nicht, weil es in einer schleife ist.
darum hab ich include verwendet.
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Sowohl in planeten.php als auch in sektor1.php verwendest du als Zählvariable $i. Warscheinlich hast du eine Endlosschleife gebaut, da die Schleifen von sektor1.php den Wert von $i immer wieder zurücksetzen.
ESHdaBaer
Mitglied
Beiträge: 6
Registriert: 07.09.2003 16:13
Kontaktdaten:

Beitrag von ESHdaBaer »

schaun wir mal ob sich was verändert, danke für den hinweis.
Antworten

Zurück zu „Coding & Technik“