James
James

Reputation: 546

PHP undefined offset

I'm creating an events system with PHP/MySQL and I'm using PHP to piece the date together to form a string. I want my date in the format of dd-mm-yy. I'm using the following code:

 $title = $_POST['title'];
         $title = htmlspecialchars($title);
         $type = $_POST['evtype'];
         $type = htmlspecialchars($type);
         $evdesc = $_POST['evdesc'];
         $evdesc = htmlspecialchars($evdesc);
         $startdate = ( isset( $_POST['startdate'] ) ) ? $_POST['startdate'] : '' ;
         $starttime = $_POST['starttime'];
         $starttime = htmlspecialchars($starttime);
         $enddate = ( isset( $_POST['enddate'] ) ) ? $_POST['enddate'] : '' ;
         $endtime = $_POST['endtime'];
         $endtime = htmlspecialchars($endtime);
         $location = $_POST['location'];
         $location = htmlspecialchars($location);
 // assemble dates and times
list($startday, $startmonth, $startyear) = array_pad(explode('-', $startdate, 2), 2, null);
$evstart = '' . $startyear . '-' . $startmonth . '-' . $startday . ' ' . $starttime . '';

list($endday, $endmonth, $endyear) = array_pad(explode('-', $enddate, 2), 2, null); // explode("-", $enddate);
$evend = '' . $endyear . '-' . $endmonth . '-' . $endday . ' ' . $endtime . '';
         // end assemble

However, this code doesn't explode the data and the only thing that posts to the database later on is "-- (time here)"

Errors are:

Notice: Undefined offset: 2 in calendar.php on line 42

Notice: Undefined offset: 2 in calendar.php on line 45

Upvotes: 0

Views: 578

Answers (1)

MightyPork
MightyPork

Reputation: 18861

You're using

array_pad( /* something*/, 2, null)

and are expecting to get three items in the array.

list($startday, $startmonth, $startyear) = ...

I think if you change this 2 to 3, it will work just fine.

(For that matter, your explode() should have limit = 3, not 2, too)

array_pad() reference

Upvotes: 1

Related Questions