PHP several forms, the second uses data from the First

I am trying to first get an identifier for a database query and print the results in a table (this part works). Then I want to take the identifier that was provided by the user and use it to update information in the database using PHP. I want to use the input in the second form as values ​​to update the database. The table for change is customers and has the fields ID, NAME, ADDRESS. I do not want the user to be able to change the ID.

Form1:

 <form method="post" action=""> <p style="margin-top: 70px;">Please type the ID of the person you wish to add to change their data</p> <p style="margin-bottom: 0px;">ID</p> <input style="color:black" type="text" name="id" placeholder="10001"> <input style="color:lightblue;background-color: rgb(80,80,80);margin-top: 7px; " type="submit" value="Submit"> </form> 

Form2:

 <form method="post" action=""> <p>New Information for Customer with ID entered above</p> <input style='color:black;' type='text' name='newName' placeholder='Name Change'> <input style="color:black;" type="text" name="newAddress" placeholder="New Address"> <input style="color:lightblue;background-color: rgb(80,80,80);margin-top: 7px; " type="submit" name="submitForm2" value="Submit"> </form> 

Here is my current php on request, but it does not work, and $ _POST, which checks if the values ​​are set, returns false.

 <?php session_start(); if (isset($_POST["id"])){ $servername = 'localhost'; $user = 'root'; $pass = ''; $db = 'the_sports_store'; $conn = new mysqli($servername,$user, $pass, $db); // Check connection if ($conn->connect_error) { echo '<script language="javascript">'; echo 'alert("DB Connection Failed:")'; echo '</script>'; die("" . $conn->connect_error); } $sessionID = $_SESSION["ID"]; $newName = $_SESSION["newName"]; $newAddress = $_SESSION["newAddress"]; var_dump($newName); $sql = "SELECT * FROM `customers` WHERE ID='$sessionID';"; //display the current record, allow user input to alter it, then display new data if ($conn->query($sql) == TRUE) { echo"<div class='col-10'>"; echo"<table>"; echo"<tr> <td align='justify'><b>ID</b></td> <td align='justify'><b>NAME</b></td> <td align='justify'><b>ADDRESS</b></td> </tr>"; $result = mysqli_query($conn, $sql); $row = mysqli_fetch_assoc($result); echo "<tr><td style='padding: 10px;'>{$row['ID']}</td><td>{$row['NAME']}</td><td>{$row['ADDRESS']}</td></tr>"; echo "</table>"; echo "</div>"; if(!empty($_POST["newName"]) && !empty($_POST["newAddress"])){ echo '<script language="javascript">'; echo 'alert(',$sessionID,');'; echo '</script>'; $newName = $_POST["newName"]; $newAddress = $_POST["newAddress"]; $sqlChange = "UPDATE `customers` SET `NAME` = '$newName', `ADDRESS` = '$newAddress' WHERE `ID` = '$sessionID';"; if ($conn->query($sqlChange) === TRUE) { echo '<script language="javascript">'; echo 'alert("Update Successful.")'; echo '</script>'; } else { echo '<script language="javascript">'; echo 'alert("Error. Update Unsucessful.")'; echo '</script>'; } }else if(!empty($_POST["newName"])){ $newName = $_POST["newName"]; $sqlChange = "UPDATE `customers` SET `NAME` = '$newName' WHERE `ID` = '$sessionID'"; echo '<script language="javascript">'; echo 'alert(',$newName,');'; echo '</script>'; if ($conn->query($sqlChange) === TRUE) { echo '<script language="javascript">'; echo 'alert("Update Successful.")'; echo '</script>'; } else { echo '<script language="javascript">'; echo 'alert("Error. Update Unsucessful.")'; echo '</script>'; } }else if(!empty($_POST["newAddress"])){ $newName = $_POST["newAddress"]; $sqlChange = "UPDATE `customers` SET `ADDRESS` = '$newAddress' WHERE `ID` = '$sessionID'"; echo '<script language="javascript">'; echo 'alert(',$sessionID,');'; echo '</script>'; if ($conn->query($sqlChange) === TRUE) { echo '<script language="javascript">'; echo 'alert("Update Successful.")'; echo '</script>'; } else { echo '<script language="javascript">'; echo 'alert("Error. Update Unsucessful.")'; echo '</script>'; } } else{ echo '<script language="javascript">'; echo 'alert(',$sessionID,');'; echo '</script>'; } } $conn->close(); } ?> 
+5
source share
1 answer

Your problem is that your PHP code will only execute if an identifier is set. Thus, the code will never be executed when the second form is published.

Move this if (!empty($_POST["newName"]) && !empty($_POST["newAddress"])) and everything elseif / else is lower than your original if.

In addition, I must tell you about SQL Injection and how to avoid it: How can I prevent SQL injection in PHP?

+1
source

Source: https://habr.com/ru/post/1275746/


All Articles