katlees
asked on
Listing event name only once
I have a database where we have events entered. In one part of my website, I have it pulling up the next three ticketed events. In some cases, an event goes multiple dates and we only want it to show on the top 3 list once.
Example..
Event 1
Oct 2, 2008
Event 1
Oct 3, 2008
Event 1
Oct. 4, 2008
I want it to only list Event 1 one time and then the next two events that don't have the same Name as Event 1. Then when Oct. 3 comes around, oct 2 will drop off but the event will still be listed under Oct 3. When oct 4 is over, the event is still listed under oct 4.
The code is written below
Example..
Event 1
Oct 2, 2008
Event 1
Oct 3, 2008
Event 1
Oct. 4, 2008
I want it to only list Event 1 one time and then the next two events that don't have the same Name as Event 1. Then when Oct. 3 comes around, oct 2 will drop off but the event will still be listed under Oct 3. When oct 4 is over, the event is still listed under oct 4.
The code is written below
<?php
$currentdate = date('Y-m-D');
$event_query = "SELECT * FROM Events WHERE Date >= '$currentdate' and Tickets ='1' ORDER BY `Events`.`Date` ASC";
$event_query_result = mysql_query($event_query);
if (!event_query_result)
{
echo "Could not successfully run query ($event_query) from DB: " . mysql_error();
exit;
}
$event_counter = 0;
while ($event_row = mysql_fetch_assoc($event_query_result))
{
$event_name = $event_row['Name'];
$event_dates = $event_row['Date'];
$display_date = date("M j, Y", strtotime($event_dates ));
$event_time = $event_row['DisplayTime'];
$event_tickets = $event_row['Tickets'];
$event_id = $event_row['ID'];
$eventCode = $event_row['EventCode'];
$seasonCode = $event_row['SeasonCode'];
$OnSale = $event_row['OnSale'];
echo "<p class=\"style18\"><a href=\"display_event.php?id=$event_id\">$event_name</a> <br />\n";
echo "$display_date - $event_time - <a href='http://ev12.evenue.net/cgi-bin/ncommerce3/SEGetEventInfo?ticketCode=GS%3ARUSHMORE%3A".$event_row['SeasonCode']."%3A".$event_row['EventCode']."%3A&linkID=rushmore&shopperContext=&caller=&appCode='>Click Here</a></p>\n";
$event_counter++;
if ($event_counter > 2)
{
break;
}
}
if ($event_counter == 0)
{
echo "<p class=\"style18\">No Events Scheduled</p>\n";
}
?>
$event_query = "SELECT DISTINCT * FROM Events WHERE Date >= '$currentdate' ....
ASKER
It's not working...
SELECT DISTINCT * FROM Events WHERE Date >= `$currentdate` order by $currentdate Limit 0,2
The Limit will give you only the first 3 events.
$event_query = "SELECT * FROM Events WHERE Date >= '$currentdate' and Tickets ='1' ORDER BY `Events`.`Date` ASC limit 0,2";
Try this
SELECT *, count(Events) FROM Events WHERE Date >= '$currentdate' and Tickets ='1' GROUP BY Events HAVING count(Events)>=1 ORDER BY `Events`.`Date` ASC ";
SELECT *, count(Events) FROM Events WHERE Date >= '$currentdate' and Tickets ='1' GROUP BY Events HAVING count(Events)>=1 ORDER BY `Events`.`Date` ASC ";
ASKER
ehabafia - that only shows the first two events..... and it lists two with the same nam.
$event_query = "SELECT DISTINCT * FROM Events WHERE Date >= '$currentdate' and Tickets ='1' ORDER BY `Events`.`Date` ASC limit 0,3";
ASKER
gamebits - that doesn't list any
ASKER
It is still listing an event with the same name twice.....
Does it have to do with the event_counter being outside the loop?
Does it have to do with the event_counter being outside the loop?
SELECT DISTINCT(NAME), * FROM Events WHERE Date >= '$currentdate' and Tickets ='1' ORDER BY `Events`.`Date` ASC limit 0,3
Sorry,
SELECT DISTINCT(NAME), * FROM Events WHERE Date >= '$currentdate' and Tickets ='1' group by NAME ORDER BY `Events`.`Date` ASC limit 0,3
SELECT DISTINCT(NAME), * FROM Events WHERE Date >= '$currentdate' and Tickets ='1' group by NAME ORDER BY `Events`.`Date` ASC limit 0,3
ASKER
Ehabafia - again, no results
make sure that you have a result for the conditions that you are having,
also try to use the now() instead of current date:
SELECT DISTINCT(NAME), * FROM Events WHERE Date >= now() and Tickets ='1' group by NAME ORDER BY `Events`.`Date` ASC limit 0,3
I thing it should work
also try to use the now() instead of current date:
SELECT DISTINCT(NAME), * FROM Events WHERE Date >= now() and Tickets ='1' group by NAME ORDER BY `Events`.`Date` ASC limit 0,3
I thing it should work
or currentdate()
SELECT DISTINCT(NAME), * FROM Events WHERE Date >= currentdate() and Tickets ='1' group by NAME ORDER BY `Events`.`Date` ASC limit 0,3
SELECT DISTINCT(NAME), * FROM Events WHERE Date >= currentdate() and Tickets ='1' group by NAME ORDER BY `Events`.`Date` ASC limit 0,3
ASKER
ehabafia - still getting no results. If I change my original code to
if ($event_counter > 7
It shows 7 results.... so I know there are records in there
if ($event_counter > 7
It shows 7 results.... so I know there are records in there
could you send me a sample of the database data so that I can look at it.
Thank you and sorry for the delay.
Thank you and sorry for the delay.
ASKER
http://75.125.62.3/~gotmine/index.php is the page it is on....
On http://75.125.62.3/~gotmine/index2.php I have it pulling the next 10 events
On http://75.125.62.3/~gotmine/index2.php I have it pulling the next 10 events
ASKER
I got an answer from someone else. I'll post it in a minute
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
that's what I meant evenname (Event) but I didn't know your database field names.
but you need to add at the ind of the sql statement the word Limit 0,3
but you need to add at the ind of the sql statement the word Limit 0,3
Well it was unfair to close the subject this way, without giving enough information but whatever.
ASKER
I gave my full code. How is that not enough information? I got an answer elsewhere. Sorry yours didn't work.
you gave the code but you didn't gave the database information. Anyways I faced allot of peoples like you and that is not the first and it's not gonna be the last time facing someone like you.