eduard Posted April 25, 2012 Share Posted April 25, 2012 I still don´t understand undefined index? First. I had it without ´isset´! <?php $con = mysql_connect("localhost","root","usbw") or die(mysql_error()); echo "Connected to MySQL";mysql_select_db("website")or die(mysql_error());echo "Connected to Database";if (isset($_POST['value'])){ // Instructions if $_POST['value'] exist}$var1=$_POST["Site_Name"];$var2=$_POST["Site_URL"];$var3=$_POST["Description"];$sql="INSERT INTO links (Site_Name, Site_URL, Description)VALUES('$var1','$var2','$var3 ')";if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); }echo "1 record added";mysql_close($con);?> Link to comment Share on other sites More sharing options...
justsomeguy Posted April 25, 2012 Share Posted April 25, 2012 You get an undefined index error if you try to do something like this: $var1=$_POST["Site_Name"]; and $_POST["Site_Name"] doesn't exist. The index is "Site_Name", and the undefined index means that the $_POST array does not have an index called "Site_Name". Link to comment Share on other sites More sharing options...
eduard Posted April 25, 2012 Author Share Posted April 25, 2012 You get an undefined index error if you try to do something like this: $var1=$_POST["Site_Name"]; and $_POST["Site_Name"] doesn't exist. The index is "Site_Name", and the undefined index means that the $_POST array does not have an index called "Site_Name". Thanks very much for your clear explanation! Link to comment Share on other sites More sharing options...
eduard Posted April 26, 2012 Author Share Posted April 26, 2012 Fixed: <?php $con = mysql_connect("localhost","root","usbw") or die(mysql_error()); echo "Connected to MySQL";mysql_select_db("website")or die(mysql_error());echo "Connected to Database";if (isset($_POST['value'])){ // Instructions if $_POST['value'] exist}$var1=$_POST;$var2=$_POST;$var3=$_POST;$sql="INSERT INTO links (Site_Name, Site_URL, Description)VALUES('$var1','$var2','$var3 ')";if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); }echo "1 record added";mysql_close($con);?> Link to comment Share on other sites More sharing options...
eduard Posted April 26, 2012 Author Share Posted April 26, 2012 Why do the data filled in my insert.html not go to my db? <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html lang='en' xml:lang='en' xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>database</title></head><body><form action="insert.php" method="POST"><label for="Site_Name">Site_Name:</label><input type="text" name="Site_Name" id="Site_Name"/><label for="Site_URL">Site_URL:</label><input type="text" name="Site_URL" id="Site_URL"/><label for="Description">Description:</label><input type="text" name="Description" id="Description"/><input type="submit" value="Add Link"/></form></body></html> <?php $con = mysql_connect("localhost","root","usbw") or die(mysql_error());mysql_select_db("website")or die(mysql_error());if (isset($_POST['value'])){ // Instructions if $_POST['value'] exist}$var1=$_POST;$var2=$_POST;$var3=$_POST;$sql="INSERT INTO links (Site_Name, Site_URL, Description)VALUES('$var1','$var2','$var3 ')";if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); }echo "1 record added";mysql_close($con);?> Link to comment Share on other sites More sharing options...
justsomeguy Posted April 26, 2012 Share Posted April 26, 2012 That definitely fixed the undefined index error. Now you have 3 variables set to copies of $_POST, but at least there's no undefined index. Link to comment Share on other sites More sharing options...
justsomeguy Posted April 26, 2012 Share Posted April 26, 2012 Let's keep this to 1 thread, this is the same issue. The reason the data doesn't go into your database is because $var1, $var2, and $var3 are all set to copies of the $_POST array, not individual things in the array. If you want to see what the array contains then use print_r: echo 'POST: ';print_r($_POST); Link to comment Share on other sites More sharing options...
eduard Posted April 26, 2012 Author Share Posted April 26, 2012 That definitely fixed the undefined index error. Now you have 3 variables set to copies of $_POST, but at least there's no undefined index. I don´t understand it! Do I´ve to remove $_POST definitively? Link to comment Share on other sites More sharing options...
justsomeguy Posted April 26, 2012 Share Posted April 26, 2012 No, you don't. You need to access a certain index in $_POST. The problem is that you're not accessing the correct one, or that you're not checking if it exists first. Print out $_POST like I showed above, maybe the item you're looking for exists but you're just not using the correct index. If you saw what $_POST contains then maybe you could figure out why you're not using the correct index. Printing out the data you're trying to use is an important part of debugging, don't assume that $_POST contains certain data if you haven't verified it. Print it out to see exactly what is there, and match up what you see with the HTML of your form and what you're trying to get in PHP. Your code in post 1 is more correct than your code in post 4, you just need to do some debugging to figure out what the data is that you're working with. One hint is that your PHP code does not check if the form was submitted, it just tries to access items in $_POST. Those will only be there if the form was submitted, but the PHP code doesn't check for that before it tries to get things from $_POST. Link to comment Share on other sites More sharing options...
eduard Posted April 26, 2012 Author Share Posted April 26, 2012 No, you don't. You need to access a certain index in $_POST. The problem is that you're not accessing the correct one, or that you're not checking if it exists first. Print out $_POST like I showed above, maybe the item you're looking for exists but you're just not using the correct index. If you saw what $_POST contains then maybe you could figure out why you're not using the correct index. Printing out the data you're trying to use is an important part of debugging, don't assume that $_POST contains certain data if you haven't verified it. Print it out to see exactly what is there, and match up what you see with the HTML of your form and what you're trying to get in PHP. Your code in post 1 is more correct than your code in post 4, you just need to do some debugging to figure out what the data is that you're working with. One hint is that your PHP code does not check if the form was submitted, it just tries to access items in $_POST. Those will only be there if the form was submitted, but the PHP code doesn't check for that before it tries to get things from $_POST. I don´t get it! <?php$con = mysql_connect("localhost","root","usbw") or die(mysql_error());mysql_select_db("website", $con);$Site_Name=sname$Site_URL=surl$Description=description $sql="INSERT INTO links (Site_Name, Site_URL, Description)VALUES('$_POST[sname] ' , ' $_POST[surl] ' , ' $_POST[description] ' ) " ;if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); }echo "1 record added";mysql_close($con);?> How do you use print_r($_POST)? Link to comment Share on other sites More sharing options...
justsomeguy Posted April 26, 2012 Share Posted April 26, 2012 Put it anywhere in that code and it will print the structure of the array. Link to comment Share on other sites More sharing options...
eduard Posted April 26, 2012 Author Share Posted April 26, 2012 Put it anywhere in that code and it will print the structure of the array. I think I got it! Do I get as error ´undefined index´ because this php file doesn´t work on its own, but together with the html form where I fill in the data? Link to comment Share on other sites More sharing options...
justsomeguy Posted April 26, 2012 Share Posted April 26, 2012 Again, you get an undefined index error any time you try to access an index that does not exist in an array. $_POST is an array, and $_POST only contains indexes if a form was submitted via post. So if you try to access items in $_POST in a script that is not processing a form then you will get that error. Link to comment Share on other sites More sharing options...
eduard Posted April 27, 2012 Author Share Posted April 27, 2012 2012, 4 26 PROBLEM EDUARD LID (FINALLY) SOLVED:HE WAS TRYING TO LEARN THE PHP CODE, NOT THE THEORY (SORRY!) Link to comment Share on other sites More sharing options...
eduard Posted April 27, 2012 Author Share Posted April 27, 2012 Again, you get an undefined index error any time you try to access an index that does not exist in an array. $_POST is an array, and $_POST only contains indexes if a form was submitted via post. So if you try to access items in $_POST in a script that is not processing a form then you will get that error. Your reply is clear! Where do I study that? Link to comment Share on other sites More sharing options...
Ingolme Posted April 27, 2012 Share Posted April 27, 2012 The $_POST[] array only will get values if a <form> was sent with <input> elements that have that value in them. If a form was not sent to the page, $_POST will not have anything in it, therefore if you try to access $_POST['Site_Name'] it will not exist.(undefined) Link to comment Share on other sites More sharing options...
thescientist Posted April 27, 2012 Share Posted April 27, 2012 Your reply is clear! Where do I study that? oh man, good question! if only there was website (or a bunch of websites) that offered tutorials on how to use arrays, forms, and everything else you've ever asked for? Oh wait, there is...http://www.w3schools.com/php/default.asphttp://www.google.com/ And even though you say don't understand it, every example anyone has given you is pretty much exactly what you would get out of the tutorials. So, i don't really think it's a fair arguement on your part. Link to comment Share on other sites More sharing options...
eduard Posted April 27, 2012 Author Share Posted April 27, 2012 (edited) oh man, good question! if only there was website (or a bunch of websites) that offered tutorials on how to use arrays, forms, and everything else you've ever asked for? Oh wait, there is...http://www.w3schools...php/default.asphttp://www.google.com/ And even though you say don't understand it, every example anyone has given you is pretty much exactly what you would get out of the tutorials. So, i don't really think it's a fair arguement on your part. Array is simple to find! But don´t I need a tutorial in which array and $_POST are both explained? Like the reply of Ingolme - good, but I don´t understand it! (need php for dummies! Edited April 27, 2012 by eduardlid Link to comment Share on other sites More sharing options...
eduard Posted April 27, 2012 Author Share Posted April 27, 2012 The $_POST[] array only will get values if a <form> was sent with <input> elements that have that value in them. If a form was not sent to the page, $_POST will not have anything in it, therefore if you try to access $_POST['Site_Name'] it will not exist.(undefined) They are exactly the same: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html lang='en' xml:lang='en' xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>database</title></head><body><form action="insert.php" method="POST">Site_Name: <input type="text" name="sname"/>Site_URL: <input type="text" name="surl"/>Description: <input type="text" name="description"/><input type="submit" value="Add Link"/></form></body></html> <?php$con = mysql_connect("localhost","root","usbw") or die(mysql_error());mysql_select_db("website", $con);$links=array("sname","surl","description");$sql="INSERT INTO links (Site_Name, Site_URL, Description)VALUES('$_POST[sname] ' , ' $_POST[surl] ' , ' $_POST[description] ' ) " ;if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); }echo "1 record added";mysql_close($con);?> ??? Link to comment Share on other sites More sharing options...
Ingolme Posted April 27, 2012 Share Posted April 27, 2012 When you first enter that page, the form is not submitted yet, but you are still trying to put data into the database. Use isset() to determine if data has arrived from the form yet. Link to comment Share on other sites More sharing options...
thescientist Posted April 27, 2012 Share Posted April 27, 2012 Array is simple to find! But don´t I need a tutorial in which array and $_POST are both explained? Like the reply of Ingolme - good, but I don´t understand it! (need php for dummies! you need to look a little bit at least!http://www.w3schools.com/php/php_forms.asphttp://www.w3schools.com/php/php_get.asphttp://www.w3schools.com/php/php_post.asphttp://www.w3schools.com/php/php_mysql_insert.asp This has not been the first time you've been shown these links. Link to comment Share on other sites More sharing options...
eduard Posted April 27, 2012 Author Share Posted April 27, 2012 (edited) you need to look a little bit at least!http://www.w3schools...p/php_forms.asphttp://www.w3schools...php/php_get.asphttp://www.w3schools...hp/php_post.asphttp://www.w3schools...ysql_insert.asp This has not been the first time you've been shown these links. Thanks! I´m sure about that aswell as I´m sure this is the first time I´m trying to learn php good!I´ll study them again, because I´ve seen them all!In none of them is clearly explained what´s my problem (´undefined index´)! At least not to me! Edited April 27, 2012 by eduardlid Link to comment Share on other sites More sharing options...
Don E Posted April 27, 2012 Share Posted April 27, 2012 Eduard, I thought you found this post helpful about 'undefined index': http://w3schools.invisionzone.com/index.php?showtopic=43179&view=findpost&p=238353 Link to comment Share on other sites More sharing options...
dsonesuk Posted April 27, 2012 Share Posted April 27, 2012 Yea! but remember he said that a day and half ago, he's entered another Eduard Groundhog Zone since then, cue twilight zone theme. 2 Link to comment Share on other sites More sharing options...
thescientist Posted April 27, 2012 Share Posted April 27, 2012 (edited) Eduard, I thought you found this post helpful about 'undefined index': http://w3schools.inv...ndpost&p=238353 welcome to our world. this has been going on, on and off, for about a year now. Edited April 27, 2012 by thescientist Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now