Jump to content

Date format function


genista

Recommended Posts

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:

[code=php:0]
date($formdate = $date_ofbirth);
[/code]

functions.php:

[code=php:0]
function date ($formdate) {

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

}
[/code]

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


G
Link to comment
Share on other sites

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:

[code=php:0]
function date ($formdate) {

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

}
[/code]
Link to comment
Share on other sites

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

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

}[/code]
The when ever you want to call your data function use my_date
Link to comment
Share on other sites

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

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

return $date2;

}[/code]
Now to use the value returned from your date function you so this:
[code]$date = my_date('25-12-2006');[/code]
You now use the $date variable within your SQL Query.
Link to comment
Share on other sites

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.

[code=php:0]
function my_date ($formdate) {

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

return $date2;

}
[/code]

join form:

[code=php:0]
$date = my_date('date_ofbirth');
[/code]

Thanks g
Link to comment
Share on other sites

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

[code=php:0]
/*
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>
[/code]
Link to comment
Share on other sites

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

and then in the newuser function:

[code=php:0]
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"]);
[/code]

?
Link to comment
Share on other sites

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:
[code]<?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);
?>[/code]

Ken
Link to comment
Share on other sites

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:

[code=php:0]

        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);

[/code]

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?
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.