Jump to content


Photo

Date format function


  • Please log in to reply
19 replies to this topic

#1 genista

genista
  • Members
  • PipPipPip
  • Advanced Member
  • 149 posts

Posted 24 July 2006 - 03:35 PM

Hi,

I know the following is a bit crude, but I have looked at the manual and am really stuck. I have several join forms, update forms and any other pages where a user can enter a dat. Being in the Uk I want to have the format show dd-mm-yyyy as opposed to mysql's formatting. So what I have done is create a function, called from a functions.php include. The following code gives me an unexpected t variable error@

join form:

date($formdate = $date_ofbirth);

functions.php:

function date ($formdate) {

$date1 = $formdate
$date2 = date("Y-m-d",strtotime($date1)); 

}

Any ideas on how to do this, I will need several dates to be formatted on each page to add to the confusion!


G

#2 wildteen88

wildteen88
  • Staff Alumni
  • Advanced Member
  • 10,482 posts
  • LocationUK, Bournemouth

Posted 24 July 2006 - 03:37 PM

Change
date($formdate = $date_ofbirth);
to:
date($date_ofbirth);


#3 genista

genista
  • Members
  • PipPipPip
  • Advanced Member
  • 149 posts

Posted 24 July 2006 - 03:41 PM

Ok, I have done that, thanks, the problem is in the function.php file, it is this that is causing the error  off the following code:

function date ($formdate) {

$date1 = $formdate
$date2 = date("Y-m-d",strtotime($date1)); 

}


#4 wildteen88

wildteen88
  • Staff Alumni
  • Advanced Member
  • 10,482 posts
  • LocationUK, Bournemouth

Posted 24 July 2006 - 03:46 PM

You are missing a semi-colon (;) at end of this line:
$date1 = $formdate
it should be this:
$date1 = $formdate;


#5 genista

genista
  • Members
  • PipPipPip
  • Advanced Member
  • 149 posts

Posted 24 July 2006 - 03:55 PM

Ok, my stupid fault. However now I get: "Cannot redeclare date ()" off that code. Would this be off $date1 = $formdate?

#6 wildteen88

wildteen88
  • Staff Alumni
  • Advanced Member
  • 10,482 posts
  • LocationUK, Bournemouth

Posted 24 July 2006 - 04:00 PM

No its because your creating a function called data. But there is already a predifined function called date. So change you code to this:
function my_date ($formdate) {

$date1 = $formdate
$date2 = date("Y-m-d",strtotime($date1)); 

}
The when ever you want to call your data function use my_date

#7 genista

genista
  • Members
  • PipPipPip
  • Advanced Member
  • 149 posts

Posted 24 July 2006 - 04:08 PM

Ok, the form is loading without error, I will test it and let you know.

Thanks again,

G

#8 genista

genista
  • Members
  • PipPipPip
  • Advanced Member
  • 149 posts

Posted 25 July 2006 - 09:57 AM

Ok I have tested it, but I am getting nothing posted to the database, any ideas?

#9 designationlocutus

designationlocutus
  • Members
  • PipPipPip
  • Advanced Member
  • 62 posts

Posted 25 July 2006 - 10:11 AM

You need to return $date2

#10 wildteen88

wildteen88
  • Staff Alumni
  • Advanced Member
  • 10,482 posts
  • LocationUK, Bournemouth

Posted 25 July 2006 - 11:17 AM

Yeah you need to return $date2 like so:
function my_date ($formdate) {

$date1 = $formdate
$date2 = date("Y-m-d",strtotime($date1)); 

return $date2;

}
Now to use the value returned from your date function you so this:
$date = my_date('25-12-2006');
You now use the $date variable within your SQL Query.

#11 genista

genista
  • Members
  • PipPipPip
  • Advanced Member
  • 149 posts

Posted 25 July 2006 - 02:04 PM

Ok, so should I be posting $date rather than $date_ofbirth? By doing the following in my script I still get no post to the database, therefore it makes sense to me that I should $_POST ["$date"] as opposed to date_ofbirth.

function my_date ($formdate) {

$date1 = $formdate;
$date2 = date("Y-m-d",strtotime($date1)); 

return $date2;

}

join form:

