Shop-Hilfe.com
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 19.11.2003, 19:25   #1
TP-Member
 
Benutzerbild von Altacher
 
Registriert seit: Dec 2001
Ort: Altach
Altacher macht alles soweit korrekt

Nach Datum ordnen


Hallo!

Ich habe in meiner MySQL Datenbank angenommen 10 Fußballspiele. heim, aus, datum, zeit
3 finden am 22.11, 3 am 23.11 und 4 am 24.11 statt.

Nun möchte ich auf einer Seite den Spielplan ausgeben. Als "Überschrift" soll das Datum ausgegeben werden und darunter die Spiele die an diesem Tag statt finden. Also das Datum soll nur 1(!) mal ausgegeben werden.

Beispiel:

22.11
Bayern - Schalke
Leverkusen - Rostock
Dortmund - 1860
23.11
Bremen - Stuttgart
....

Wie kann ich das am besten realisieren?

mfg
Altacher
Altacher ist offline   Mit Zitat antworten


Alt 20.11.2003, 09:28   #2
TP-Supporter
 
Registriert seit: Apr 2001
Judi macht alles soweit korrekt
Hi

in der SQL kannst Du ja im Order by nach Datum sortieren.

Aber die entspr. Ausgabe, so wie Du es möchtest, ist am einfachsten in Deiner Scriptsprache zu lösen.

Ein Lösungsansatz für deine Schleife:

vorbesetzen Variable varDatum mit ""
dann die Abfrage-Schleife beginnen.

Wenn Datum-Feld ungleich varDatum dann andrucken.

Immer:
Datum-Feld andrucken
varDatum=Datum-Feld

nächster
__________________
Liebe Grüße, die Judi!
Judi ist offline   Mit Zitat antworten
Alt 20.11.2003, 15:07   #3
TP-Member
 
Benutzerbild von Altacher
 
Registriert seit: Dec 2001
Ort: Altach
Altacher macht alles soweit korrekt
Ganz check ichs leider noch nicht!
Was ist wenn ältere Spiele in der Datenbank drin sind? Die sollten dann aber nicht ausgegeben werden.

Was meinst du mit:

vorbesetzen Variable varDatum mit ""

mfg
Altacher
Altacher ist offline   Mit Zitat antworten
Alt 20.11.2003, 15:15   #4
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
also ich glaub zu wissen, was judi meint

@altacher:
ältere Spiele filterst du schon bei der SQL abfrage raus.

vorbesetzte Variablen mit '' sind nix anderes als Variablen ohne Inhalt.
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 20.11.2003, 15:53   #5
TP-Senior
 
Registriert seit: Oct 2003
Ort: Papenburg
Johannes ist auf einem guten Weg
Mit where kannst du dir ja die Spiele eines bestimmten Zeitraumes raussuchen und mit order by dann sortieren.

Wenn du dann die Ergebnisse deiner Abfrage in einer while-Schleife durchgehst nutzt du jeweils am Ende der Schleife eine Variable um das Datum hineinzuschreiben. Beim nächsten Durchlauf überprüfst du dann mit if ob sich das Datum des neuen Datensatzes verändert hat und gibts es ggf. aus.

So würde ich es machen und ich glaube Judi hat es auch so gemeint?
Johannes ist offline   Mit Zitat antworten
Alt 20.11.2003, 16:22   #6
TP-Supporter
 
Registriert seit: Apr 2001
Judi macht alles soweit korrekt
Genauso habe ich es gemeint. Leider hat er sich zu keiner Scriptsprache geäußert, deshalb diese Beschreibung.

Ich hatte gestern selbst kurz das Problem, sowas in php lösen zu müssen. Ich bin zwar nicht der php-Guru aber so hats bei mir funktioniert.

<?php
$testvar = "";
do {
if ($testvar == "" || $testvar != $row_rs ['aDate']){
echo $row_rs['aDate']."<br>";
$testvar = $row_rs['aDate'];
}
echo $row_rs['myText']."<br>";
} while ($row_rs = mysql_fetch_assoc($rs)); ?>

und dies halt eben als ASP-Lösung, wen es interessiert.

<%
dim testvar
testvar = ""
while not rs.eof
if testvar = "" or testvar <> rs("aDate") then
Response.write rs("aDate") & "<br>"
testvar = rs("aDate")
end if
Response.write rs("myText") & "<br>"
rs.movenext
wend
%>

Nachtrag: Wichtig ist, und das wird schnell auch vergessen, dass im SQL-Statement auf jeden Fall eine Sortierung stattfinden muss, also, das order by datum muss Bestandteil sein.
__________________
Liebe Grüße, die Judi!

Geändert von Judi (20.11.2003 um 20:01 Uhr).
Judi ist offline   Mit Zitat antworten
Alt 21.11.2003, 23:26   #7
TP-Member
 
Benutzerbild von Altacher
 
Registriert seit: Dec 2001
Ort: Altach
Altacher macht alles soweit korrekt
Jep, habe vor es in PHP zu programmieren.
Ich denke jetzt bekomme ich es hin!

