Jump to content

Event display


Nimbuz

Recommended Posts

Hello,

 

I'm an absolute beginner in PHP (while expert in html/css) who just started learning basics through video tutorials and ebooks. Now that I know the php syntax, I'm looking to develop (or use an existing script if available) a very very simple event display script.

 

I want to store events with their "Name" "Location" and "Date" in either mysql or a txt file (preferable) and display its contents on a page, but I also want to do is cross-through passed events (could be done by giving them a css class eg. "event-passed").

 

I have no clue how to start. I'd greatly appreciate if you someone write the basic code for me that I can then modify for my use.

 

Many thanks.

 

Link to comment
Share on other sites

  • Replies 53
  • Created
  • Last Reply

Top Posters In This Topic

probably will be your only constructive post here..

 

This isn't for script requests, although you may see us write scripts for people, we write scripts to correct already written code or to help correct a problem with already written code.

 

I'm not trying to come off like a prick, but most of us spend alot of time on this forum and like helping people, and thats what we intend to do, HELP, but give out.

 

I know this is a help request though but many people will most likely disregard this after you have "someone write the basic code for me" in the thread..

 

unless maybe I'm speaking for myself ofcourse, however, unlikely.

 

I can however point you in the right direction, then when you have some established code we can try to help you with errors you encounter.

 

 

