TP Underground Lounge 07/08
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 22.06.2004, 14:33   #1
TP-Junior
 
Registriert seit: Jun 2004
Ort: Solingen
MrPostman macht alles soweit korrekt
Cool

Mehrfaches include();


Hallo,

ich brauch mal PHP Hilfe.. ich kenn mich echt noch nicht gut aus und probiere rum, komm aber nicht weiter.

Ich habe eine while Schleife die mir mehrfach eine Datei includen soll, jeweils mit einer anderen Variable, die Tabelle soll dann die entsprechenden MySql Daten abfragen und verarbeiten, dann das gleiche mit der nächsten Variable usw.

Mein Ansatz:

Code:
<?php
	$plan_nr = 1;
	while ($plan_nr <= 4)
	{
	include ("apartmenttabelle.inc.php");
	$plan_nr++;
	}
?>
Einmal gibt er die Tabelle dann aus, dann kommt

Fatal error: Cannot redeclare table_exists() in /home/www/sites/194.245.126.220/site/plan/apartmenttabelle.inc.php on line 84

Mit include_once geht es zwar, aber dann wird die Schleife nicht mehr wiederholt, ich denke _once ist halt _once.. es wird also nur einmal die Tabelle ausgegeben, nur mit $plan_nr = 1

Was kann ich denn da machen?
MrPostman ist offline   Mit Zitat antworten


Alt 22.06.2004, 14:48   #2
TP-Insider
 
Benutzerbild von loki
 
Registriert seit: May 2003
Ort: Aachen
loki ist auf einem guten Weg
Warum willst du die denn bitte mehrmals includen?
einmal reicht doch dicke aus?!

Wenn du eine Datei includest ist das so, als ob der code in dieser Datei steht..
__________________
"Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
Einstein

loki ist offline   Mit Zitat antworten
Alt 22.06.2004, 14:51   #3
TP-Junior
 
Registriert seit: Jun 2004
Ort: Solingen
MrPostman macht alles soweit korrekt
Aber ich will das was in der includedeten Datei steht ja 4 mal wiedergeben, mit

$plan_nr = 1; $plan_nr = 2; $plan_nr = 3; $plan_nr = 4;
MrPostman ist offline   Mit Zitat antworten
Alt 22.06.2004, 14:54   #4
TP-Insider
 
Benutzerbild von loki
 
Registriert seit: May 2003
Ort: Aachen
loki ist auf einem guten Weg
Was ist denn in der includeten Datei drin?
Weil eigentlich sollte das so funktionieren...
__________________
"Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
Einstein

loki ist offline   Mit Zitat antworten
Alt 22.06.2004, 14:58   #5
TP-Specialist
 
Benutzerbild von PeterBrand
 
Registriert seit: Aug 2001
Ort: Graz
PeterBrand hilft, wo's gehtPeterBrand hilft, wo's gehtPeterBrand hilft, wo's geht
Hat
$plan_nr
Auswirkung auf den Inhalt der include-Datei? Also wird $plan-nr in dieser Datei irgendwie bearbeitet/abgefragt?
__________________
Freedom for Mars!

» Auszeichnung für "KlassenTreffen"...
» zum Kunden des Monats
PeterBrand ist offline   Mit Zitat antworten
Alt 22.06.2004, 15:00   #6
TP-Junior
 
Registriert seit: Jun 2004
Ort: Solingen
MrPostman macht alles soweit korrekt
Da wird dann eine MySQL Abfrage ausgeführt, mit der $plan_nr unter anderem.. spätestens da wirds mir dann allerdings schon wesentlich zu schwierig, der Code ist ewig lang, gehört zu einem Verwaltungsscript..

In welcher Reihenfolge passiert denn das parsen, wird das was man mit includet zuerst geparst und dann an der Stelle eingesetzt oder wird der pure Code eingesetzt und dann wird alles zusammen geparst?

Hier der Code von dem Includeten..

PHP-Code:
<?php

/* Tabellennamen */
$main_table_name "zbp_main";
$times_table_name "zbp_times";

/* Timestringformat der Änderungsdatum
   H = Stunden; m = Monat; d = Tag; H = Stunde; i = Minuten; s = Sekunden
   Weitere Ellungsmöglichkeiten finden Sie auf: [url]http://www.smartskull.de/timestring.html[/url] */
$timestring "d.m.Y - H:i:s";

