• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Ausgabe nach datum sortieren

KIUNES

New member
hy, ich weiß ich frage im moment viel, aber nach getaner arbeit helf ich hier auch wieder ;)

Also es geht sich um eine ausgabe die nach datum sortiert ist, an sich kein problem sehe hier:
Code:
<?
$erg = db_query("select id,name,version,creater,DATE_FORMAT(time,'%d.%m.%Y') as datum from prefix_downloads ORDER BY id DESC LIMIT 0,5");
while ($row = db_fetch_object($erg)) { 
$autor = $row->creater;	
$version = $row->version;
$datum = $row->datum;		
$name = $row->name;
echo'
<tr style="cursor:pointer;" onMouseover=this.bgColor="#c30b01";this.style.color="#FFFFFF"; onMouseout=this.bgColor="";this.style.color="#000000"; onClick=location.href="index.php?downloads-show-'.$row->id.'";>
<td width="60%"><span style="font-size:11px;"> <img src="include/images/bullets/redarrow.png" width="10" border="0"> '.$datum.' <b>»</b> '.$autor.' <span style="font-size:9px;">['.$version.']</span> - '.$name.'</span></td>
</tr>
';

  }
?>

aber da hängt er mir ja einfach die ausgaben hintereinander - wie mach ich dass, dass der mir zb nur immer für ein datum die ausgaben auswirft ala'

18.10.2008
-sdfgdsf
-sdfgsdf
-sdgsdfg

17.10.2008
-sdfgdfs
-sdghdfsg
-ads<fadsgfa

so in der art will ich das haben, nur fällt mir kein lösungsansatz ein!
 
Äh was willst du?
Statt Datum >>Autor [version] - Name
willst du
Datum
- autor
- version
- name
??

Ich glaub das bekommst du selbst hin, wenn du ausgeschlafen bist, oder? Ist doch nur eine Formatierungssache.
Aso, dein on-Events sehen grauslich aus ;-) Funktionieren die?
 
Hallo KIUNES,

wenn ich dich richtig verstanden habe, dann hast du mehrere Datensätze zu jedem Datum und willst aber nur das Datum als Header und die Einträge aufgelistet, right?

Mein Vorschlag setz vor der Schleife eine Variable $CurrentDate = "";
Dann kannst du in der Schleife abfagen, ob das Datum aus dem Datensatz unterschiedlich zu $CurrentDate ist. Wenn dem so ist: Neue Überschrift; an sonsten einfach nur den Rest ausgeben.
Nicht vergessen am Ende der Abfrage $CurrentDate = $row['datum'];
damit du nicht immer in die Anfrage reinläufst.

Hoffe, das war verständlich sonst spendiere ich noch ein Codebeispiel!
 
@Tom80: Ja das könnte ich wirklich selber, auch ohne ausschlafen ;) - und die on-Tags funzen einwandfrei in jedem Browser - was ist denn daran auszusetzen?

wenn ich dich richtig verstanden habe, dann hast du mehrere Datensätze zu jedem Datum und willst aber nur das Datum als Header und die Einträge aufgelistet, right?

Genau das meine ich, würdest mir aber mit nem Codebeispiel echt mehr helfen, da ich deine Umsetzungsidee nicht ganz nachvollziehen kann ;)
 
Genau das meine ich, würdest mir aber mit nem Codebeispiel echt mehr helfen, da ich deine Umsetzungsidee nicht ganz nachvollziehen kann ;)
Was genau war denn unverständlich, vielleicht kann man diesen Punkt dann etwas verfeinern?
'ne Schleife haste ja schon hinbekommen, Variablen sind wohl auch nicht das Problem, vielleicht stehste ja auf Kriegsfuß mit IF-Abfragen, vielleicht ist es einfach nur allgemeine Unlust sich da reinzudenken, wer weiß.
Aber wir sind ja hier, um zu helfen, also wo drückt der Schuh?
 