I recommend you use mysql (#1), you can get the date using date, although for databases you should use the timestamp, that way you can code with it (all languages are more mathematical than anything else).

 

to check for past events, you would use an if statement and compare time with the timestamp in the database, "if timestamp less than time THEN its older OTHERWISE (else) its new"

 

this is actually pretty simple..

 

hope I help you bro and sorry for sounding snobbish

Link to comment
Share on other sites

I second RussellReal's motion about the whole "write it for me", and for basically the same reasons. You will learn MUCH better if you try it yourself (making mistakes is good because you learn from them.) and then ask for help when you run into trouble.

 

I also agree that you should use MySQL for this as it is much easier to analyze data (i.e. determine if date is in the past) when you pull it from the database.

 

The first steps you should take is go to phpMyAdmin and create your database structure. I will even give ya something you can copy and paste to do it.

CREATE TABLE IF NOT EXISTS `events` (
  `eventId` int(11) NOT NULL auto_increment,
  `eventName` varchar(50) NOT NULL,
  `eventLocation` varchar(255) NOT NULL,
  `eventDate` datetime NOT NULL,
  PRIMARY KEY  (`eventId`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Dumping data for table `events`
--

INSERT INTO `events` (`eventId`, `eventName`, `eventLocation`, `eventDate`) VALUES
(1, 'Event1', 'Bob''s Bar', '2009-01-20 22:30:00'),
(2, 'Event2', 'Jim''s Saloon', '2009-01-23 01:04:58'),
(3, 'Event3', 'Moose Lodge', '2009-01-12 20:00:00'),
(4, 'Event4', 'Holiday Inn', '2009-01-17 15:45:00');

 

As you can see it is 4 fields, the unique event ID, then the name, location and date. I have also created 4 test events to play with. 2 are in the past, 2 are in the future.

 

Are you looking at / learning MySQL with PHP? I suggest you do so. It will make your applications much better and easier to deal with, and picking up MySQL I feel was easier than picking up PHP when I started.

 

Once you have the database created, create a page that will display the events. That will be the first step. Then you will need a page to add/edit events.

 

But, start with trying to create a page to display the events and go from there. There are plenty of people on here that will help ya as you go along.

 

What you are wanting to do is really pretty easy once you get the hang of it, so let's see what you got. :)

 

nate

Link to comment
Share on other sites

chronister you came on here acting so nice :( you make me feel bad lol! but yeah, mysql really does help handling data ALOT, and its so much faster to let mysql do all the cataloging and greabbing and parsing, all you do is REQUEST the data, and then handle it.. its like effortless, rather than with a text file create a system which allows you to edit, remove, add, grab, parse, from a plain text file, and still hold its place within the file.. save the effort and just get hooked on mySQL :P practically all my applications I code, use mysql now, unless its a parser or sumfin simplistic like that.

Link to comment
Share on other sites

chronister you came on here acting so nice :( you make me feel bad lol!

 

RussellReal, your just a big jerk  ;D  just kidding.

 

I have never used a text file for "database" applications... it is MUCH more challenging to do. MySQL is pretty easy to pick up for the simple things... and even some of the more complicated queries are not too bad once you figure out how to structure them.

 

Nate

Link to comment
Share on other sites

The date function is not very difficult to use or understand.

 

I haven't used the date function yet, so I guess I have more PHP to explore before I can even ask for help. :-)

 

Thanks anyway.

 

Geez, you make it sound like we completely denied you any help. We are more than happy to help you and to even help you learn, but we want you to learn and try yourself too.

 

Do you know any mysql? Have you looked at it at all yet?

 

Nate

Link to comment
Share on other sites

ah no, I'm sorry if I sounded harsh. I just meant that although I began READ and UNDERSTAND the syntax now, but I can't actually write something useful yet.

 

Yes, I've tried creating a DB, Tables, Fields. I can also understand how the fileds are populated.

Link to comment
Share on other sites

Ok, then take the sql I gave you and go to PHPMyAdmin and go to your events DB and hit the sql tab up top and paste the sql in there. You should then get your db table created and populated.

 

Once you have that created, then create a page called viewEvents.php or something to that effect. On that page, make a connection to the DB server.

http://us3.php.net/mysql_connect

 

Then select the db.

http://us3.php.net/manual/en/function.mysql-select-db.php

 

Then you will run the query to select the events.

http://us3.php.net/manual/en/function.mysql-query.php

 

Then you will loop through them so you can display them.

 

See if you can get these things nailed down and we will go from there.

 

Nate

 

 

Link to comment
Share on other sites

Thanks heaps for the pointers, Nate.

 

So, my viewEvents.php is this:

 

<?php
// DB Connection
$connection = mysql_connect("localhost","root","mypass");
if (!$connection) {
	die("Database connection failed: " . mysql_error());
}

// Select DB
$db_select = mysql_select_db("hightrek", $connection);
if (!$db_select) {
	die("Database connection failed: " . mysql_error());
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>View Events</title>
</head>
<body>
<?php
	// Perform Query
	$result = mysql_query("SELECT * FROM hightrek"), $connection);

	if (!$result) {
		die("Database query failed: " . mysql_error());
	}

	// Use Returned Data
	while ($row = mysql_fetch_array($result)) {
		echo $row["eventId"]." ".$row["eventName"]." ".$row["eventLocation"]." ".$row["eventDate"]."<br />";
	}
?>
</body>
</html>
<?php
// Close Connection
mysql_close($connection);
?>

 

but it gives a syntax error:

 

Parse error: syntax error, unexpected ',' in /Volumes/disk2/Work/www/php/viewEvents.php on line 23

 

I know syntax errors are silly errors, but I so dumb that I couldn't find whats wrong although I went through the code twice.

Link to comment
Share on other sites

Ah great. So with:

 

	<?php
	// Perform Query
	$result = mysql_query("SELECT * FROM events", $connection);

	if (!$result) {
		die("Database query failed: " . mysql_error());
	}

	// Use Returned Data
	while ($row = mysql_fetch_array($result)) {
		echo $row["eventId"]." ".$row["eventName"]." ".$row["eventLocation"]." ".$row["eventDate"]."<br />";
	}
?>

 

It outputs:

 

1 Event1 Bob's Bar 2009-01-20 22:30:00

2 Event2 Jim's Saloon 2009-01-23 01:04:58

3 Event3 Moose Lodge 2009-01-12 20:00:00

4 Event4 Holiday Inn 2009-01-17 15:45:00

 

..so it worked. All thanks to you! :-D

Link to comment
Share on other sites

Create a form to input the data. It will be a simple 3 field form. The ID will be auto-generated.

 

Once you have the form (set it's method as post... method="post"), you will use the superglobal $_POST['fieldname'] to get the results.

 

Create your insert page like this...

 

<?php
if(isset($_POST['nameOfSubmitButton'))
{
// process form

// initiate another connection
// set field data to easy to use vars and run them through mysql_real_escape_string($var) to sanitize data and protect against injection attacks
// run query to insert the data 
}
else
{
?>
Create Form Here
<?php
}
?>

 

Get that one working and then we can help you use this form again to be the edit form as well.

 

Nate

Link to comment
Share on other sites

Yes, I've been working on that. So, I created a form:

 

<form action="insert.php" method="POST">
<fieldset>
	<legend>Create a Row</legend>
<label>Event Name:</label> <input type="text" name="event_name" /> <br />
<label>Event Location:</label> <input type="text" name="event_location" /> <br />
<label>Event Date:</label> <input type="text" name="event_date" /> <br />
<input type="submit" name="create_event" />
</fieldset>
</form>

 

and insert.php:

 

<?php
// DB Connection
$connection = mysql_connect("localhost","root","mypass");
if (!$connection) {
	die("Database connection failed: " . mysql_error());
}
// Select DB
$db_select = mysql_select_db("hightrek", $connection);
if (!$db_select) {
	die("Database connection failed: " . mysql_error());
}

// CODE BLOCK
if(isset($_POST['create_event'])) {
	// INSERT DATA
	$insert_sql="INSERT INTO events (eventName, eventLocation, eventDate)
	VALUES
	($_POST[event_name]','$_POST[event_location]','$_POST[event_date]')";

	if (!mysql_query($insert_sql, $connection))
	  {
	  die("Database connection failed: " . mysql_error());
	  }
	echo "1 record added";
} else {
	echo "Sorry, something wrong!";
}
?>

<a href="viewEvents.php">Return to previous page</a>

<?php
// Close Connection
mysql_close($connection);
?>

 

but it throws an error:

 

Database connection failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Event 2','My Place 2','anytime 2')' at line 3

Link to comment
Share on other sites

I modified the codeblock to:

 

// CODE BLOCK
if(isset($_POST['create_event'])) {
	// INSERT DATA
	$insert_sql = "INSERT INTO events (eventId, eventName, eventLocation, eventDate)
	VALUES
	($_POST[event_id]', $_POST[event_name]','$_POST[event_location]','$_POST[event_date]')";

	if (!mysql_query($insert_sql, $connection))
	  {
	  die("Row insert failed: " . mysql_error());
	  }
	echo "1 record added";

} else {
	echo "Sorry, something wrong!";
}

 

and the error is now:

 

Notice: Undefined index: event_id in /Volumes/disk2/Work/www/php/insert.php on line 18
Row insert failed: Column count doesn't match value count at row 1

Link to comment
Share on other sites

oh great, I can now add rows with this:

 

	// CODE BLOCK
if(isset($_POST['create_event'])) {
	// INSERT DATA
	$insert_sql = "INSERT INTO events (eventId, eventName, eventLocation, eventDate)
	VALUES
	('$_POST', '$_POST[event_name]','$_POST[event_location]','$_POST')";

	if (!mysql_query($insert_sql, $connection))
	  {
	  die("Row insert failed: " . mysql_error());
	  }
	echo "1 record added";

} else {
	echo "Sorry, something wrong!";
}

 

but a couple questions:

 

1. Is this statement correct:

('$_POST', '$_POST[event_name]','$_POST[event_location]','$_POST')";

 

2. Date is inserted as 0000-00-00 00:00:00, how do I set it to current date and time?

 

 

Thanks

Link to comment
Share on other sites

<?php

// CODE BLOCK
   if(isset($_POST['create_event'])) {
      // INSERT DATA

	// sanitize the data to protect against injection attacks
	$eventName = mysql_real_escape_string($_POST['event_name'];
	$eventLocation = mysql_real_escape_string($_POST['event_location']);
	// we take what was entered in the date field, and run it through strtotime() (string to time) which gives a unix timestamp
	// then we run it through the date function and put it in the format we need for mysql.
	$eventDate = date('Y-m-d h:i:s', strtotime($_POST['event_date']) ); 

      $insert_sql = "INSERT INTO events (eventName, eventLocation, eventDate) VALUES ('$eventName', $eventLocation', '$eventDate')";
      
      $result = mysql_query($insert_sql, $connection) or die("Row insert failed: " . mysql_error());
        
	if(mysql_affected_rows() > 0)
	{        
		echo "1 record added";
	}
      
   } else {
     // the form has not been submitted yet.. no need to do anything here
   }
?>

 

I made a few minor changes... lemme know if you have any questions about it.

Link to comment
Share on other sites

There was a missing ")" but even after fixing that, I get this error:

 

Row insert failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Place 2', '1970-01-01 05:30:00')' at line 1

Link to comment
Share on other sites

Basically the strtotime() function cannot parse the date in the format you have it in.

 

How are you entering the dates for that field? You might split the date and time fields up and use a javascript calendar popup script to populate the date, or you could specify it be entered in a certain way and check in the script that it is being entered that way.

 

Check out the following examples.. and you might want to change the following

 

in date('Y-m-d h:i:s'.......) change h to H so you get the 24 hour format (military time)

<?php
echo date('Y-m-d H:i:s', strtotime('may 30 2009 1:30:00 pm') ); // prints as 2009-05-30 13:30:00 - Good

echo date('Y-m-d H:i:s', strtotime('05/30/09 1:35 am') ); // prints as 2009-05-30 01:35:00 - Good

echo date('Y-m-d H:i:s', strtotime('05-30-2009 13:51:00') ); // prints as 1969-12-31 18:00:00 - Not Good

?>      

 

Nate

Link to comment
Share on other sites

Or can I leave the date field blank (like ID) and let mysql add current date and time automatically when row is added? Is that possible? How would I do that?

 

EDIT: Ah no, its not a normal record so the date is certainly required. But I'd sure like to know how to leave date/time blank and let mysql add it automatically. Should be really useful in the future.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.