Freedom-n-Democrazy Posted September 4, 2011 Share Posted September 4, 2011 Hi all, I am making a newsletter sign up system and needing a little help with the PHP side of things. The HTML code I am about to quote is a stripped back version of what I am trying to do (keeping it simple for the thread). HTML code: <FORM action="confirmation.html" method="post"> <DIV> <SPAN> Action: <SELECT name="action"> <OPTION>Register</OPTION> <OPTION>Unregister</OPTION> </SELECT> E-mail: <INPUT name="e-mail" type="text"></INPUT> <BR> Newsletter: <SELECT name="newsletter"> <OPTION>Mens</OPTION> <OPTION>Womens</OPTION> </SELECT> <BR> <INPUT type="submit" value="Submit"> </SPAN> </DIV> </FORM> PHP code: <?php $link = mysql_connect('localhost', 'testuser', 'testpw'); if (!$link) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; mysql_select_db('testdb', $link); if $_POST['action'] == ('register') { if $_POST['newsletter'] == ('mens') { $sql = "INSERT INTO newsletters(mens) VALUES('{$_POST['e-mail']}')" } if $_POST['newsletter'] == ('womens') { $sql = "INSERT INTO newsletters(womens) VALUES('{$_POST['e-mail']}')" }; } if (!mysql_query($sql,$link)) { die('Error: ' . mysql_error()); } echo 'Done!'; mysql_close($link); ?> I know the HTML part is fine, but its the PHP code where I am making the mistakes. I think I am treating it too much like Python. What am I doing wrong? Quote Link to comment https://forums.phpfreaks.com/topic/246402-use-if-correctly/ Share on other sites More sharing options...
the182guy Posted September 4, 2011 Share Posted September 4, 2011 if($_SERVER['REQUEST_METHOD'] == 'POST') { // something was posted if(isset($_POST['action']) && $_POST['action'] == 'register') { if(isset($_POST['newsletter']) && ($_POST['newsletter'] == 'mens' || $_POST['newsletter'] == 'womens')) { // validate email? $email = mysql_real_escape_string($_POST['email']); if($_POST['newsletter'] == 'mens') { $sql = "INSERT INTO newsletters(mens) VALUES('$email')" } else { $sql = "INSERT INTO newsletters(womens) VALUES('$email')" } // do the query here } } } Quote Link to comment https://forums.phpfreaks.com/topic/246402-use-if-correctly/#findComment-1265330 Share on other sites More sharing options...
Freedom-n-Democrazy Posted September 4, 2011 Author Share Posted September 4, 2011 Hi, Thanks for your reply. Is there an easier way to do it? I know I can simply cut and copy that code, but I want to learn whats going on.. That code you write is confusing as hell as its introduced all of these elements I've never heard of before. EDIT: I'm new to PHP. Quote Link to comment https://forums.phpfreaks.com/topic/246402-use-if-correctly/#findComment-1265343 Share on other sites More sharing options...
Freedom-n-Democrazy Posted September 4, 2011 Author Share Posted September 4, 2011 .................. Quote Link to comment https://forums.phpfreaks.com/topic/246402-use-if-correctly/#findComment-1265344 Share on other sites More sharing options...
Freedom-n-Democrazy Posted September 4, 2011 Author Share Posted September 4, 2011 Ah huh! Read it a few times over. I now see how it works. Thank you very much. Now I see how it works, I can build the full PHP will all entries. You mentioned validate e-mail. I do want this, but I fear it will be too time consuming for me to learn how to do it. Is it very hard? Quote Link to comment https://forums.phpfreaks.com/topic/246402-use-if-correctly/#findComment-1265345 Share on other sites More sharing options...
Freedom-n-Democrazy Posted September 4, 2011 Author Share Posted September 4, 2011 I'm going to have three newsletters, does this mean I would write: if(isset($_POST['newsletter']) && ($_POST['newsletter'] == 'mens' || $_POST['newsletter'] == 'womens')) || $_POST['newsletter'] == 'mensandwomens')) { $email = mysql_real_escape_string($_POST['email']); if($_POST['newsletter'] == 'mens') { $sql = "INSERT INTO newsletters(mens) VALUES('$email')" } if { $sql = "INSERT INTO newsletters(womens) VALUES('$email')" } if { $sql = "INSERT INTO newsletters(mensandwomens) VALUES('$email')" } Also, must you use "else" if its the last instruction, or is "if" fine? Quote Link to comment https://forums.phpfreaks.com/topic/246402-use-if-correctly/#findComment-1265351 Share on other sites More sharing options...
Freedom-n-Democrazy Posted September 4, 2011 Author Share Posted September 4, 2011 Fuck. This thread is trashed. I made a mistake in my last post. I will start a new post tomorrow after I have slept, and I will write it up well. MOD please lock this thread. Quote Link to comment https://forums.phpfreaks.com/topic/246402-use-if-correctly/#findComment-1265354 Share on other sites More sharing options...
voip03 Posted September 4, 2011 Share Posted September 4, 2011 Just use switch statement. http://php.net/manual/en/control-structures.switch.php Quote Link to comment https://forums.phpfreaks.com/topic/246402-use-if-correctly/#findComment-1265382 Share on other sites More sharing options...
Freedom-n-Democrazy Posted September 5, 2011 Author Share Posted September 5, 2011 Good afternoon guys, I used this code, and get the error "Error: Query was empty". I've gone over and over it, but can't figure out whats going wrong. Can you guys see any problem in it?? <?php $link = mysql_connect('localhost', 'testusr', 'testpw'); if (!$link) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; mysql_select_db('testdb', $link); if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (isset($_POST['action']) && $_POST['action'] == 'register') { if (isset($_POST['newsletter']) && ($_POST['newsletter'] == 'mens' || $_POST['newsletter'] == 'mensandwomens' || $_POST['newsletter'] == 'womens')) { $email = mysql_real_escape_string($_POST['e-mail']); if ($_POST['newsletter'] == 'mens') { $sql = "INSERT INTO newsletters(mens) VALUES('$email')"; } elseif ($_POST['newsletter'] == 'mensandwomens') { $sql = "INSERT INTO newsletters(mensandwomens) VALUES('$email')"; } elseif ($_POST['newsletter'] == 'womens') { $sql = "INSERT INTO newsletters(womens) VALUES('$email')"; } } } } if (!mysql_query($sql,$link)) { die('Error: ' . mysql_error()); } echo 'Done!'; mysql_close($link); ?> Quote Link to comment https://forums.phpfreaks.com/topic/246402-use-if-correctly/#findComment-1265548 Share on other sites More sharing options...
the182guy Posted September 5, 2011 Share Posted September 5, 2011 The query needs to be with the $sql block, not where it is now because any page view that isn't a post will trigger the error you're getting, because the $sql variable is not being set - this is only set if the form was posted and the action is register, and newsletter is mens|womens|mensandwomens. Use Firebug's net tab, to see what data is being posted to your page. Quote Link to comment https://forums.phpfreaks.com/topic/246402-use-if-correctly/#findComment-1265569 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.