/* Standardplannummer - Optional. Dieser Parameter kann auch mittels GET übergeben werden */
if (empty($plan_nr)) $plan_nr 1;

/* Standardsprache - Optional. Dieser Parameter kann auch mittels GET übergeben werden */
if (empty($lang)) $lang "ger";

/* CSS-Bezeichnungen für verschiedene Belegungssituationen */
$bg_class_keintag "ausgabe1"// Bsp. 30 Februar
$bg_class_nbelegt "ausgabe2"// Nicht belegt
$bg_class_verbleiben "ausgabe3"// Belegt
$bg_class_anreise "ausgabe4"// Anreise
$bg_class_abreise "ausgabe5"// Abreise

/* Weitere CSS Einstellungen */
$css_table_header "kopf";
$css_month "eingabe1";
$css_df1 "eingabe2";
$css_df2 "eingabe3";
$css_dv1 "ausgabe2";
$css_def "def";
$css_leer "leer";

if (
$lang == "ger")
    {
    
$monate = array( "01" => "Januar",
                 
"02" => "Februar",
                 
"03" => "März",
                 
"04" => "April",
                 
"05" => "Mai",
                 
"06" => "Juni",
                 
"07" => "Juli",
                 
"08" => "August",
                 
"09" => "September",
                 
"10" => "Oktober",
                 
"11" => "November",
                 
"12" => "Dezember"
                 
);
        }
        
if (
$lang == "eng")
    {
    
$monate = array( "01" => "January",
                 
"02" => "February",
                 
"03" => "March",
                 
"04" => "April",
                 
"05" => "May",
                 
"06" => "June",
                 
"07" => "July",
                 
"08" => "August",
                 
"09" => "September",
                 
"10" => "October",
                 
"11" => "November",
                 
"12" => "December"
                 
);
        }

// MySQL Datenbank auswaelen
if (!$dbdat = @mysql_select_db($db_name$dbh)):
     die (
"Datenbank konnte nicht Ausgew&auml;hlt werden. Verbindung zur Datenbank konnte nicht hergestellt werden");
endif;

/* ======================== ANFANG FUNKTIONSMODUL ======================== */
/* ======================================================================= */

// Prüft ob tabelle Bereits existiert
function table_exists($table) {
  GLOBAL  
$db_name;
  
$result mysql_list_tables ($db_name);
  if (!
$result) {echo "Prüfung der Tabellen konnte nicht durchgeführt werden. <br>";}
  else {
    while(
$row mysql_fetch_row($result)){
      if (
$row[0] == $table) return true;
  } }
  return 
false;
}

// Prüft ob ein Datum korrekt ist
function check_date($d$m$Y){
//  echo date("m-d-Y", mktime(0, 0, 0, $m, $d, $Y))." == $m-$d-$Y <br>";
  
if (date("m-d-Y"mktime(000$m$d$Y)) == "$m-$d-$Y") return true;
  return 
false;
}

function 
get_time ($tst){
  Global 
$timestring;
  
$lok date($timestring$tst);
  return (!empty (
$tst)) ? $lok "";
}

/* ======================== ENDE FUNKTIONSMODUL ======================== */
/* ===================================================================== */

if (empty($plan_nr)) die("Zimmer Nummer ist nicht gesetzt");
if (empty(
$year)) $year date("Y"time());

// Tabelle Erstellen
if ($create == "true"){
  
$query "CREATE TABLE `$main_table_name` (".
           
"`plan_nr` int(10) unsigned NOT NULL default '0',".
           
"`belegung` date NOT NULL default '0000-00-00'".
           
") TYPE=MyISAM;";
  if (!
mysql_query($query)) die ("Tabelle $main_table_name konnte nicht angelegt werden. Line: ".__LINE__);

  
$query "CREATE TABLE `$times_table_name` (".
           
"`plan_nr` int(10) unsigned NOT NULL default '0',".
           
"`last_mod` int(10) unsigned NOT NULL default '0'".
           
") TYPE=MyISAM;";
  if (!
mysql_query($query)) die ("Tabelle $times_table_name konnte nicht angelegt werden. Line: ".__LINE__);
  
header ("Location: $PHP_SELF"); exit;
}

