Avatar billede abemand Nybegynder
30. januar 2004 - 17:30 Der er 11 kommentarer

Kan man både bruge GROUP og ORDER og DISTINCT på samme tid?

Hvordan kan jeg søge på alle events i den aktuelle måned OG
sortere dem efter OG
samle events på samme dato i grupper, sådan at de listes med <ul><li>

I stedet for:

2004-01-30 Event 1
2004-01-30 Event 2
2004-01-30 Event 3

2004-01-31 Event 1
2004-01-31 Event 2

Vil jeg gerne have
2004-01-30
• Event 1
• Event 2
• Event 3

2004-01-31
• Event 1
• Event 2

Nogle bud?
Avatar billede jakoba Nybegynder
30. januar 2004 - 17:33 #1
Ja det kan man godt.
Avatar billede erikjacobsen Ekspert
30. januar 2004 - 17:34 #2
Brug min løsning i http://www.eksperten.dk/spm/458101  som inspiration
Avatar billede jakoba Nybegynder
30. januar 2004 - 17:44 #3
Ups. men det su ønsker at gøre kan man ikke umiddelbart lave mes SQL. alle rækker i dit udtræk vil altid have de samme felter, så for at få en listning som den du viser ville man bruge php til at efterbehandle udtrækket:

$sql_kommando = "
    SELECT datofelt, eventfelt
    FROM  dintabel
    WHERE  ???            -- udfyld selv evt betingelser --
    ORDER BY datofelt ASC, eventfelt ASC
";
$resultatset = mysql_query( $sql_kommando ) or die(mysql_error());

på det resultatsæt du får siger du sp

$huskedato = "1000-01-01";  // en dato der helt sikkere er 'før' alle vi henter

while ( $row = mysql_fetch_array( $reaultatset ) ) {
    if ( $row['datofelt') != $huskedato ) {  // udskriv kun datoen når den skifter
        echo "<br>" .$row['datofelt') ."<br>";
    }
    echo $row['eventfelt'] ."<br>";
}

mvh JakobA
Avatar billede schaefner Juniormester
30. januar 2004 - 17:46 #4
<?php
$sql_output = mysql_query("SELECT * FROM table ORDER BY date ASC, event ASC
while ($row = mysql_fetch_assoc($sql_output)) {
    if ($remember_date != $row['date']) {
        echo $row['date'];
        echo '<ul>';
    }
    echo '<li>'.$row['event'].'</li>';
    if ($remember_date != $row['date']) {
        echo '</ul>';
    }
    $remember_date = $row['date'];
}
?>
Avatar billede schaefner Juniormester
30. januar 2004 - 17:47 #5
hov, jeg glemte lige at afslutte min query:

$sql_output = mysql_query("SELECT * FROM table ORDER BY date ASC, event ASC") or die(mysql_error());
Avatar billede schaefner Juniormester
30. januar 2004 - 17:49 #6
og får at være lidt korrekt så bør du nok lige sætte $remember_date først:

<?php
$remember_date = '';
$sql_output = mysql_query("SELECT * FROM table ORDER BY date ASC, event ASC") or die(mysql_error());
while ($row = mysql_fetch_assoc($sql_output)) {
    if ($remember_date != $row['date']) {
        echo $row['date'];
        echo '<ul>';
    }
    echo '<li>'.$row['event'].'</li>';
    if ($remember_date != $row['date']) {
        echo '</ul>';
    }
    $remember_date = $row['date'];
}
?>
Avatar billede jakoba Nybegynder
30. januar 2004 - 17:49 #7
erikjacoksen >>  Vil du tro på jeg ikke kikkede på din løsning mens jeg skrev det :-))
Avatar billede erikjacobsen Ekspert
30. januar 2004 - 17:59 #8
Ja jeg tror på dig, jakoba (men mindre du spiller Keno...)
Avatar billede abemand Nybegynder
30. januar 2004 - 20:43 #9
>> erikjacobsen: Tak for buddet, men jeg kan ikke oversætte din asp-version
>> jakoba: Når jeg kører din;

require ("db.php");
$sql_kommando = "SELECT * FROM  events ORDER BY date,id ASC";
$resultatset = mysql_query( $sql_kommando ) or die(mysql_error());
$huskedato = "1000-01-01";  // en dato der helt sikkere er 'før' alle vi henter

while ( $row = mysql_fetch_array( $reaultatset ) ) {
    if ( $row['date'] != $huskedato ) {  // udskriv kun datoen når den skifter
        echo "<br>" .$row['date'] ."<br>";
    }
    echo $row['description'] ."<br>";
}

- får jeg denne fejl:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\...\today.php on line 7
Line 7 = while ( $row = mysql_fetch_array( $reaultatset ) ) {

>> schaefner: Din virker, men den springer nogen over:

2004-01-20
Event 1
---
Event 22004-01-23
Event 1
---
2004-01-24
Event 1
---

Hvor den burde skrive:

2004-01-20
Event 1
Event 2
---
2004-01-23
Event 1
---
2004-01-24
Event 1
---

Har jeg brugt jeres kode forkert?
Avatar billede erikjacobsen Ekspert
30. januar 2004 - 21:14 #10
Du har en lille stavefejl i

while ( $row = mysql_fetch_array( $reaultatset ) ) {
Avatar billede schaefner Juniormester
30. januar 2004 - 21:24 #11
Lidt hurtig fiks faks:

<?php
$remember_date = '';
$sql_output = mysql_query("SELECT * FROM events ORDER BY date ASC, event ASC") or die(mysql_error());
while ($row = mysql_fetch_assoc($sql_output)) {
    if ($remember_date != $row['date']) {
        if ($remember_date != '') echo '</ul>';
        echo '<b>'.$row['date'].'</b>';
        echo '<ul>';
    }
    echo '<li>'.$row['event'].'</li>';
    $remember_date = $row['date'];
}
echo '</ul>';
?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester