Solved

Listing event name only once

Posted on 2008-09-30
23
247 Views
Last Modified: 2013-12-12
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
<?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";
	}	
?>

Open in new window

0
Comment
Question by:katlees
  • 11
  • 10
  • 2
23 Comments
 
LVL 28

Expert Comment

by:gamebits
ID: 22610809
$event_query = "SELECT DISTINCT * FROM Events WHERE Date >= '$currentdate' ....
0
 

Author Comment

by:katlees
ID: 22610894
It's not working...
0
 
LVL 4

Expert Comment

by:ehabafia
ID: 22610989
SELECT DISTINCT * FROM Events WHERE Date >= `$currentdate` order by $currentdate Limit 0,2
0
Live: Real-Time Solutions, Start Here

Receive instant 1:1 support from technology experts, using our real-time conversation and whiteboard interface. Your first 5 minutes are always free.

 
LVL 4

Expert Comment

by:ehabafia
ID: 22610994
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";

Open in new window

0
 
LVL 28

Expert Comment

by:gamebits
ID: 22611004
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 ";
0
 

Author Comment

by:katlees
ID: 22611013
ehabafia - that only shows the first two events..... and it lists two with the same nam.
0
 
LVL 4

Expert Comment

by:ehabafia
ID: 22611019
$event_query = "SELECT DISTINCT * FROM Events WHERE Date >= '$currentdate' and Tickets ='1' ORDER BY `Events`.`Date` ASC limit 0,3";
0
 

Author Comment

by:katlees
ID: 22611020
gamebits - that doesn't list any
0
 

Author Comment

by:katlees
ID: 22611027
It is still listing an event with the same name twice.....

Does it have to do with the event_counter being outside the loop?
0
 
LVL 4

Expert Comment

by:ehabafia
ID: 22611033
SELECT DISTINCT(NAME), * FROM Events WHERE Date >= '$currentdate' and Tickets ='1' ORDER BY `Events`.`Date` ASC limit 0,3
0
 
LVL 4

Expert Comment

by:ehabafia
ID: 22611036
Sorry,

SELECT DISTINCT(NAME), * FROM Events WHERE Date >= '$currentdate' and Tickets ='1' group by NAME ORDER BY `Events`.`Date` ASC limit 0,3
0
 

Author Comment

by:katlees
ID: 22611040
Ehabafia - again, no results
0
 
LVL 4

Expert Comment

by:ehabafia
ID: 22611058
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
0
 
LVL 4

Expert Comment

by:ehabafia
ID: 22611059
or currentdate()

SELECT DISTINCT(NAME), * FROM Events WHERE Date >= currentdate() and Tickets ='1' group by NAME ORDER BY `Events`.`Date` ASC limit 0,3
0
 

Author Comment

by:katlees
ID: 22611074
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
0
 
LVL 4

Expert Comment

by:ehabafia
ID: 22611279
could you send me a sample of the database data so that I can look at it.

Thank you and sorry for the delay.
0
 

Author Comment

by:katlees
ID: 22611309
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
0
 

Author Comment

by:katlees
ID: 22611320
I got an answer from someone else. I'll post it in a minute
0
 

Accepted Solution

by:
katlees earned 0 total points
ID: 22611344
Here is the code
<?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;
	$save_event_name = "";
 
	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'];
 
		if ($event_name != $save_event_name)
		{
			echo "<p class=\"style18\"><a href=\"display_event.php?id=$event_id\">$event_name</a> <br />\n";
			
			if (!(empty($eventCode)) && !(empty($seasonCode)))
			{
				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";
			}
			else
			{
				echo "$display_date - $event_time - <a href='#' onclick=\"javascript: DoTicketPopup();\" >Click Here</a></p>\n";
			}
			
			$save_event_name = $event_name;
			$event_counter++;
		}
 
		if ($event_counter > 2)
		{
			break;
		}
	}
 
	if ($event_counter == 0)
	{
		echo "<p class=\"style18\">No Events Scheduled</p>\n";
	}	
	
?>

Open in new window

0
 
LVL 4

Expert Comment

by:ehabafia
ID: 22611515
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
0
 
LVL 4

Expert Comment

by:ehabafia
ID: 22611520
Well it was unfair to close the subject this way, without giving enough information but whatever.
0
 

Author Comment

by:katlees
ID: 22611593
I gave my full code. How is that not enough information? I got an answer elsewhere. Sorry yours didn't work.
0
 
LVL 4

Expert Comment

by:ehabafia
ID: 22613686
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.

0

Featured Post

Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Part of the Global Positioning System A geocode (https://developers.google.com/maps/documentation/geocoding/) is the major subset of a GPS coordinate (http://en.wikipedia.org/wiki/Global_Positioning_System), the other parts being the altitude and t…
Password hashing is better than message digests or encryption, and you should be using it instead of message digests or encryption.  Find out why and how in this article, which supplements the original article on PHP Client Registration, Login, Logo…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.

816 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

8 Experts available now in Live!

Get 1:1 Help Now