new to PHP and have some questions
Moderator: General Moderators
-
mamounjamous
- Forum Newbie
- Posts: 4
- Joined: Sat May 19, 2007 6:41 am
new to PHP and have some questions
in the name of Allah
Hii all,
it is my first time here, I'm new to PHP and I've got a problem which I don't know how to eliminate it.
I have a page which contains a form, this form submits values to a php code which is contained in the same page.
I'm sending firstName and lastName text values from the html form, but for the first time I load this page, those values will be not visible to the php code "as I understand" ... so I get the following messages for the first time even though the page is working:
Notice: Undefined index: firstName in c:\php\www\projects\friendb\addnew.php on line 7
Notice: Undefined index: lastName in c:\php\www\projects\friendb\addnew.php on line 8
here are the 7th and 8th lines in the php code:
$fname = $_POST["firstName"];
$lname = $_POST["lastName"];
I hope I receive the solution for this problem soon.
thank you
Mamoun J.
Hii all,
it is my first time here, I'm new to PHP and I've got a problem which I don't know how to eliminate it.
I have a page which contains a form, this form submits values to a php code which is contained in the same page.
I'm sending firstName and lastName text values from the html form, but for the first time I load this page, those values will be not visible to the php code "as I understand" ... so I get the following messages for the first time even though the page is working:
Notice: Undefined index: firstName in c:\php\www\projects\friendb\addnew.php on line 7
Notice: Undefined index: lastName in c:\php\www\projects\friendb\addnew.php on line 8
here are the 7th and 8th lines in the php code:
$fname = $_POST["firstName"];
$lname = $_POST["lastName"];
I hope I receive the solution for this problem soon.
thank you
Mamoun J.
Last edited by mamounjamous on Sat May 19, 2007 6:56 am, edited 1 time in total.
-
mamounjamous
- Forum Newbie
- Posts: 4
- Joined: Sat May 19, 2007 6:41 am
The Ninja Space Goat | Please use
The Ninja Space Goat | Please use
Code: Select all
,Code: Select all
and [syntax="..."] tags where appropriate when posting code. Your post has been edited to reflect how we'd like it posted. Please read: [url=http://forums.devnetwork.net/viewtopic.php?t=21171]Posting Code in the Forums[/url] to learn how to do it too.[/color]
the values are not in an array my friend, the values are still in the HTML form, thats why the php code can't see them till I press Submit!!
and thats why this problem appears only the first time i open this php page in the web server.
I hope i made the case more clear now
this is the page code by the way:Code: Select all
<?php
require ($_SERVER["DOCUMENT_ROOT"]. "/projects/friendb/config/db_config.php");
$connection = mysql_connect($db_host,$db_user, $db_password) or die("Error Connecting to DB!!");
mysql_select_db($db_name, $connection);
$fname = "";
$lname = "";
[b]$fname = $_POST["firstName"];
$lname = $_POST["lastName"];[/b]
$flen = strlen($fname);
$llen = strlen($lname);
if ($flen > 0 && $llen > 0)
{
$query1 = "INSERT INTO friendb (id, fname, lname, email, phone) VALUES (NULL,'$fname','$lname','$email',NULL)";
mysql_query($query1, $connection) or die (mysql_error());
echo "One Record Added Successfully";
$fname = "";
$lname = "";
}
?>
<html>
<head>
<title>Untitled Document</title>
</head>
<body>
<br><br><br><br>
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST" >
<div align="center">
<table width="40%" border="0">
<tr bgcolor="#00FF33">
<td colspan="2"><div align="center"><font color="8" face="Calibri, Calisto MT"><strong>Add
New Friend</strong></font><font face="Calibri, Calisto MT"></font></div></td>
</tr>
<tr bgcolor="#00FF33">
<td width="47%"><font face="Calibri, Calisto MT">First Name</font></td>
<td width="53%">[b]<input name="firstName" type="text">[/b]</td>
</tr>
<tr bgcolor="#00FF33">
<td><font face="Calibri, Calisto MT">Last Name</font></td>
<td>[b]<input name="lastName" type="text">[/b]</td>
</tr>
<tr bgcolor="#00FF33">
<td> </td>
<td> <div align="center">
<input type="reset" name="Submit2" value="Reset">
<input type="submit" name="Submit" value="Submit">
</div></td>
</tr>
</table>
<a href = "add.php"> Go to All Friends List
</div>
</form>
</body>
</html>The Ninja Space Goat | Please use
Code: Select all
,Code: Select all
and [syntax="..."] tags where appropriate when posting code. Your post has been edited to reflect how we'd like it posted. Please read: [url=http://forums.devnetwork.net/viewtopic.php?t=21171]Posting Code in the Forums[/url] to learn how to do it too.[/color]Before assigning the values to the variables you need to check whether the Submit button is clicked or the page is loading for the first time so
Code: Select all
If (isset('Submit'))
{
assign the values given in the form
}- RobertGonzalez
- Site Administrator
- Posts: 14293
- Joined: Tue Sep 09, 2003 6:04 pm
- Location: Fremont, CA, USA
If you were to have this assignment in your code:
What do you think PHP is going to do with that? The error notice you are getting is because you are attempting to call a value from the $_POST superglobal array that does not exist or is null. What feyd was telling you is that you need to check isset() to see if the array value is set, or array_key_exists() to see if there is an array index in the $_POST superglobal array or empty() to see if that array index is not only set, but has a value as well.
PS $_POST is an array, as is $_GET, $_COOKIE, $_SESSION, $_SERVER and $_REQUEST.
Code: Select all
<?php
$array = array();
$my_var = $array['some_named_string_that_has_never_been_given_a_value'];
?>PS $_POST is an array, as is $_GET, $_COOKIE, $_SESSION, $_SERVER and $_REQUEST.
$_POST is an array. It is a superglobal array. The functions feyd pointed you to are correct. Fist check that $_POST['firstName'] is set. if so, assign it to $fname, otherwise, assign null to it or something.the values are not in an array my friend, the values are still in the HTML form, thats why the php code can't see them till I press Submit!!
and thats why this problem appears only the first time i open this php page in the web server.
Code: Select all
<?php
// .. snip
$fname = isset($_POST["firstName"]) ? $_POST['firstName'] : null;
$lname = isset($_POST["lastName"]) ? $_POST["lastName"] : null;
// .. snip
?>-
mamounjamous
- Forum Newbie
- Posts: 4
- Joined: Sat May 19, 2007 6:41 am
- RobertGonzalez
- Site Administrator
- Posts: 14293
- Joined: Tue Sep 09, 2003 6:04 pm
- Location: Fremont, CA, USA
Please take the time to read the manual, specifically, the sections marked 'language reference', subsections 'types' and 'variables' (especially 'predefined variables').mamounjamous wrote: thank you very much all of you guys, this is really interesting that all $_POST, $_GET, ... things are arrays.
- feyd
- Neighborhood Spidermoddy
- Posts: 31559
- Joined: Mon Mar 29, 2004 3:24 pm
- Location: Bothell, Washington, USA
Looking for the submit button is not proper. Why? Because it's quite possible to submit the form (normally) without the submit button. Look for more specific data, that must be there or use $_SERVER['REQUEST_METHOD']. You still must use isset()/array_key_exists()/empty() however to detect which fields are there or not just to make sure you don't drop errors.Ind007 wrote:Before assigning the values to the variables you need to check whether the Submit button is clicked or the page is loading for the first time soCode: Select all
If (isset('Submit')) { assign the values given in the form }
As the PHP code and the form are on same page, we need to check the whether the page is loading for the first time isn't it? and also user can pass the variables in the url itself. So it is always better to check submit buton otherwise there is no use of giving the name to submit button in the form.feyd wrote:Looking for the submit button is not proper.
Whatever other things you mentioned are good practices.
- feyd
- Neighborhood Spidermoddy
- Posts: 31559
- Joined: Mon Mar 29, 2004 3:24 pm
- Location: Bothell, Washington, USA
It has never been good practice to look for a submit button when it can easily not exist, yet the submission be still correct and not falsified.Ind007 wrote:As the PHP code and the form are on same page, we need to check the whether the page is loading for the first time isn't it? and also user can pass the variables in the url itself. So it is always better to check submit buton otherwise there is no use of giving the name to submit button in the form.
Whatever other things you mentioned are good practices.
-
mamounjamous
- Forum Newbie
- Posts: 4
- Joined: Sat May 19, 2007 6:41 am
thanks
in the name of Allah
Hii all guys
thanks, now it is working very well
drilling for other problems now ... hehe
wish u all a great day
Hii all guys
thanks, now it is working very well
drilling for other problems now ... hehe
wish u all a great day
- superdezign
- DevNet Master
- Posts: 4135
- Joined: Sat Jan 20, 2007 11:06 pm
Right. I believe theres a bug in IE where submission does not post the button if the button was not pressed. If you want to check for submission, your best bet is:feyd wrote:It has never been good practice to look for a submit button when it can easily not exist, yet the submission be still correct and not falsified.
Code: Select all
if(!empty($_POST))
{
if(!empty($_POST['foo']) && !empty($_POST['bar']))
{
// Only respond to this form's data
}
else
{
$error = 'All fields must be filled.';
}
}