CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
02.04.2006, 00:47:53
|
Anfänger
|
|
Registriert seit: Jan 2005
Beiträge: 33
|
|
Falsche Schleife - Kalender
Ich habe ein kleines Problem mit einer Schleife in einem Kalender-Skript. Es läuft eigentlich alles ganz gut. Bis auf eine kleine Kleinigkeit. Wenn ich derzeit eine DB-Abfrage mache und schaue ob Termine für einen Monat vorliegen, dann wird für jeden Tag ein Link generiert.
Aber: Wenn z.B. in Monat April ein Termin ist, dann wird die Tabelle mit dem Kalender erstellt und der Tag mit dem Termin als Link dargestellt. Wenn ich aber in einem Monat zwei (oder mehr) Termine habe, dann wird meine Monats-Übersicht entsprechend der Anzahl der Termine vermehrt. Bei zwei Terminen sähe die Tabelle so aus, dass zweimal der Erste, zweimal der Zweite, zweimal der Dritte etc. erstellt würde. Ich weiß, dass der Fehler in der for-Schleife liegt, weiß aber nicht, wie es richtig lauten muss. Jemand einen Tipp?
PHP-Code:
$sqlab = "select titel, tstamp, ID from kalender where monat = '$dynmon'";
$res = mysql_db_query($db_name, $sqlab);
$num = mysql_num_rows($res);
(...)
//abfrage ob ein link generiert werden soll
if($num != 0){
for ($a=0; $a<$num; $a++){
$header = mysql_result($res, $a, "titel");
$nummer = mysql_result($res, $a, "ID");
if($i == date("d",mysql_result($res,$a,"tstamp"))){
echo "\t<td><a href=\"".$_SERVER['PHP_SELF']."?num=".$nummer."\" title=\"".$header."\">".$i."</a></td>\n";
} else {
echo "\t<td>$i</td>\n";
}
}
} else {
echo "\t<td>$i</td>\n";
}
//ende link-abfrage
Danke im voraus und einen schönen stressfreien Sonntag. :-)
Grüße
G.
__________________
<Meine Ankunft war zeitlich schlecht gewählt!>
|
02.04.2006, 09:00:26
|
Junior Member
|
|
Registriert seit: Apr 2005
Beiträge: 309
|
|
AW: Falsche Schleife - Kalender
Mach doch eine SQL-Abfrage in einer Schleife von 1-12 (Monate):
PHP-Code:
$sqlab = "select titel, tstamp, ID from kalender where monat = '$a'";
oder wäre das Deine ominöse $dynmon ??
Dann verstehe ich nicht, wieso überhaupt noch eine Schleife kommt...
Deine Schleife macht doch nix anderes als für jedes gefundene Element, also jeden Eintrag für April, eine Ausgabe zu erzeugen...
|
02.04.2006, 09:41:10
|
Anfänger
|
|
Registriert seit: Jan 2005
Beiträge: 33
|
|
AW: Falsche Schleife - Kalender
Moin.
Also das $dynmon ist schon richtig. Es soll ja immer nur ein Monat angezeigt werden. Um welchen es sich dabei handelt, wird vorher in $dynmon festgelegt. Und wie gesagt. Wenn ein Termin vorhanden ist, dann wird der Monat auch richtig angezeigt. Wenn kein Termin vorhanden ist, rutscht er in das letzte ELSE hinein und die Tabelle wird ebenfalls richtig erstellt.
Ich muss doch alle wichtigen Daten (ID, tstamp und titel in diesem Fall) für den ermittelten Monat ($dynmon) aus der DB auslesen. Und dann schaue ich, ob der Tag (1,2,3 etc) in dem ausgewählten tstamp enthalten ist. Wenn, dann soll ein Link generiert werden, wenn nicht, dann einfach nur eine Ausgabe des Tages.
Nur die Aktion mit dem $num verwirrt... Hier noch einmal der Code für die gesamte Monats-Tabelle:
PHP-Code:
$sqlab = "select titel, tstamp, ID from kalender where monat = '$dynmon'";
$res = mysql_db_query($db_name, $sqlab);
$num = mysql_num_rows($res);
// SQL-Ende
// Leere Zellen ausgeben, bis zum ersten Tag des Monats
for ($j=1; $j<$first_wd; $j++) { echo "\t\n<td class='d'> </td>\n"; }
for ($i=1; $i<=$last; $i++){
$x=$wd[date("w", mktime(0,0,0,$dynmon,$i,$dynjahr))]; // ermitteln des Wochentages
$bo="d0"; // definition des Standard-Style
if ($x=="So") { $bo="d1"; } // Einfaerbung des Sonntages
if ($i==$akt && $dynmon==$mon) { $bo="d2"; } // Einfaerbung des aktuellen Tages wenn Tag und Monat mit aktuellem Tag uebereinstimmen
//abfrage ob ein link generiert werden soll
if($num != 0){
for ($a=0; $a<$num; $a++){
$header = mysql_result($res, $a, "titel");
$nummer = mysql_result($res, $a, "ID");
if($i == date("d",mysql_result($res,$a,"tstamp"))){
echo "\t<td class='$bo'><a href=\"".$_SERVER['PHP_SELF']."?num=".$nummer."\" title=\"".$header."\">".$i."</a></td>\n";
} else {
echo "\t<td class='$bo'>$i</td>\n";
}
}
} else {
echo "\t<td class='$bo'>$i</td>\n";
}
//ende link-abfrage
if ($x=="So") echo "</tr>\n<tr>"; // Am Sonntag endet die jeweilige Zeile
}
echo "</tr></table>\n";
Acht neue graue Haare habe ich schon bekommen. :-(
__________________
<Meine Ankunft war zeitlich schlecht gewählt!>
|
03.04.2006, 13:10:10
|
Anfänger
|
|
Registriert seit: Jan 2005
Beiträge: 33
|
|
AW: Falsche Schleife - Kalender
So. Die Aktion, dass mir der Monat mehrfach ausgegeben wird habe ich erst einmal verhindert. Dafür habe ich aber den Preis zahlen müssen, dass bei einem Monat mit mehr als einem Eintrag trotzdem nur ein Link generiert wird. Hier einmal verkürzt ($dynmon wird normalerweise dynamisch erzeugt...):
PHP-Code:
<?php
$dynmon = "3";
//SQL
include ('mySQL.inc.php');
$conn = mysql_connect($db_server,$db_user,$db_passwort) or die (mysql_error());
$link = mysql_select_db($db_name, $conn) or die (mysql_error());
$sqlab = "select tag, titel, ID from kalender where monat = '$dynmon'";
$res = mysql_db_query($db_name, $sqlab);
// SQL-Ende
$row = mysql_fetch_array($res);
for ($i=1; $i<=30; $i++){
if($i==$row['tag']){
echo "<a href=\"".$_SERVER['PHP_SELF']."?num=".$row['ID']."\" title=\"".$row['titel']."\">".$i."</a><br>";
} else {
echo "Keine Übereinstimmungen gefunden. $i<br>";
}
}
?>
Die Ausgabe sieht bei einem vorhandenen Ereignis pro Monat genauso aus, wie bei einem Monat mit mehreren Ereignissen: es wird nur ein Link generiert.
Wie bekomme ich es also hin, dass für jeden Tag des Monats geschaut wird, ob der Tag ein Ereignis hat? Wenn, dann Link, wenn nicht, dann nur Tageszahl anzeigen. Ich bekomme es einfach nicht hin... :-(
__________________
<Meine Ankunft war zeitlich schlecht gewählt!>
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 12:32:36 Uhr.
|