 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
22.06.2004, 14:33
|
#1
|
|
TP-Junior
Registriert seit: Jun 2004
Ort: Solingen
|
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?
|
|
|
22.06.2004, 14:48
|
#2
|
|
TP-Insider
Registriert seit: May 2003
Ort: Aachen
|
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
|
|
|
22.06.2004, 14:51
|
#3
|
|
TP-Junior
Registriert seit: Jun 2004
Ort: Solingen
|
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;
|
|
|
22.06.2004, 14:54
|
#4
|
|
TP-Insider
Registriert seit: May 2003
Ort: Aachen
|
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
|
|
|
22.06.2004, 14:58
|
#5
|
|
TP-Specialist
Registriert seit: Aug 2001
Ort: Graz
|
Hat
$plan_nr
Auswirkung auf den Inhalt der include-Datei? Also wird $plan-nr in dieser Datei irgendwie bearbeitet/abgefragt?
|
|
|
22.06.2004, 15:00
|
#6
|
|
TP-Junior
Registriert seit: Jun 2004
Ort: Solingen
|
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ä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(0, 0, 0, $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_year, array_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> </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(0, 0, 0, $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" : ""?>> </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?>> </TD>
<TD width="50" class="kopf">Booked</TD>
<TD width="13" class=<?=$bg_class_nbelegt?>> </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>
|
|
|
22.06.2004, 15:06
|
#7
|
|
TP-Junior
Registriert seit: Jun 2004
Ort: Solingen
|
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.
|
|
|
22.06.2004, 15:13
|
#8
|
|
TP-Specialist
Registriert seit: Aug 2001
Ort: Graz
|
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???
|
|
|
22.06.2004, 15:18
|
#9
|
|
TP-Insider
Registriert seit: May 2003
Ort: Aachen
|
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
|
|
|
22.06.2004, 15:30
|
#10
|
|
TP-Junior
Registriert seit: Jun 2004
Ort: Solingen
|
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).
|
|
|
22.06.2004, 15:35
|
#11
|
|
TP-Junior
Registriert seit: Jun 2004
Ort: Solingen
|
| | |