Ja mir fällt da nix ein wie ich die if Schleife gestalten sollte - sorry und schande über mich, aber hab da wohl ein brett vorm kopp!
 
Ja mir fällt da nix ein wie ich die if Schleife gestalten sollte - sorry und schande über mich, aber hab da wohl ein brett vorm kopp!
Da haben wir es doch. Es gibt nämlich keine IF-Schleifen, musst Du Dir also keinen Kopp drum machen.

Da dieses Problem ja nun wegfällt, wo klemmt es denn jetzt?
 
mit schleifen bin ich echt unbegabt - kann mir denn keiner n codeschnipsel geben?
Du hast doch schon eine Schleife, was ist mit der nicht in Ordnung?
Alles was Du machen musst ist in, bzw. außerhalb der Schleife. An der Schleife selbst ist nicht unbedingt eine Veränderung erforderlich.

Mir scheint es, als ob Du null Interesse an einer Mitarbeit hast und Dich absichtlich dumm stellst, damit Dir jemand das schon irgendwie bastelt.
Wir helfen Dir gerne bei der Lösung Deiner Probleme, aber wir sind hier keine kostenlose Skriptfabrik.

Du hast in Deinem ersten Post nach einem Lösungsansatz gefragt, der wurde Dir bereits geliefert, nun willst auf einmal ein fertiges Skript.
Die Aufgabenstellung ist nicht sonderlich kompliziert, Du hast einen Fahrplan, wie sowas zu lösen ist, also setz Dich auf Deinen Hosenboden und liefere mal etwas Code.
 
Versuch das mal!

PHP:
...
$CurrentDate = "";
while($row = mysql_fetch_assoc($result))
{
    /*
     * Interessanter Teil!
     */
    if($row['datum'] != $CurrentDate)
    {
        echo "<div>".$row['datum']."</div>";
        $CurrentDate = $row['datum'];
    }
    /*
     * Interessanter Teil Ende!
     */
    echo "<div>".$row['keineAhnung']."</div>";
}

Musst jetzt nur noch anpassen.
Und alles im interessanten Teil merkste dir, dann brauchste das nächste Mal nicht so lange dafür ;-)

P.S.: Habe das nicht getestet, aber auch keine Fehler mehr gefunden. Meld dich, wenn es nicht laufen sollte.

@Albu: Habe das mal schnell gebastelt, weil die Diskusion wohl doch mehr Zeit verschlingen würde als dieser kleine Codesnippet.
 