$date = my_date('date_ofbirth');

Thanks g

#12 wildteen88

wildteen88
  • Staff Alumni
  • Advanced Member
  • 10,482 posts
  • LocationUK, Bournemouth

Posted 25 July 2006 - 02:27 PM

Is date_ofbirth the name of a form field? If it is use $_POST['date_ofbirth'] to get the value for that field, like so:
$date = my_date($_POST['date_ofbirth']);


#13 genista

genista
  • Members
  • PipPipPip
  • Advanced Member
  • 149 posts

Posted 25 July 2006 - 02:39 PM

Thanks for that, but still not working, this is the entire form as it stands, I can see that:
$date = my_date($_POST['date_ofbirth']);
may conflict with the newuser function as in the code below:

/*
Accepting a <form> submission:
The $submit variable in the $_POST superglobal array will only be set if the user has clicked on the 'submit'
button.  This is a reasonable way to check that the user did in fact submit the form.
*/
if(isset($_POST["submit"])){
    // Info has been submitted, check it:
    // Check login, password and password2 are not empty:
    # field_validator($field_descr, $field_data, $field_type, $min_length="", $max_length="", $field_required=1) {
    field_validator("username", $_POST["username"], "alphanumeric", 4, 15);
    field_validator("password", $_POST["password"], "string", 4, 15);
    field_validator("confirmation password", $_POST["password2"], "string", 4, 15);
    
    // Check that password and password2 match:
    if(strcmp($_POST["password"], $_POST["password2"])) {
        // The password and confirmation password didn't match,
        // Add a message to be displayed to the user:
        $messages[]="Your passwords did not match";
    }

    /*
    Checking the login name doesn't already exist in the 'users' table:

    The idea here is that if an entry already exists
    in the 'users' db table where 'username' equals $username
    (ie the login name the user has just provided in the
    join form), then we return an error message saying that
    that username is already taken and ask the user to 
    choose another name.
    */

    // build query: line 52
    $query="SELECT username FROM users WHERE username='".$_POST["username"]."'";
    
    // Run query:
    $result=mysql_query($query, $link) or die("MySQL query $query failed.  Error if any: ".mysql_error());
    
    // If a row exists with that username, issue an error message:
    if( ($row=mysql_fetch_array($result)) ){
        $messages[]="Username \"".$_POST["username"]."\" already exists.  Try another.";
    }

$date = my_date($_POST['date_ofbirth']);



    /*
    Creating a new user entry in the users table:

    If we got here and no error messages were placed in the $messages array above,
    then the $username that the user provided was valid and we can
    continue to create an entry in the users table in the mysql db.
    We also effectively 'login' the user and then forward them to the members.php
    page using the 'header()' function.
    */
    if(empty($messages)) {
        // registration ok, get user id and update db with new info:
        newUser($_POST["username"], $_POST["password"], $_POST["first_name"], $_POST["maiden_name"], $_POST["last_name"], $_POST["address_line1"], $_POST["address_line2"], $_POST["town"], $_POST["county"], $_POST["postcode"], $_POST["daytime_phone"], $_POST["evening_phone"], $_POST["email_address"], $_POST["date_ofbirth"]);

        // Log the user in:
        cleanMemberSession($_POST["username"], $_POST["password"]);

        // and then redirect them to the members page:
        header("Location: members.php?".session_name()."=".session_id());

        /*
        Note this script stops executing after the header() function above!
        (the user is forwarded to the members.php page)
        */
    }
}
/*
Below here is HTML interposed with PHP.  This HTML is only output if
a. the form hasn't been submitted
b. the form was submitted but errors were detected
*/
?>
<html>
<head>
<title><?php print $title ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<?php doCSS()?>
</head>
<body>
<h1><?php print $title?></h1>
<?php
//Check if $message is set, and output it if it is:
if(!empty($messages)){
    displayErrors($messages);
}
?>
<form action="<?=$_SERVER["PHP_SELF"]?>" method="POST">
<table>
<tr><td>Username:</td><td><input type="text" name="username" 
value="<?php print isset($_POST["username"]) ? $_POST["username"] : "" ;?>" 
maxlength="15"></td></tr>
<tr><td>Password:</td><td><input type="password" name="password" value="" maxlength="15"></td></tr>
<tr><td>Confirm password:</td><td><input type="password" name="password2" value="" maxlength="15"></td></tr>
<tr><td>First Name:</td><td><input type="text" name="first_name" value="" maxlength="25"></td></tr>
<tr><td>Maiden Name:</td><td><input type="text" name="maiden_name" value="" maxlength="25"></td></tr>
<tr><td>Last Name:</td><td><input type="text" name="last_name" value="" maxlength="25"></td></tr>
<tr><td>Address Line 1:</td><td><input type="text" name="address_line1" value="" maxlength="25"></td></tr>
<tr><td>Address Line 2:</td><td><input type="text" name="address_line2" value="" maxlength="25"></td></tr>
<tr><td>Town:</td><td><input type="text" name="town" value="" maxlength="25"></td></tr>