Danke!

mfg
Altacher
Altacher ist offline   Mit Zitat antworten
Alt 22.11.2003, 16:21   #8
TP-Member
 
Benutzerbild von Altacher
 
Registriert seit: Dec 2001
Ort: Altach
Altacher macht alles soweit korrekt
Was bedeutet $row_rs und mysql_fetch_assoc($rs) ?
Diese Schleife muss ich gleich nach der Datenbankabfrage eingeben oder?
Altacher ist offline   Mit Zitat antworten
Alt 22.11.2003, 18:01   #9
TP-Supporter
 
Registriert seit: Apr 2001
Judi macht alles soweit korrekt
wie ich bereits schrieb, ich bin kein php-Experte. Ich beschäftige mich mit php auch erst sein ein paar Tagen.

Einzelne Funktion und mySQL-Syntax müsste ich auch erst im Handbuch nachlesen, um diese zu erklären.
Andere können das hier bestimmt besser.

Manchmal lasse ich mir zu Testzwecken eine DW-Verbindung generieren. Dieser benutzt immer eine fussgesteuerte Schleife. Vorteile - Nachteile jetzt beim Auslesen einer Tabelle kann ich noch nichtmals sagen. Bei der fussgesteuerten Schleife

do {
Anweisungsblock
} while (Bedingung);

muss die Schleife mind. einmal durchlaufen werden, denn nach der letzten Anweisung wird erst die Bedingung überprüft und diese ist lt. Syntax

while($row = mysql_fetch_assoc($rs));

Die kopfgesteuerten Wiederholung (beispiel unten) beginnt mit der Feststellung, ob ein Schleifendurchlauf notwendig ist. Diese Prüfung wird nach jedem Durchlauf wiederholt. Ergibt der Test der Bedingung einen Wert TRUE, wird die Schleife durchlaufen, ergibt sie FALSE, werden die Anweisungen der Schleife übersprungen und die Abarbeitung des Programms wird am Ende der Schleife fortgesetzt. Man möge mich korrigieren, aber so habe ich es verstanden.

Für meine handgeschriebenen Verbindungen nutze ich meist diese einfache Vorlage für eine kopfgesteuerte Schleife und passe sie dann an bzw. frage sie ab, wo es für mich Sinn macht.

PHP-Code:
<?
// Verbindung zur mySQL - Datenbank herstellen
$server "localhost"$user "root"$pass "";
$database "homepage";
$verbindung = @mysql_connect($server,$user,$pass)
    or die (
"Keine Verbindung möglich");
    
