Archiv verlassen und diese Seite im Standarddesign anzeigen : WHILE in WHILE-Schleife
schlodd
24.07.2004, 19:50:27
hallöchen an alle, ich möchte gern auf meine Seite einen Eventkalender haben,
der beim ersten Aufruf wie auf meiner jetzigen Seite (http://schlodd.bei.t-online.de/jul04.htm) zu sehen ist, aussieht.
Problem ist dass nur das erstgefunde Datum mit den dazugehörigen Datensätzen
ausgegeben wird. Ergebnis soll sein: Eine HTML-Tabelle mit einer Spalte
Zelle 1 erstgefundes Datum
Zelle 2 alle Datensätze mit erstgefunden Datum
Zelle 3 2.nächsteses Datum
Zelle 4 alle Datensätze mit 2.nächsteses Datum usw.
ich hoffe ihr könnt mir wiedermal helfen und bedank mich schonmal im Voraus für alles
fecho "<table cellspacing="0" cellpadding="2" border="0" class="text1">";
$sql = "SELECT DISTINCT dates FROM tour WHERE dates>='$today' ORDER BY dates";
$result = mysql_query($sql, $db);
while($row = mysql_fetch_array($result)){// while die1.
$datrow=$row['dates'];
echo "<tr><td bgcolor="#000000"><font color="#FF9900"><b>".$datrow."</b></font></td></tr>n<tr><td>";
$sql = "SELECT * FROM tour WHERE dates='$datrow' ORDER BY dates"; //waehlt alle nach ausgew. event und sortiert nach datum ab heutigen Tag
$result = mysql_query($sql, $db);
while($row = mysql_fetch_array($result)){// while die2.
echo $row['dates']." *".$row['a01'];
if ($row['a02'] !='') {echo ", ".$row['a02'];} if ($row['a03'] !='') {echo ", ".$row['a03'];}
echo " in ". $row['country']." ".$row['place'];
if ($row['venue'] != '') { echo " / ".$row['venue'];}
echo "<br>n";
}//2.while_end
echo "</td></tr>n";
}//1.while_end
echo "</table>";
error_reporting(E_ALL);
xabbuh
25.07.2004, 16:43:35
Original geschrieben von schlodd
Ergebnis soll sein: Eine HTML-Tabelle mit einer Spalte
Zelle 1 erstgefundes Datum
Zelle 2 alle Datensätze mit erstgefunden Datum
Zelle 3 2.nächsteses Datum
Zelle 4 alle Datensätze mit 2.nächsteses Datum usw.
1. Erklär mal bitte genauer, wie das Ergebnis aussehen soll. Was soll Zelle 1, Zelle 2 etc. bedeuten, wenn du eine Tabelle mit nur einer Spalte haben möchtest?
2. Du hast ja schon einen Auszug aus deinem Script gepostet. Ein übersichtlicherer Programmierstil wäre da nicht schlecht. Also so:
<?php
echo "<table cellspacing="0" cellpadding="2" border="0" class="text1">";
$sql = "SELECT
DISTINCT dates
FROM
tour
WHERE
dates>='$today'
ORDER BY
dates";
$result = mysql_query($sql, $db);
while($row = mysql_fetch_array($result)) {
$datrow=$row['dates'];
echo "<tr><td bgcolor="#000000"><font color="#FF9900"><b>" . $datrow . "</b></font></td></tr>n<tr><td>";
$sql = "SELECT
*
FROM
tour
WHERE
dates='$datrow'
ORDER BY
dates";
$result = mysql_query($sql, $db);
while($row = mysql_fetch_array($result)) {
echo $row['dates']." *".$row['a01'];
if($row['a02'] !='') {
echo ", ".$row['a02'];
}
if($row['a03'] !='') {
echo ", ".$row['a03'];
}
echo " in " . $row['country'] . " " . $row['place'];
if ($row['venue'] != '') {
echo " / ".$row['venue'];
}
echo "<br>n";
}
echo "</td></tr>n";
}
echo "</table>";
error_reporting(E_ALL);
?>
Schau dir dazu am besten auch mal diese Seiten an:
PEAR: Coding Standards (http://pear.php.net/manual/de/standards.php)
tut.php-q.net: MySQL-Querys einrücken (http://tut.php-q.net/mysql-einrueck.html)
3. Was für Fehlermeldungen erhälst du bzw. was macht dein Script nicht so, wie du es willst?
schlodd
25.07.2004, 22:59:10
...danke xabbuh dass Du Dich meiner annimmst. Ja ich weiß, mein
Schreibstil ist schlecht bzw. gar kein Programmierstil. Ich hab´s gern
enger zusammenstehend, damit ich nicht so oft scrollen muss.
zu Deiner Frage (1. Erklär mal bitte genauer, wie das Ergebnis
aussehen soll. Was soll Zelle 1, Zelle 2 etc. bedeuten, wenn
du eine Tabelle mit nur einer Spalte haben möchtest?):
Die Nummerierung der Tabellenzellen ist jetzt nur zur Erläuterung...
<table>
Zelle 1 <tr><td>Ausgabe des ersten Datums</td></tr>
Zelle 2 <tr><td>Ausgabe aller Datensätze die mit dem Datum in "Zelle 1" übereinstimmen</td></tr>
Zelle 3 <tr><td>Ausgabe des nächsten Datums</td></tr>
Zelle 4 <tr><td>Ausgabe aller Datensätze die mit dem Datum in "Zelle 3" übereinstimmen</td></tr> usw.
zu Deiner Frage 3. Was für Fehlermeldungen erhälst du bzw. was macht
dein Script nicht so, wie du es willst?:
keine Fehlermeldungen erhalten.
das Script gibt nicht alle Datensätze aus
ich bekomme nur die Zellen 1 und 2 anstatt für alle Datensätze
die restlichen Zellen wie oben Bsp. beschrieben.
ich hoffe dass man das Problem lösen kann und bitte um weitere Hilfe!
xabbuh
26.07.2004, 12:59:47
Ich habe mir deinen Quelltext mal ein wenig genauer zu Gemüte geführt und einige Stellen, die ich für nicht so gelungen halte, mit Kommentare versehen:
<?php
echo "<table cellspacing="0" cellpadding="2" border="0" class="text1">";
$sql = "SELECT
DISTINCT dates
FROM
tour
WHERE
dates>='$today'
ORDER BY
dates";
$result = mysql_query($sql, $db);
while($row = mysql_fetch_array($result)) {
$datrow=$row['dates'];
echo "<tr><td bgcolor="#000000"><font color="#FF9900"><b>" . $datrow . "</b></font></td></tr>n<tr><td>";
$sql = "SELECT
*
FROM
tour
WHERE
dates='$datrow'
ORDER BY
dates"; //<-- Nach Datum sortieren ist hier falsch, da eh alle Daten gleich sind, mach lieber ORDER BY id, falls du dieses Feld hast
$result = mysql_query($sql, $db);
while($row = mysql_fetch_array($result)) { //<-- $row als Name für das Array ist schlecht, $row ist schon der Arrayname der ersten Schleife, die erste Schleife kann somit nicht mehr weiter ausgeführt werden, für die 2 Schleife würde ich $row2 als Arraynamen empfehlen
echo $row['dates']." *".$row['a01'];
if($row['a02'] !='') {
echo ", ".$row['a02'];
}
if($row['a03'] !='') {
echo ", ".$row['a03'];
}
echo " in " . $row['country'] . " " . $row['place'];
if ($row['venue'] != '') {
echo " / ".$row['venue'];
}
echo "<br>n";
}
echo "</td></tr>n";
}
echo "</table>";
error_reporting(E_ALL);
?>
Wenn du nun die entsprechenden $row auf $row2 änderst, sollte es funktionieren.
schlodd
27.07.2004, 22:22:51
Vielen Dank xabbuh, auf die Idee wäre ich nie und nimmer gekommen. Die $result-Variablen musste ich auch noch ändern und jetzt funktionierts ;-)
Hast auch Recht bei der 2. Datenbankabfrage, muss natürlich ein anderes Kriterium als dates rein.
Danke nochmal vielmals
vBulletin® v3.8.3, Copyright ©2000-2024, Jelsoft Enterprises Ltd.