[QUOTE='Lost-Ha[n]@Albu: Habe das mal schnell gebastelt, weil die Diskusion wohl doch mehr Zeit verschlingen würde als dieser kleine Codesnippet.[/QUOTE]
Tja, damit bleibt eben der Lerneffekt auf der Strecke und es zeigt sich, dass Faulheit sich auszahlt.
Und was die Länge der Diskussion angeht: Ich habe Zeit und ich brauche die Lösung nicht. Und je länger man sich weigert mitzuarbeiten, desto länger gibt es auch kein Vorankommen.
 
Danke dass du dich bereit erklärt hast mir zu helfen - ich hab das jetzt so gemacht:
PHP:
<?
$erg = db_query("select id,name,version,creater,DATE_FORMAT(time,'%d.%m.%Y') as datum from prefix_downloads ORDER BY id DESC LIMIT 0,100");
$CurrentDate = "";
while ($row = db_fetch_object($erg)) { 
$autor = $row->creater;	
$version = $row->version;
$datum = $row->datum;		
$name = $row->name;
    if($row['datum'] != $CurrentDate)
    {
        echo "<div>".$row['datum']."</div>";
        $CurrentDate = $row['datum'];
}
echo'
<tr style="cursor:pointer;" onMouseover=this.bgColor="#c30b01";this.style.color="#FFFFFF"; onMouseout=this.bgColor="";this.style.color="#000000"; onClick=location.href="index.php?downloads-show-'.$row->id.'";>
<td width="60%"><span style="font-size:11px;"> <img src="include/images/bullets/redarrow.png" width="10" border="0"> '.$datum.' <b>»</b> '.$autor.' <span style="font-size:9px;">['.$version.']</span> - '.$name.'</span></td>
</tr>
';
}
?>
aber da schmeißt der mir ein fatal error raus, ich peil das echt nicht mit der schleife!
 
Zuletzt bearbeitet:
PHP:
<?php
$erg = db_query("select id,name,version,creater,DATE_FORMAT(time,'%d.%m.%Y') as datum from prefix_downloads ORDER BY id DESC LIMIT 0,100");
$CurrentDate = "";
while ($row = db_fetch_object($erg))
{ 
    $autor = $row->creater;    
    $version = $row->version;
    $datum = $row->datum;        
    $name = $row->name;
    if($datum != $CurrentDate)
    {
        echo "<tr><td><b>$datum</b></td></tr>";
        $CurrentDate = $datum;
    }
    echo '
    <tr style="cursor:pointer;" onMouseover=this.bgColor="#c30b01" this.style.color="#FFFFFF"; onMouseout=this.bgColor="";this.style.color="#000000"; onClick=location.href="index.php?downloads-show-'.$row->id.'";>
<td width="60%"><span style="font-size:11px;"> <img src="include/images/bullets/redarrow.png" width="10" border="0"> '.$datum.' <b>»</b> '.$autor.' <span style="font-size:9px;">['.$version.']</span> - '.$name.'</span></td>
</tr>
';
    }
?>

Versuch das mal so!
ich habe mysql_fetch_assoc benutzt, bei mysql_fetch_object musst du die Werte nachtürlich auch mit dem Pfeiloperator ansprechen. Das sollte jetzt gehen, wenn ich nichts übersehen habe.
 
aber da schmeißt der mir ein fatal error raus, ich peil das echt nicht mit der schleife!
Und was hast Du schon alles ausprobiert, damit er den Fehler nicht mehr schmeißt? Hast Du z.B. rausbekommen, welche Zeile den Fehler verursacht (ist ja nicht ganz unwichtig)?

Vielleicht mal so als Tipp: Nimm doch mal einen ordinären HTML Editor und bastel eine HTML Seite, die exakt so aussieht, wie das, was das Skript nachher liefern soll. Also schön die Daten aufgelistet mit korrektem HTML, validierbar und sauber. Wenn Du das hast, dann wird auch klar, was Dein PHP generieren muss. Das, was es nämlich jetzt generiert ist Brei aus HTML-Tags.
 
Versuch das mal so!
ich habe mysql_fetch_assoc benutzt, bei mysql_fetch_object musst du die Werte nachtürlich auch mit dem Pfeiloperator ansprechen. Das sollte jetzt gehen, wenn ich nichts übersehen habe.

Ach daran lags, ok man lernt ja nie aus - endlich funktionierts, ich danke dir recht herzlich, dass du mir bei dem problem geholfen hast. Tausend dank!!!!!!

Noch eine Frage (ich will dafür nicht extra ein Thread eröffnen) also ich hab den ja auf x-beliebige anzahl an ausgaben limitiert, sagen wir mal 100, so jetzt listet der die einzelnen daten aus und stoppt zb mitten im dritten datum die auflistung, da logischerweise die hundert erreicht wurden, wie mach ich das jetzt, dass der datum 1 und 2 ausgibt, aber bevor er mit datum 3 beginnt, dass der da aufhört?
 
Zuletzt bearbeitet:
Das wirst du mit SQL nicht hinbekommen. Was du machen kannst ist die Datensätze die zu einem Datum gehören von der DB zählen zu lassen (Group By) und dann mit PHP überprüfen ob auch alle Daten zu einem Datum in den 100 abgefragten sind. Wenn nicht stoppst du mit PHP die Ausgabe.

Dein HTML-Code ist nicht valide! div-Tags haben innerhalb von table-Tags nichts zu suchen. Da sollte wahrscheinlich nen tr-Tag mit nem colspan rein.
 
Zurück
Oben