• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[ERLEDIGT] Mysql Ausgabe gruppieren/sortieren

Tanja

Neues Mitglied
Mit Hilfe dieses Threads habe ich eine "fast" perfekte Ausgabe....

PHP:
function getdog()
{
$offspringresult = "
SELECT dog.id, dog.dogname, dog.father_id, dog.mother_id, dog.date_of_birth, b.dogname AS maker, CONCAT(dog.gender, '.png') AS sex 
FROM dog 
INNER JOIN dog b
ON dog.father_id = b.id
WHERE dog.mother_id='".$_GET['projectdescription1']."'

ORDER BY dog.dogname DESC
"; 
$result = mysql_query($offspringresult);
    
    $grouped = array();

    while ($row = mysql_fetch_object($result)) {
        $grouped[$row->date_of_birth][] = $row;
    }

    return $grouped;
}


$dog = getdog();

foreach ($dog as $date_of_birth => $entries) 
{
    echo '<h2>' . $date_of_birth . '</h2>';

    foreach ($entries as $entry) {
        echo '<p>' . $entry->dogname . '<img src=" '.$entry->sex.' "/></p>'; 
    }
}

Meine Ausgabe sieht so aus:
HTML:
2006-01-15
Amy from Bandit's World 
Akela from Bandit's World
Aiyana from Bandit's World

kann ich den Namen des Vaters noch hinter das Datum bekommen (bei mir maker)?
 
Werbung:
Du müsstest die Ausgabe von

PHP:
$entry->maker

innerhalb der 2. foreach-Schleife machen. Theoretisch könntest Du auch die Ausgabe des $date_of_birth darin machen - aber nur beim 1. Durchlauf, was man mit einer if-Bedingung entsprechend abfangen könnte.
 
Das ich
PHP:
$entry->maker
in der zweiten foreach abfragen kann hab ich schon selber herausgefunden ;-)
Dann hätte ich aber zu jedem Namen auch den maker dabei.
HTML:
2006-01-15 
Bandit - Amy from Bandit's World 
Bandit - Akela from Bandit's World 
Bandit - Aiyana from Bandit's World
ich möchte aber das der Name (neben dem Datum) nur einmal auftaucht (oder entsprechend, wenn der Hund fleissig war)
HTML:
2006-01-15 - Bandit
Amy from Bandit's World
  Akela from Bandit's World 
Aiyana from Bandit's World
 
Werbung:
Daher auch mein Hinweis auf die zusätzliche if-Bedingung in der 2. foreach-Schleife ;) Du musst dafür nur die Durchläufe in einer Variable hochzählen. Und wenn diese den Wert 1 (oder 0, je nachdem wo Du addierst) hat, gibst Du die Überschrift aus.
 
anders gelöst (lösen lassen):
PHP:
$result = mysql_query($offspringresult);
$grouped = array();
while ($row = mysql_fetch_object($result)) {
                 $grouped[$row->date_of_birth][$row->maker][] = $row;
}
return $grouped;
}

$dog = getdog2();
foreach ($dog as $date_of_birth => $entries)
{
        foreach ($entries as $maker => $entryArr) {
                echo "<h2>$date_of_birth - $maker</h2>";

                foreach ($entryArr as $entry) {
                echo '<p>' . $entry->dogname . '<img src=" '.$entry->sex.' "/></p>';
                }
                
        }
}
 
Zurück
Oben