// Prüfen ob Tabelle $main_table_name bereits existiert
if (!table_exists ($main_table_name) || !table_exists ($times_table_name)) {
  echo 
"Notwendige Tabellen existieren noch nicht. <a href=\"$PHP_SELF?create=true\">Tabellen Erstellen!</a>";
  exit;
}

// Werte des aktuellen jahres abfragen
$error false$belegung_year = array();
$query "SELECT * FROM $main_table_name WHERE plan_nr = '$plan_nr' AND YEAR(belegung) = '$year' ";
if (
$result mysql_query($query)) {
  while (
$row mysql_fetch_array ($result)){
    
$belegung_year[] = $row["belegung"];
  }
}
// Sortieren nach dem Initialisieren
asort($belegung_year);

// Daten Speichern
if (!empty ($submit)){
  if (!
is_array($belegung))$belegung = array();
  
// Insert von neuen Werten
  
foreach ($belegung AS $insert_value){
    if (!
in_array($insert_value$belegung_year)){
      
$belegung_year[] = $insert_value;
      
$query "INSERT INTO $main_table_name SET plan_nr = '$plan_nr', belegung = '$insert_value'";
      if (!
mysql_query($query) && !$error) {
        
$error true;
        die (
"Datenbank Fehler: Insert konnte nicht durchgeführt werden. Line: ".__LINE__);
      }
    }
  }

  
// Sortieren nach dem einfügen
  
asort($belegung_year);

  
// Entfernen von unselektierten
  
foreach ($belegung_year AS $delete_value){
    if (!
in_array($delete_value$belegung)){
      
array_splice ($belegung_yeararray_search($delete_value$belegung_year), 1);
      
$query "DELETE FROM $main_table_name WHERE belegung = '$delete_value' AND plan_nr = $plan_nr LIMIT 1";
      if (!
mysql_query($query) && !$error) {
        
$error true;
        die (
"Datenbank Fehler: Delete konnte nicht durchgeführt werden. Line: ".__LINE__);
      }
    }
  }
  
// Letzte Aktualisierung speichern
  
$query "SELECT plan_nr FROM $times_table_name WHERE plan_nr = $plan_nr";
  
$num_rows mysql_num_rows(mysql_query($query));
  if (
$num_rows 0){
    
$query "UPDATE $times_table_name SET last_mod = ".time()." WHERE plan_nr = $plan_nr";
  }else {
    
$query "INSERT INTO $times_table_name SET last_mod = ".time().", plan_nr = $plan_nr";
  }
  if (!
mysql_query($query) && !$error) {
    die (
"Datenbank Fehler: ".(($num_rows 0) ? "Update" "Insert")." konnte nicht durchgeführt werden. Line: ".__LINE__);
  }
}

// Letzte modifikation
$query "SELECT last_mod FROM $times_table_name WHERE plan_nr = $plan_nr";
if (
$result mysql_query($query)){
  while (
$row mysql_fetch_array ($result)){
    
$last_mod get_time($row["last_mod"]);
  }
}
if (empty(
$last_mod)) $last_mod "Nicht Verfügbar";

mysql_close() or die ("Verbindung ist nicht zu");
    