#14 wildteen88

wildteen88
  • Staff Alumni
  • Advanced Member
  • 10,482 posts
  • LocationUK, Bournemouth

Posted 25 July 2006 - 02:43 PM

Is that the full code? As it looks incomplete to me. As your my_date, and a few other functions are nonexistant and half the html is missing.

#15 genista

genista
  • Members
  • PipPipPip
  • Advanced Member
  • 149 posts

Posted 25 July 2006 - 02:46 PM

ok I should explain, the functions are called from functions.php include and I only pasted a bit of the html. Apart from the date formatting everything else is working fine.

Thanks,

G


#16 genista

genista
  • Members
  • PipPipPip
  • Advanced Member
  • 149 posts

Posted 26 July 2006 - 09:25 AM

I am sure there is a conflict with the newuser function posting the date_ofbirth and the my_date function trying to do the same of the code I have, is this the problem?

#17 genista

genista
  • Members
  • PipPipPip
  • Advanced Member
  • 149 posts

Posted 26 July 2006 - 02:48 PM

Is the problem above because of the duplications of $_post in
$date = my_date($_POST['date_ofbirth']);

and then in the newuser function:

newUser($_POST["username"], $_POST["password"], $_POST["first_name"], $_POST["maiden_name"], $_POST["last_name"], $_POST["address_line1"], $_POST["address_line2"], $_POST["town"], $_POST["county"], $_POST["postcode"], $_POST["daytime_phone"], $_POST["evening_phone"], $_POST["email_address"], $_POST["date_ofbirth"]);

?

#18 kenrbnsn

kenrbnsn
  • Staff Alumni
  • Advanced Member
  • 8,235 posts
  • LocationHillsborough, NJ, USA

Posted 26 July 2006 - 02:53 PM

Your problem is that you store the date from your function in the variable $date, but you're storing the value in $_POST['date_ofbirth'] which is the unchanged data from the form.

Try:
<?php
$date = my_date($_POST['date_ofbirth']);
newUser($_POST["username"], $_POST["password"], $_POST["first_name"], $_POST["maiden_name"], $_POST["last_name"], $_POST["address_line1"], $_POST["address_line2"], $_POST["town"], $_POST["county"], $_POST["postcode"], $_POST["daytime_phone"], $_POST["evening_phone"], $_POST["email_address"], $date);
?>

Ken

#19 genista

genista
  • Members
  • PipPipPip
  • Advanced Member
  • 149 posts

Posted 26 July 2006 - 03:50 PM

I copied it just as you mentioned above, but insetad of posting it to the date_ofbirth it inserts it into 'details,' details being the previous entry in the newuser part:


        newUser($_POST["username"], $_POST["password"], $_POST["first_name"], $_POST["maiden_name"], $_POST["last_name"], $_POST["address_line1"], $_POST["address_line2"], $_POST["town"], $_POST["county"], $_POST["postcode"], $_POST["daytime_phone"], $_POST["evening_phone"], $_POST["email_address"], $_POST["details"], $date); 


and on entering a date like so 17-11-1967 it comes out like so:

2023-04-03
Does this have something to do with strtotime?

#20 genista

genista
  • Members
  • PipPipPip
  • Advanced Member
  • 149 posts

Posted 26 July 2006 - 04:00 PM

Oh, and if I leave it blank I get "strtotime(): Called with empty time parameter"




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users