mysql_select_db($database$verbindung
    or die (
"SQL-Fehler = ".mysql_error());
  
  
// Select-Statement zum Auslesen der Daten
  
$sql "SELECT aDate, myText from topics order by aDate";
  
$rs mysql_query($sql);
  
  
// Variable vorbesetzen für die Abfrage des Datenwertes, welcher nur einmal wiederholt werden soll
  // auslesen der Datensätze in einer kopfgesteuerten Whileschleife
  
$testvar "";
  while(
$row mysql_fetch_object($rs)) {
  
      
// vergleichen des Datenwertes mit dem Wert der Variablen
    
if ($testvar == "" || $testvar != $row->aDate) {  
    echo 
$row->aDate;
    echo 
"<br>";
    
    
// Variablen den Wert des Datenfeldes geben
    
$testvar $row->aDate;
    }   
    echo 
$row->myText;
    echo 
"<br>";
    }
    
// alles schließen
    
mysql_free_result($rs);
    
mysql_close($verbindung);
 
?>
__________________
Liebe Grüße, die Judi!
Judi ist offline   Mit Zitat antworten
Alt 26.11.2003, 23:29   #10
TP-Member
 
Benutzerbild von Altacher
 
Registriert seit: Dec 2001
Ort: Altach
Altacher macht alles soweit korrekt
Danke für die vielen Tipps, aber ich versteh jetzt nicht wieso mein Code nit funktioniert!

PHP-Code:
<?php 
$heute 
date("d.m"); 
include(
"dbconnect.php");
$abfrage "SELECT * FROM spiele2 WHERE datum >= '$heute' ORDER BY datum";
$ergebnis mysql_query($abfrage);
$testvar "";
  while(
$row mysql_fetch_object($ergebnis)) {
  if (
$testvar == "" || $testvar != $row->datum) {  
    echo 
$row->datum;
$testvar $row->datum;
    }   
?>
</td>
</tr>
<tr bgcolor="#ffffff"> 
                <td width="16%" class="news">
                
                <?php 
                
echo substr($row->zeit,0,5);?>
                </td>
                <td width="34%" class="begegnung"><?php echo $row->heim;?></td>
                <td width="25%" class="begegnung">- <?php echo $row->aus;?></td>
                <td width="25%"><? echo '<a href="tipps.php?heim='urlencode($row->heim), '&aus='urlencode($row->aus), '&tippgeber='urlencode($row->tippgeber),'">'?>Klick</td>
              </tr>
               <?php
   
}
    
?>
Es wird das heutige und ein anderes Datum ausgegeben und das gleich hintereinander und unten dran gehängt werden alle Spiele in der Datenbank. Es wird bei einem neuen Datum keine neue Überschrift gemacht! Was liegt der Hacken?
Altacher ist offline   Mit Zitat antworten
Alt 27.11.2003, 00:12   #11
TP-Senior
 
Registriert seit: Oct 2003
Ort: Papenburg
Johannes ist auf einem guten Weg
Vor dem von dir geposteten Code wirst du ja irgendwo mal <table><tr><td> stehen haben (oder so ähnlich) dann läufst du in die Schleife rein, das Datum wird ausgegeben und
</td></tr> kommt. Anschließend folgt dann noch eine neue Zeile in der Tabelle wo wohl ein Spiel ausgegeben wird. Der Schleifendurchlauf ist beendet. Als nächstes folgt der nächste Schleifendurchlauf. Als erstes kommt wieder </td></tr> , aber wo sind die öffnenden Tags?

Ich glaube das Datum müsste trotzdem irgendwo ausgegben werden, aber in jedem Fall nicht in der Tabelle.
Johannes ist offline   Mit Zitat antworten
Alt 27.11.2003, 15:52   #12
TP-Member
 
Benutzerbild von Altacher
 
Registriert seit: Dec 2001
Ort: Altach
Altacher macht alles soweit korrekt
Ich habe nur aus Platzgründen die öffnenden Tags weggelassen! Funkt aber trotzdem nicht!
Altacher ist offline   Mit Zitat antworten
Alt 27.11.2003, 17:40   #13
TP-Member
 
Benutzerbild von Altacher
 
Registriert seit: Dec 2001
Ort: Altach
Altacher macht alles soweit korrekt
Hier nochmal der gesamte Code:

PHP-Code:
<table width="100%" border="0" cellspacing="1" cellpadding="5" bgcolor="#999966">
              <tr bgcolor="#ffffff"> 
             
                <td bgcolor="#FFFFCC" class="ueberschrift" colspan="4">
                 <?php 
$heute 
date("d.m"); 
include(
"dbconnect.php");
$abfrage "SELECT * FROM spiele2 WHERE datum >= '$heute' ORDER BY datum";
$ergebnis mysql_query($abfrage);
$testvar "";
  while(
$row mysql_fetch_object($ergebnis)) {
  if (
$testvar == "" || $testvar != $row->datum) {  
    echo 
$row->datum;
$testvar $row->datum;
    }   
?>
</td>
</tr>
<tr bgcolor="#ffffff"> 
                <td width="16%" class="news">
                
                <?php 
                
echo substr($row->zeit,0,5);?>
                </td>
                <td width="34%" class="begegnung"><?php echo $row->heim;?></td>
                <td width="25%" class="begegnung">- <?php echo $row->aus;?></td>
                <td width="25%"><? echo '<a href="tipps.php?heim='urlencode($row->heim), '&aus='urlencode($row->aus), '&tippgeber='urlencode($row->tippgeber),'">'?>Klick</td>
              </tr>
               <?php
   
}
    
?>
              
            </table>
Altacher ist offline   Mit Zitat antworten
Alt 27.11.2003, 17:48   #14
TP-Senior
 
Registriert seit: Oct 2003
Ort: Papenburg
Johannes ist auf einem guten Weg
Aber, wenn das der gesamte Code ist, ist es doch so wie ich es meinte. Am Ende der Schleife wird der tr-Tag geschlossen und es geht zum nächsten Schleifendurchlauf. Oben bei while geht es wieder los und es gibt dann wenn das zweite Datum ausgegeben werden soll keinen öffnenden Tag.
Diese beiden Zeilen:
<tr bgcolor="#ffffff">

<td bgcolor="#FFFFCC" class="ueberschrift" colspan="4">

und die beiden:

</td>
</tr>

müssen mit in if rein, vor bzw. nach der Ausgabe des Datums.

Trotz des Tabellenfehlers sollte das Datum irgendwo ausgegeben werden. Schaumal vor, oder nach der Tabelle. Vielleicht stehen dort die Datumsangaben die er jetzt nicht ausgibt.
Johannes ist offline   Mit Zitat antworten
Alt 27.11.2003, 21:54   #15
TP-Member
 
Benutzerbild von Altacher
 
Registriert seit: Dec 2001
Ort: Altach
Altacher macht alles soweit korrekt
Aah, jetzt weiß ich was du meintest! :-)
Es funkt so halbwegs, sieht mir noch nicht ganz geheuer aus! ;-)

Weiß noch zufällig jemand wie ich bei ORDER BY die Reihenfolge ändern kann? Also das sie genau umgekehrt abgefragt werden!

mfg
Altacher
Altacher ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Nach Datum ordnen Nach Datum ordnen
« SSL abfragen | php und javascript »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:20 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53