Komplexe MySQL Abfrage & PHP Darstellung
Komplexe MySQL Abfrage & PHP Darstellung
hi,
bei meinem Versuch meine Vorstellung umzusetzen bin ich kläglich gescheitert :-(
Folgendes will ich machen:
Ich habe eine Tabelle wo ca. 300 Datensätze drin sind. Unteranderem die Spalte "UrlaubsUnterkunft".
Ich lese nun die Tabell aus und lasse nach "UrlaubsUnterkunft" Sortieren. Was ohne weiteres klappt. bun will ich die ausgelesenen Daten in eine Tabelle darstellen. Mit einem Hacken!
z.B. Alle Datensätze mit $UrlaubsUnterkunft = "HotelA" sollen in einen "kasten" Tabelle. Darunter alle Datensätze mit $UrlaubsUnterkunft = "HotelB" in einem getreten kasten / Tabelle von HotelA.
Die beiden "Kästen" Sollen jeweils die Ã?berschrifft HotelA bzw. HotelB haben.
wäre dankbar für eine erleuchtung.
lg
Andreas
bei meinem Versuch meine Vorstellung umzusetzen bin ich kläglich gescheitert :-(
Folgendes will ich machen:
Ich habe eine Tabelle wo ca. 300 Datensätze drin sind. Unteranderem die Spalte "UrlaubsUnterkunft".
Ich lese nun die Tabell aus und lasse nach "UrlaubsUnterkunft" Sortieren. Was ohne weiteres klappt. bun will ich die ausgelesenen Daten in eine Tabelle darstellen. Mit einem Hacken!
z.B. Alle Datensätze mit $UrlaubsUnterkunft = "HotelA" sollen in einen "kasten" Tabelle. Darunter alle Datensätze mit $UrlaubsUnterkunft = "HotelB" in einem getreten kasten / Tabelle von HotelA.
Die beiden "Kästen" Sollen jeweils die Ã?berschrifft HotelA bzw. HotelB haben.
wäre dankbar für eine erleuchtung.
lg
Andreas
Re: Komplexe MySQL Abfrage & PHP Darstellung
ich blicks noch nicht genau wie du es willst, ein kleines Beispiel wäre nett
Re: Komplexe MySQL Abfrage & PHP Darstellung
Beispiel:
3 Datensätze HotelA
#Tabelle 1
HotelA
termin 1
termin 2
termin 3
# nächste tabelle HotelB mit 2 Datensätze
HotelB
Termin1
Termin2
Diese Datensätze sind alle in einer Tabelle. sollen nun von A-Z sortiert werden dabei sollen alle Termin zu A in einer Tabelle sein und alle Termine von B inder darauf folgende etc.
und das alles mit evtl. (max.) zwei Abfragen per Mysql .....
Köntte natürlich folgendes machen: ich frage ersteinmal alle $UrlaubsUnterkunft ab habe in unserem Beispiel zwei Ergebenise HotelA und HotelB dnach kännte man hergehen und den sql nach HotelA bzw HotelB abfragen und in der schleife alle termin zugehörig zu A bzw B ..... was ich allerdings für schwachsinnig halte.
lg
Andreas
3 Datensätze HotelA
#Tabelle 1
HotelA
termin 1
termin 2
termin 3
# nächste tabelle HotelB mit 2 Datensätze
HotelB
Termin1
Termin2
Diese Datensätze sind alle in einer Tabelle. sollen nun von A-Z sortiert werden dabei sollen alle Termin zu A in einer Tabelle sein und alle Termine von B inder darauf folgende etc.
und das alles mit evtl. (max.) zwei Abfragen per Mysql .....
Köntte natürlich folgendes machen: ich frage ersteinmal alle $UrlaubsUnterkunft ab habe in unserem Beispiel zwei Ergebenise HotelA und HotelB dnach kännte man hergehen und den sql nach HotelA bzw HotelB abfragen und in der schleife alle termin zugehörig zu A bzw B ..... was ich allerdings für schwachsinnig halte.
lg
Andreas
Re: Komplexe MySQL Abfrage & PHP Darstellung
also entweder bin ich grad völlig benebelt oder es ist nicht ganz so durchsichtig beschrieben:
ist das
wenn nein, wie sieht die Orginaltable aus, aus der du die Daten holst ?
das ist ja anscheinend nur eine Tabelle
ist das
schon die Ausgabe ?#Tabelle 1
HotelA
termin 1
termin 2
termin 3
wenn nein, wie sieht die Orginaltable aus, aus der du die Daten holst ?
das ist ja anscheinend nur eine Tabelle
Diese Datensätze sind alle in einer Tabelle
Re: Komplexe MySQL Abfrage & PHP Darstellung
sorry liegt warscheinlich drann das ich es selber noch nicht so genau weiß wie :-)
hier der Link:
http://www.christ-online.de/modules.php?name=Freizeiten
du siehst in der Mitte eine Tabelle mit Datensätzen die man oben (über der Tabelle) Sortieren kann. Es geht mir um das Sortier kreterium Unterkunft.
DAs soll dann dargestellt werden wie zuvor beschrieben. ich nutze den begriff tabelle für die HTML Tabelle und nicht für die DB.
lg
Andreas
hier der Link:
http://www.christ-online.de/modules.php?name=Freizeiten
du siehst in der Mitte eine Tabelle mit Datensätzen die man oben (über der Tabelle) Sortieren kann. Es geht mir um das Sortier kreterium Unterkunft.
DAs soll dann dargestellt werden wie zuvor beschrieben. ich nutze den begriff tabelle für die HTML Tabelle und nicht für die DB.
lg
Andreas
Re: Komplexe MySQL Abfrage & PHP Darstellung
okay, jetzt blick ichs
*freu*
also ein wenig Pseudocode:
*freu*
also ein wenig Pseudocode:
Code: Select all
while($zeile = mysql_fetch_array($result)) {
if (strcmp(zeile['Unterkunft'], $AktuelleUnterkunft) != 0) {
if (strcmp($AktuelleUnterkunft, '') != 0) {
echo('</table>');
}
$AktuelleUnterkunft = zeile['Unterkunft'];
echo('<table>');
}
// hier den rest ausgeben
}
Re: Komplexe MySQL Abfrage & PHP Darstellung
werde es ausprobieren. muss nur zu einer Vorlesung. deshalb heute abend / morgen es testen :-)
lg
Andreas
lg
Andreas
Re: Komplexe MySQL Abfrage & PHP Darstellung
danke es geht!.... schau es dir an ....
lg
Andreas
lg
Andreas
Re: Komplexe MySQL Abfrage & PHP Darstellung
habe da ein problem :-(
wenn z.B. keine Unterkunft angeben ist was dann?
und es werden alle angaben zweimal angezeigt .... :-(
lg
Andreas
wenn z.B. keine Unterkunft angeben ist was dann?
und es werden alle angaben zweimal angezeigt .... :-(
lg
Andreas
Re: Komplexe MySQL Abfrage & PHP Darstellung
hast du es schon selber gelöst ?
wenn nein wo tritt der Fehler auf ?
(beim überfliegen der Seite ist es mir nicht aufgefallen)
wenn nein wo tritt der Fehler auf ?
(beim überfliegen der Seite ist es mir nicht aufgefallen)
Re: Komplexe MySQL Abfrage & PHP Darstellung
wenn du unter:
http://www.christ-online.de/modules.php?name=Freizeiten
das Sortierelement "Unterkunft" wählst.
werden alle "Unterkünfte" doppelt angezeigt.
lg
Andreas
http://www.christ-online.de/modules.php?name=Freizeiten
das Sortierelement "Unterkunft" wählst.
werden alle "Unterkünfte" doppelt angezeigt.
lg
Andreas
Re: Komplexe MySQL Abfrage & PHP Darstellung
mal ne frage: warum willst du das ganze mit nur max. 2 Datenbankabfragen lösen ?
Ich arbeite immer so, dass die Rechenarbeit die Datenbank macht und nicht das letzendliche Script. Gut teilweise sind mehr Datenbankabfragen von nöten aber bei Größeren Datenbanken lohnt sich dass auch.
Und es ist im PHP - Code sauberer und übersichtlicher ;o)
Ich arbeite immer so, dass die Rechenarbeit die Datenbank macht und nicht das letzendliche Script. Gut teilweise sind mehr Datenbankabfragen von nöten aber bei Größeren Datenbanken lohnt sich dass auch.
Und es ist im PHP - Code sauberer und übersichtlicher ;o)
Re: Komplexe MySQL Abfrage & PHP Darstellung
das dürfte eigentlich nicht sein...
wenn du im deiner SQL abfrage als Hauptsortierkriterium 'Unterkunft' hast (und keine doppelten Einträge in der Datenbank vorliegen <- wobei selbst das nicht so dem Ergebnis auf deiner Page führt)
Wenn es nicht zu lange ist kannste das script ja mal posten
wenn du im deiner SQL abfrage als Hauptsortierkriterium 'Unterkunft' hast (und keine doppelten Einträge in der Datenbank vorliegen <- wobei selbst das nicht so dem Ergebnis auf deiner Page führt)
Wenn es nicht zu lange ist kannste das script ja mal posten
Re: Komplexe MySQL Abfrage & PHP Darstellung
Auszug aus dem Script .... befindet sich in einer SWITCH Schleife:
lg
andreas
Code: Select all
case "unterkunft":
$qry_1="SELECT * FROM ".$prefix."_freizeiten
WHERE (eventDate>= '$qrydate' or endDate>= '$qrydate')
$whereoption
order by eventDate asc, endDate asc limit 0,$icount";
//echo $qry_1;
$result_1=sql_query($qry_1, $dbi);
while($zeile = sql_fetch_array($result_1, $dbi)) {
// echo $zeile[unterkunft]."<br>";
if (strcmp($zeile['unterkunft'], $AktuelleUnterkunft) != 0) {
if (strcmp($AktuelleUnterkunft, '') != 0) {
echo('</table>');
}
$AktuelleUnterkunft = $zeile['unterkunft'];
echo "<br><br><b>Unterkunft: $AktuelleUnterkunft</b><br>";
echo "<table width="100%" border="$listtableborder" cellspacing="$listtablecellspacing" cellpadding="$listtablecellpadding" bgcolor="$listbordercolor" bordercolor="$listbordercolor">";
echo "<tr bgcolor="$listheadbgcolor"><td colspan="3" valign="middle"><font color="$listheadtxtcolor" class="content"><b>"._FREVENTDATETEXT."</b></font></td><td valign="middle"><font color="$listheadtxtcolor" class="content"><b>"._FRSUBTITLE."</b></font>";
echo "</td></tr>";
$qry_2="SELECT eid, aid, title, time, hometext, topic, informant, year(eventDate), month(eventDate), dayofmonth(eventDate), hour(startTime), minute(startTime), year(endDate), month(endDate), dayofmonth(endDate), hour(endTime), minute(endTime), alldayevent, barcolor
FROM ".$prefix."_freizeiten
WHERE (eventDate>= '$qrydate' or endDate>= '$qrydate') $whereoption AND unterkunft='$AktuelleUnterkunft'
order by eventDate asc ";
$result_2=sql_query($qry_2, $dbi);
while(list($eid, $postadmin, $subject, $datePosted, $hometext, $topic, $informant, $y1, $m1, $d1, $h1, $mi1, $y2, $m2, $d2, $h2, $mi2, $alldayevent, $barcolor) = sql_fetch_row($result_2, $dbi)) {
//HIERR
// echo "<tr><td colspan="4">UNTERKUNFT: $unterkunft</td></tr>";
if ($hometext){
$hometext= "$hometext";
}
else {
$hometext= "";
}
$dateStart = strftime(""._FRSHORTDATEFORMAT."", mktime(0, 0, 0, $m1, $d1, $y1));
if ($callistStarttime && !$alldayevent) {
$dateStart.= "<br>".strftime(""._FRTIMEFORMAT."", mktime($h1, $mi1, 0, $m1, $d1, $y1));
}
$dateEnd = strftime(""._FRSHORTDATEFORMAT."", mktime(0, 0, 0, $m2, $d2, $y2));
if ($callistEndtime && !$alldayevent) {
$dateEnd.= "<br>".strftime(""._FRTIMEFORMAT."", mktime($h2, $mi2, 0, $m2, $d2, $y2));
}
$popuptext = " onMouseover="pop('".valueToText($subject)."','".valueToText($hometext)."')" onMouseout="kill()"";
if ($i==0) { $bgcolornew=$listbgcolor1; $txtcolornew=$listtxtcolor1; $i=1; }
else { $bgcolornew=$listbgcolor2; $txtcolornew=$listtxtcolor2; $i=0; }
echo "<tr bgcolor="$bgcolornew">
<td align="center" nowrap><font color="$txtcolornew" class="content">$dateStart</font></td>
<td align="center"><font color="$txtcolornew" class="tiny">"._FRLISTRANGE."</font></td>
<td align="center" nowrap><font color="$txtcolornew" class="content">$dateEnd</font></td>
<td><font color="$txtcolornew" class="content">";
if ($caladmin){
echo "<a href="admin.php?op=FreizeitenRemoveEvent&eid=$eid"><img src="$calimagepath/delete.gif" alt=""._FRDELETESTORY."" width="20" height="16" border="0" align="right"></a><a href="admin.php?op=FreizeitenEditEvent&eid=$eid"><img src="$calimagepath/edit.gif" alt=""._EDIT."" width="19" height="17" border="0" align="right"></a>";
}
echo "&<a href="modules.php?op=modload&name=$module_name&file=index&type=view&eid=$eid" $popuptext>$subject</a>
</font></td></tr>";
$morelink="modules.php?op=modload&name=$module_name&file=index&type=list&d=$d1&m=$m1&y=$y1&col=$col";
}
}
} // erste while schleife
//sql_free_result($result);
//sql_free_result($result_1);
echo "</table>";
break;andreas
Re: Komplexe MySQL Abfrage & PHP Darstellung
okay,
du musst es als hauptsortierkriterium bei der select anfrage unterkunft nehmen und qals zweitkriterium date
du musst es als hauptsortierkriterium bei der select anfrage unterkunft nehmen und qals zweitkriterium date
Re: Komplexe MySQL Abfrage & PHP Darstellung
sorry meine Tochter, Hanna Danielle ist am Freitag gebohren. werde deshalb mich in 1 bis 2 wochen drum kümmern :-)
lg
Andreas
lg
Andreas
Re: Komplexe MySQL Abfrage & PHP Darstellung
alles klar....
herzlichen Glückwunsch :)
bis in ein paar Wochen dann
herzlichen Glückwunsch :)
bis in ein paar Wochen dann
Re: Komplexe MySQL Abfrage & PHP Darstellung
so da bin ich wieder ... leider hat die abfrage durch de veränderrung des sql nicht bewirkt.
http://www.christ-online.de/modules.php?name=Freizeiten
Problem ist die "Freizeiten" ohne angabe zu Unterkunft nicht in einem Block gezeigt werden :-(
Gruß
Andreas
http://www.christ-online.de/modules.php?name=Freizeiten
Problem ist die "Freizeiten" ohne angabe zu Unterkunft nicht in einem Block gezeigt werden :-(
Gruß
Andreas
Re: Komplexe MySQL Abfrage & PHP Darstellung
also erstmal ist es a weng komisch, dass zu 2 Datenbankabfragen verwendest... Das leuchtet mir nicht ein
mit dieser Query bekommst du doch eine Tabelle zurück in der alle Infos drinnenstehen, die du zur Ausgabe brauchst (beim query muss nach 'unterkunft' als Hauptkriterium sortiert werden - das ist noch nicht drinnen)
neuer Query:
Code: Select all
$qry_1="SELECT * FROM ".$prefix."_freizeiten
WHERE (eventDate>= '$qrydate' or endDate>= '$qrydate')
$whereoption
order by eventDate asc, endDate asc limit 0,$icount";
neuer Query:
Code: Select all
$qry_1="SELECT * FROM ".$prefix."_freizeiten
WHERE (eventDate>= '$qrydate' or endDate>= '$qrydate')
$whereoption
order by unterkunft asc, eventDate asc, endDate asc limit 0,$icount";
Re: Komplexe MySQL Abfrage & PHP Darstellung
ich habe zwei sql gemacht ein mal wegen der darstellung der verschiedenen Unterkünfte und zum anderen wegen der ordnung der freizeiten innerhalb der Unterkünft ... hier de aktuelle code ...
vielen dank für deine ausdauerende Hilfe .... ein selten heit :-)
Gruss
Andreas Buis
Code: Select all
$qry_1="SELECT * FROM ".$prefix."_freizeiten
WHERE (eventDate>= '$qrydate' or endDate>= '$qrydate')
$whereoption
order by unterkunft asc";
//echo $qry_1;
$result_1=sql_query($qry_1, $dbi);
while($zeile = sql_fetch_array($result_1, $dbi)) {
// echo $zeile[unterkunft]."<br>";
if (strcmp($zeile['unterkunft'], $AktuelleUnterkunft) != 0) {
if (strcmp($AktuelleUnterkunft, '') != 0) {
echo('</table>');
}
$AktuelleUnterkunft = $zeile['unterkunft'];
echo "<br><br><b>Unterkunft: $AktuelleUnterkunft</b><br>";
echo "<table width="100%" border="$listtableborder" cellspacing="$listtablecellspacing" cellpadding="$listtablecellpadding" bgcolor="$listbordercolor" bordercolor="$listbordercolor">";
echo "<tr bgcolor="$listheadbgcolor"><td colspan="3" valign="middle"><font color="$listheadtxtcolor" class="content"><b>"._FREVENTDATETEXT."</b></font></td><td valign="middle"><font color="$listheadtxtcolor" class="content"><b>"._FRSUBTITLE."</b></font>";
echo "</td></tr>";
$qry_2="SELECT eid, aid, title, time, hometext, topic, informant, year(eventDate), month(eventDate), dayofmonth(eventDate), hour(startTime), minute(startTime), year(endDate), month(endDate), dayofmonth(endDate), hour(endTime), minute(endTime), alldayevent, barcolor
FROM ".$prefix."_freizeiten
WHERE unterkunft='$AktuelleUnterkunft' AND (eventDate>= '$qrydate' or endDate>= '$qrydate') $whereoption
order by unterkunft asc, eventDate asc ";
$result_2=sql_query($qry_2, $dbi);
while(list($eid, $postadmin, $subject, $datePosted, $hometext, $topic, $informant, $y1, $m1, $d1, $h1, $mi1, $y2, $m2, $d2, $h2, $mi2, $alldayevent, $barcolor) = sql_fetch_row($result_2, $dbi)) {
//HIERR
// echo "<tr><td colspan="4">UNTERKUNFT: $unterkunft</td></tr>";
if ($hometext){
$hometext= "$hometext";
}
else {
$hometext= "";
}
$dateStart = strftime(""._FRSHORTDATEFORMAT."", mktime(0, 0, 0, $m1, $d1, $y1));
if ($callistStarttime && !$alldayevent) {
$dateStart.= "<br>".strftime(""._FRTIMEFORMAT."", mktime($h1, $mi1, 0, $m1, $d1, $y1));
}
$dateEnd = strftime(""._FRSHORTDATEFORMAT."", mktime(0, 0, 0, $m2, $d2, $y2));
if ($callistEndtime && !$alldayevent) {
$dateEnd.= "<br>".strftime(""._FRTIMEFORMAT."", mktime($h2, $mi2, 0, $m2, $d2, $y2));
}
$popuptext = " onMouseover="pop('".valueToText($subject)."','".valueToText($hometext)."')" onMouseout="kill()"";
if ($i==0) { $bgcolornew=$listbgcolor1; $txtcolornew=$listtxtcolor1; $i=1; }
else { $bgcolornew=$listbgcolor2; $txtcolornew=$listtxtcolor2; $i=0; }
echo "<tr bgcolor="$bgcolornew">
<td align="center" nowrap><font color="$txtcolornew" class="content">$dateStart</font></td>
<td align="center"><font color="$txtcolornew" class="tiny">"._FRLISTRANGE."</font></td>
<td align="center" nowrap><font color="$txtcolornew" class="content">$dateEnd</font></td>
<td><font color="$txtcolornew" class="content">";
if ($caladmin){
echo "<a href="admin.php?op=FreizeitenRemoveEvent&eid=$eid"><img src="$calimagepath/delete.gif" alt=""._FRDELETESTORY."" width="20" height="16" border="0" align="right"></a><a href="admin.php?op=FreizeitenEditEvent&eid=$eid"><img src="$calimagepath/edit.gif" alt=""._EDIT."" width="19" height="17" border="0" align="right"></a>";
}
echo "&<a href="modules.php?op=modload&name=$module_name&file=index&type=view&eid=$eid" $popuptext>$subject</a>
</font></td></tr>";
$morelink="modules.php?op=modload&name=$module_name&file=index&type=list&d=$d1&m=$m1&y=$y1&col=$col";
}
}
} // erste while schleife
//sql_free_result($result);
//sql_free_result($result_1);
echo "</table>";Gruss
Andreas Buis