[thelist] Problem with SQL Query - using PHP and MySQL
Pringle, Ron
RPringle at aurora-il.org
Wed Nov 15 09:26:02 CST 2006
Final followup for anyone interested.
I ended up using Phil's suggestion for the query, i.e. using group
concat, even though I actually needed two values from the eventDates
table. Since one was the unique ID assigned to each record, there was a
1 to 1 relationship for each date, so it didn't pose a problem. Below is
the final SQL statement:
SELECT title, summary, eventID, Group_Concat(dateID ORDER BY eventDate
Separator ', ')AS DateID, Min(eventDate) AS FirstDate,
Group_Concat(DATE_FORMAT(eventDate, '%c/%e') ORDER BY eventDate
Separator ', ') AS EventDateString FROM tbl_event INNER JOIN
tbl_eventDates USING (eventID) WHERE eventDate >= Current_Date GROUP BY
title ORDER BY FirstDate
In PHP, I then exploded the two comma delimited string values into
arrays and looped through them for each record. Below is the essential
PHP code:
//loop through all records
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "<h5 class='sansheader'>{$row['title']}</h5>\n";
echo $row['summary'] . "\n";
echo "<h3>Event Date(s):</h3>\n";
//put comma delimited strings into arrays
$arrayID = explode(", ", $row["DateID"]);
$arrayDate = explode(", ", $row["EventDateString"]);
//set length of array and loop through
$arrayLength = count($arrayID);
for ($i = 0; $i < $arrayLength; $i++) {
echo "<p>" . $arrayDate[$i] . " - <a
href='/detail.php?dateID=" .
$arrayID[$i] . "'>More Info</a></p>\n";
};
echo "<div class='exhibitdivider'></div>\n";
}
The end result is a nice list of events, listed by first date of
occurance and grouped by title where multiple dates for each event are
listed under the title.
Thanks to those who helped, especially Phil. Much appreciated.
Regards,
Ron
More information about the thelist
mailing list