0

I have looked around and Im still not sure on how to do this. I have dried several different ways and its obvious im still doing it wrong. Please can you help

I have an accounts table containing the account username and password and a separate contacts table which is liked to the accounts table by the username. I need to insert in to both of these. here is what I have so far.

Thanks

//signup.php include 'connect.php'; echo '<h3>Sign up</h3>'; if($_SERVER['REQUEST_METHOD'] != 'POST') { /*the form hasn't been posted yet, display it note that the action="" will cause the form to post to the same page it is on */ echo '<form action="" method="post"> <br> <table width="0" border="0"> <tr> <th align="left" scope="col">Name:</th> <th scope="col"><input type="text" name="name"></th> </tr> <tr> <th align="left" scope="row">Phone:</th> <td><input type="text" name="phone"></td> </tr> <tr> <th align="left" scope="row">Address</th> <td><textarea name="address" rows="4"></textarea></td> </tr> <tr> <th align="left" scope="row"><p>Postcode</p></th> <th align="left" scope="row"><input type="text" name="postcode" id="postcode"></th> </tr> <tr> <th align="left" scope="row">Email</th> <td><input type="text" name="email"></td> </tr> <tr> <th align="left" scope="row">Username</th> <td><input type="type" name="username"></td> </tr> <tr> <th align="left" scope="row">Password</th> <td align="left"><input type="password" name="password"></td> </tr> <tr align="left"> <th colspan="2" scope="row"><input type="Submit"></th> </tr> </table> </form>'; } else { /* so, the form has been posted, we'll process the data in three steps: 1. Check the data 2. Let the user refill the wrong fields (if necessary) 3. Save the data */ $errors = array(); /* declare the array for later use */ if(isset($_POST['username'])) { //the user name exists if(!ctype_alnum($_POST['username'])) { $errors[] = 'The username can only contain letters and digits.'; } if(strlen($_POST['username']) > 30) { $errors[] = 'The username cannot be longer than 30 characters.'; } } else { $errors[] = 'The username field must not be empty.'; } if(!empty($errors)) /*check for an empty array, if there are errors, they're in this array (note the ! operator)*/ { echo 'Uh-oh.. a couple of fields are not filled in correctly..'; echo '<ul>'; foreach($errors as $key => $value) /* walk through the array so all the errors get displayed */ { echo '<li>' . $value . '</li>'; /* this generates a nice error list */ } echo '</ul>'; } else { //the form has been posted without, so save it //notice the use of mysql_real_escape_string, keep everything safe! //also notice the sha1 function which hashes the password $sql = "INSERT INTO tbl_accounts(accounts_username, accounts_password, accounts_date) VALUES('" . mysql_real_escape_string($_POST['username']) . "', '" . sha1($_POST['password']) . "', NOW())"; $sql2= "INSERT INTO tbl_contacts(contacts_username, contacts_name, contacts_email, contacts_phone, contacts_address, contacts_postcode, contacts_date) VALUES('" . mysql_real_escape_string($_POST['username']) . "', '" . mysql_real_escape_string($_POST['name']) . "', '" . mysql_real_escape_string($_POST['email']) . "', '" . mysql_real_escape_string($_POST['phone']) . "', '" . mysql_real_escape_string($_POST['address']) . "', '" . mysql_real_escape_string($_POST['postcode']) . "', NOW())"; $result = mysql_query($sql); if(!$result) $result = mysql_query($sql2); if(!$result) { //something went wrong, display the error echo 'Something went wrong while registering. Please try again later.'; //echo mysql_error(); //debugging purposes, uncomment when needed } else { echo 'Successfully registered. You can now <a href="signin.php">sign in</a> and start posting! :-)'; } } } 
0

3 Answers 3

1

Change:

 $result = mysql_query($sql); if(!$result) $result = mysql_query($sql2); if(!$result) { 

To:

 if(!mysql_query($sql) || !mysql_query($sql2)) { 

...and I think your problem will disappear.

It would be worth you re-reading this and this.

Note also that you should be using the POST/Redirect/GET design pattern for handling form submissions of this nature.

Sign up to request clarification or add additional context in comments.

4 Comments

Your answer cleans up his problem much better than mine does.
I have tried this and it still doesnt work.-It adds it to the accounts database but not the contacts:/
@ChrisWilson Do you get your Something went wrong while registering. Please try again later. message? What error message do you see from mysql_error()?
I changed the query to the one below and its the second query that is failing... (the inset in to contacts) it just said second query failed
0

Searching stackoverflow you'll find links like those below:

Stack 1

Stack 2

Comments

0

This code block doesn't do what you think it does

What this does is sends query sql1 and then if that query failed does sql2.

 $result = mysql_query($sql); if(!$result) $result = mysql_query($sql2); if(!$result) 

If you want to insert into both of them then you should do

 $result = mysql_query($sql); if(!$result) { echo "first query failed"; } else { $result = mysql_query($sql2); } if(!$result) { echo "second query failed"; } 

2 Comments

Keeps saying second query failed. It is becuase it doesnt like two things been added in but i dont know how to do this correctly
@ChrisWilson if it says the second query is failing that means that your second query is not legal. I feel like that error message is pretty self explanatory. Look into phpmyadmin or toad.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.