?>
<TABLE border=0 cellPadding=1 cellSpacing=3 class="plankasten">
                                                <TBODY>
                                                        <TR>
                                                                <TD class=<?=$css_leer?> colSpan=32>Reservations for apartment <?=$plan_nr?>
                                                                        (Year:
                                                                        <?=$year?>)</TD>
                                                                </TR>
                                                        <tr>
                                                                <td class=<?=$css_table_header?> width=10>&nbsp;</td>
                                                                <? for ($i 1$i <= 31$i++) {
                                 
$dey = (strlen($i) == 1) ? "0".$i $i?>
                                                                <td class=<?=$css_table_header?>><?=$dey?></td>
                                                                <? ?>
                                                                </tr>
                                                        <? reset($monate);
                            
$mon_nn 0;
                            while (list(
$mon_wn$mon_str) = each($monate)){
                            
$mon_nn++;
                            
$df_class $css_dv1;
                         
?>
                                                        <TR>
                                                                <TD align="right" class=<?=$css_table_header?>><?=$mon_str?></TD>
                                                                <? for ($i 1$i <= 31$i++) {
       
$dey = (strlen($i) == 1) ? "0".$i $i;
       
$datum = (check_date($dey$mon_wn$year)) ? "$year-$mon_wn-$dey" "";
       if (!empty(
$datum)){
         
$timest mktime(000$mon_wn$dey$year);
         
$v_datum date ("Y-m-d"$timest 86400);
         
$n_datum date ("Y-m-d"$timest 86400);

         if(
in_array($datum$belegung_year)){
           
$anreise $abreise false;
           if (!
in_array($v_datum$belegung_year)) {
             
$class $bg_class_anreise;
             
$anreise true;
           }
           if (!
in_array($n_datum$belegung_year)){
             
$class $bg_class_abreise;
             
$abreise true;
           }
           if (!
$anreise && !$abreise){
             
$class $bg_class_verbleiben;
           }
         }else{
           
$class $bg_class_nbelegt;
         }

       }else{
         
$class $bg_class_keintag;
       }
        
?>
                                                                <TD <?=(!empty($class)) ? "class=$class" ""?>>&nbsp;</TD>
                                                                <? ?>
                                                                </TR>
                                                        <? ?>
                                                        </TBODY>
                                                </TABLE>
                                                <TABLE border=0 cellPadding=0 cellSpacing=2 class="plankasten">
                                                        <TR>
                                                                <TD width="56" align="right"  class="kopf">Caption:</TD>
                                                                <TD width="12" class=<?=$bg_class_verbleiben?>>&nbsp;</TD>
                                                                <TD width="50"  class="kopf">Booked</TD>
                                                                <TD width="13" class=<?=$bg_class_nbelegt?>>&nbsp;</TD>
                                                                <TD width="50"  class="kopf">Available</TD>
                                                                <TD width="15" class=<?=$bg_class_nbelegt?>><img src="anreise.gif" width="15" height="25"></TD>
                                                                <TD width="53"  class="kopf">Day of arrival </TD>
                                                                <TD width="15" class=<?=$bg_class_nbelegt?>><img src="abreise.gif" width="15" height="25"></TD>
                                                                <TD width="53"  class="kopf">Day of departure </TD>
                                                           </TR>
                                                   </TABLE>
MrPostman ist offline   Mit Zitat antworten
Alt 22.06.2004, 15:06   #7
TP-Junior
 
Registriert seit: Jun 2004
Ort: Solingen
MrPostman macht alles soweit korrekt
Zitat:
Zitat von PeterBrand
Hat
$plan_nr
Auswirkung auf den Inhalt der include-Datei? Also wird $plan-nr in dieser Datei irgendwie bearbeitet/abgefragt?
Ja, dadurch entsteht dann da verscheidener Inhalt, je nach $plan_nr wird die Datenbank abgefragt.
MrPostman ist offline   Mit Zitat antworten
Alt 22.06.2004, 15:13   #8
TP-Specialist
 
Benutzerbild von PeterBrand
 
Registriert seit: Aug 2001
Ort: Graz
PeterBrand hilft, wo's gehtPeterBrand hilft, wo's gehtPeterBrand hilft, wo's geht
Ich bin jetzt auch nicht der PHP-Pro, aber ich denke genau daran wird´s scheitern, dass er die include-Datei zuerst parst und $plan_nr nicht kennt.

Kann man beim include Variablen übergeben? also ?var=$plan_nr oder so???
__________________
Freedom for Mars!

» Auszeichnung für "KlassenTreffen"...
» zum Kunden des Monats
PeterBrand ist offline   Mit Zitat antworten
Alt 22.06.2004, 15:18   #9
TP-Insider
 
Benutzerbild von loki
 
Registriert seit: May 2003
Ort: Aachen
loki ist auf einem guten Weg
versuchs mal mit global in der include datei..
vielleicht bringt das ja was
__________________
"Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
Einstein

loki ist offline   Mit Zitat antworten
Alt 22.06.2004, 15:30   #10
TP-Junior
 
Registriert seit: Jun 2004
Ort: Solingen
MrPostman macht alles soweit korrekt
Zitat:
Zitat von loki
versuchs mal mit global in der include datei..
vielleicht bringt das ja was
Was meinst du damit? Globale Variablen?

Kenn mich doch nciht aus..

Geändert von MrPostman (22.06.2004 um 15:36 Uhr).
MrPostman ist offline   Mit Zitat antworten
Alt 22.06.2004, 15:35   #11
TP-Junior
 
Registriert seit: Jun 2004
Ort: Solingen
MrPostman macht alles soweit korrekt