mike3075 Posted January 23, 2022 Share Posted January 23, 2022 (edited) I am stuck on this form. I can use <a href='courtdirectoryview.php?id={$row['id']}' target='_blank'> to pass the id number from courtdirectory.php to courtdirectoryview.php and all the data from the MySQL db is displayed correctly. When I make changes to test the update query and I click the Update button I get the error in the title. Line 42 is: echo "WHY DOES THE ID NUMBER NOT SHOW UP HERE WHEN THE UPDATE BUTTON IS CLICKED: " .$_GET['id']. "<br>"; Any suggestions or advice will be greatly appreciated <!DOCTYPE html> <head> <link rel="stylesheet" href="css/main-forcourtdirectory.css"> </head> <?php //============================================================================================================================================================================================/ //OPEN CONNECTION TO MYSQL ON LOCALHOST=======================================================================================================================================================/ $dbhost = 'localhost' ; $username = 'root' ; $password = '' ; $conn = mysqli_connect("$dbhost", "$username", "$password"); if (!$conn) { die('Could not connect: ' . mysqli_error()); } //CLOSE CONNECTION TO MYSQL ON LOCALHOST======================================================================================================================================================/ //============================================================================================================================================================================================/ //============================================================================================================================================================================================/ //OPEN CONNECTION TO MYSQL ON LOCALHOST=======================================================================================================================================================/ mysqli_select_db($conn, "courtdirectory"); //CLOSE CONNECTION TO MYSQL ON LOCALHOST======================================================================================================================================================/ //============================================================================================================================================================================================/ //============================================================================================================================================================================================/ // DEFINE VARIABLES AND SET EMPTY VALUES======================================================================================================================================================/ // PROSECUTOR VARIABLES=======================================================================================================================================================================/ $varprosecutor = $varprosecutoraddress = $varprosecutorphone = $varprosecutorfax = $varprosecutornotes = ""; //============================================================================================================================================================================================/ // PROSECUTOR ERROR VARIABLES=================================================================================================================================================================/ $varprosecutorErr = $varprosecutoraddressErr = $varprosecutorphoneErr = $varprosecutorfaxErr = $varprosecutornotesErr = ""; //============================================================================================================================================================================================/ // OTHER VARIABLES============================================================================================================================================================================/ $varmyid = $varipaddress = $formerror = $success = ""; //============================================================================================================================================================================================/ //============================================================================================================================================================================================/ //FORM SUBMITTED WITH POST METHOD=============================================================================================================================================================/ if ($_SERVER["REQUEST_METHOD"] == "POST") { //============================================================================================================================================================================================/ echo "WHY DOES THE ID NUMBER NOT SHOW UP HERE WHEN THE UPDATE BUTTON IS CLICKED: " .$_GET['id']. "<br>"; //==========================================================================================================================================================================================/ //START UPDATE SQL==========================================================================================================================================================================/ //NONE OF THIS CODE WILL WORK UNTIL I CAN GET THE ID NUMBER=================================================================================================================================/ //$result2 = mysqli_query($conn, "UPDATE courtdirectory SET prosecutor='$varprosecutor' WHERE courtdirectory.id = ($myid)") or die("Error: " . mysqli_error($conn)); //$retval3 = mysqli_query($conn, $result2); //if (mysqli_query($conn, $result2)) { // echo "Record updated successfully"; //} else { // echo "Error updating record: " . mysqli_error($conn); //} //END UPDATE SQL============================================================================================================================================================================/ //==========================================================================================================================================================================================/ }else{ if (isset($_GET['id'])) { $myid = $_GET['id']; $varmyid = $myid; } echo "I CAN GET THE ID NUMBER FROM THE COURTDIRECTORY.PHP PAGE: " .$myid. "<br>"; echo "I CAN SET THIS VARIABLE TO THE THE ID NUMBER: " .$varmyid. "<br>"; echo "<body>"; if (isset($_GET['id'])) { $myid = $_GET['id']; } $bulletinsQuery = "SELECT * FROM courtdirectory"; $bulletins = $conn->query($bulletinsQuery); if (isset($_GET['id'])) { $myid = $_GET['id']; } echo "<form action= " .$_SERVER['PHP_SELF']. " method='post'>"; echo "<table class='courtdirectorytable'>"; echo "<tbody>"; echo "<tr>"; echo "<th class='county'>County</th>"; echo "<th class='city'>City</th>"; echo "<th class='court'>Court</th>"; echo "<th class='judge'>Judge</th>"; echo "<th class='address'>Address</th>"; echo "<th class='phone'>Phone</th>"; echo "<th class='fax'>Fax</th>"; echo "<th class='notes'>Court Notes</th>"; echo "</tr>"; $sql2 = "SELECT * FROM courtdirectory WHERE courtdirectory.id = ($myid)"; $retval2 = mysqli_query($conn, $sql2); $result2 = mysqli_query($conn, "SELECT * FROM courtdirectory WHERE courtdirectory.id = ($myid)") or die("Error: " . mysqli_error($conn)); while($row = mysqli_fetch_array($retval2, MYSQLI_ASSOC)) { $varprosecutor = $row['prosecutor']; $varprosecutoraddress = str_replace(',', ' ', $row['prosecutoraddress1']); $varprosecutorphone = $row['prosecutorphone']; $varprosecutorfax = $row['prosecutorfax']; $varprosecutornotes = $row['prosecutornotes']; $varprosecutornotes = str_replace(['<br/>','</br>','<br />'], ' ', $row['prosecutornotes']); echo "<tr>"; echo "<td class='county'>" .$row['county']. "</td>"; echo "<td class='city'>" .$row['city']. "</td>"; echo "<td class='court'>" .$row['court']. "</td>"; echo "<td class='judge'>" .$row['judge']. "</td>"; echo "<td class='address'>" .$row['address']. "</td>"; echo "<td class='phone'>" .$row['phone']. "</td>"; echo "<td class='fax'>" .$row['fax']. "</td>"; echo "<td class='notes'>" .$row['notes']. "</td>"; echo "</tr>"; echo "</tbody>"; echo "</table>"; echo "</br>"; echo "<table class='courtdirectorytable'>"; echo "<tbody>"; echo "<tr>"; echo "<th class='prosecutor'>Prosecutor</th>"; echo "<th class='prosecutoraddress'>Prosecutor Address</th>"; echo "<th class='prosecutorphone'>Prosecutor Phone</th>"; echo "<th class='prosecutorfax'>Prosecutor Fax</th>"; echo "<th class='prosecutornotes'>Prosecutor Notes</th>"; echo "</tr>"; echo "<tr>"; echo "<td class='prosecutor'><textarea class='prosecutor' value='$varprosecutor'>$varprosecutor</textarea></td>"; echo "<td class='prosecutoraddress'><textarea class='prosecutoraddress' value='$varprosecutoraddress'>$varprosecutoraddress</textarea></td>"; echo "<td class='prosecutorphone'><textarea class='prosecutorphone' value='$varprosecutorphone'>$varprosecutorphone</textarea></td>"; echo "<td class='prosecutorfax'><textarea class='prosecutorfax' value='$varprosecutorfax'>$varprosecutorfax</textarea></td>"; echo "<td class='prosecutornotes'><textarea class='prosecutornotes' value='$varprosecutornotes'>$varprosecutornotes</textarea></td>"; echo "</tr>"; echo "</tbody>"; echo "</table>"; echo "<table class='submitbutton'>"; echo "<tbody>"; echo "<tr>"; echo "<td class='submitbutton'><button type='submit' class='courtdirectory-submit' name='submit' tabindex='6' data-submit='...Sendng'>Update</button></td>"; echo "</tr>"; echo "</tbody>"; echo "</table>"; } echo "</form>"; echo "</body>"; } ?> </html> Edited January 23, 2022 by mike3075 had to change some code Quote Link to comment https://forums.phpfreaks.com/topic/314448-undefined-variable-_getid-in-cxampphtdocsmyreliantservicescourtdirectoryviewphp-on-line-42/ Share on other sites More sharing options...
requinix Posted January 23, 2022 Share Posted January 23, 2022 Submit the form and look at the URL. Do you see an "id" in there? If you want the form to submit back to the same page then remove the form's action entirely. Because the default for a form without one is to submit back to the same page. And stop using PHP_SELF. 1 Quote Link to comment https://forums.phpfreaks.com/topic/314448-undefined-variable-_getid-in-cxampphtdocsmyreliantservicescourtdirectoryviewphp-on-line-42/#findComment-1593539 Share on other sites More sharing options...
Pixeel Posted January 23, 2022 Share Posted January 23, 2022 (edited) The problem with PHP_SELF is it points back to the exact same script and it's ridiculously insecure. If you want to submit to the page, remove the action or use the filename itself instead of PHP_SELF. Maybe I'm just missing something, but why are you using POST as the request method but trying to use $_GET['id']? That might be the source of your conflict, since as far as I know, GET and POST variables on their own do not share data values. You may want to use your browser's dev console to see the submitted data. I'd use var_dump to see what the values are before proceeding, like so: if ($_SERVER['REQUEST_METHOD'] === 'POST') { // This is a post request echo $_GET['id'] . "\n"; var_dump($_GET['id']); } Then you can test if the values went through. If your values are null, that means they didn't go through. Also, I know it's not primary feedback, but since I'm here I might as well chip in: you really should consider using PDO or prepared statements, since your concatenated SQL queries as they are right now are ripe for SQL injection. Edit: Oh, and since you gave us your MySQL credentials, you might want to change that (since now everyone knows you use the root account). 😜 Edited January 23, 2022 by Pixeel Quote Link to comment https://forums.phpfreaks.com/topic/314448-undefined-variable-_getid-in-cxampphtdocsmyreliantservicescourtdirectoryviewphp-on-line-42/#findComment-1593542 Share on other sites More sharing options...
ginerjm Posted January 23, 2022 Share Posted January 23, 2022 (edited) I am totally confused by your code here. You have what looks like a query attempt using a unique syntax that is not mysqli but never use the results (if there are any). You then run the same query twice but never use the 2nd set of results, so why bother? Here is a cleaned up version of your code that may be easier to decipher, or at least easier to read that may help you code better in the future. I really don't see why you are building 3 html tables either. <!DOCTYPE html> <head> <link rel="stylesheet" href="css/main-forcourtdirectory.css"> </head> <?php $dbhost = 'localhost' ; $username = 'root' ; $password = '' ; $conn = mysqli_connect("$dbhost", "$username", "$password"); if (!$conn) { die('Could not connect: ' . mysqli_error()); } mysqli_select_db($conn, "courtdirectory"); $varprosecutor = $varprosecutoraddress = $varprosecutorphone = $varprosecutorfax = $varprosecutornotes = ""; $varprosecutorErr = $varprosecutoraddressErr = $varprosecutorphoneErr = $varprosecutorfaxErr = $varprosecutornotesErr = ""; $varmyid = $varipaddress = $formerror = $success = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { echo "WHY DOES THE ID NUMBER NOT SHOW UP HERE WHEN THE UPDATE BUTTON IS CLICKED: " .$_GET['id']. "<br>"; } else { if (isset($_GET['id'])) { $myid = $_GET['id']; $varmyid = $myid; } echo "I CAN GET THE ID NUMBER FROM THE COURTDIRECTORY.PHP PAGE: " .$myid. "<br>"; echo "I CAN SET THIS VARIABLE TO THE THE ID NUMBER: " .$varmyid. "<br>"; echo "<body>"; // WHY DO THIS AGAIN??? if (isset($_GET['id'])) { $myid = $_GET['id']; } $bulletinsQuery = "SELECT * FROM courtdirectory"; // WHAT IS THIS LINE SUPPOSED TO BE??? // WHAT IS THIS LINE SUPPOSED TO BE??? // WHAT IS THIS LINE SUPPOSED TO BE??? $bulletins = $conn->query($bulletinsQuery); // WHY DO THIS A 3RD TIME??? if (isset($_GET['id'])) { $myid = $_GET['id']; } echo "<form action= " .$_SERVER['PHP_SELF']. " method='post'>"; echo "<table class='courtdirectorytable'> <tbody> <tr> <th class='county'>County</th> <th class='city'>City</th> <th class='court'>Court</th> <th class='judge'>Judge</th> <th class='address'>Address</th> <th class='phone'>Phone</th> <th class='fax'>Fax</th> <th class='notes'>Court Notes</th> </tr>"; // Query 1 $sql2 = "SELECT * FROM courtdirectory WHERE courtdirectory.id = '$myid'"; $retval2 = mysqli_query($conn, $sql2); // did this query run successful??? // Query 2 $result2 = mysqli_query($conn, "SELECT * FROM courtdirectory WHERE courtdirectory.id = '$myid'") or die("Error: " . mysqli_error($conn)); // begin loop on query 1 while($row = mysqli_fetch_array($retval2, MYSQLI_ASSOC)) { $varprosecutor = $row['prosecutor']; $varprosecutoraddress = str_replace(',', ' ', $row['prosecutoraddress1']); $varprosecutorphone = $row['prosecutorphone']; $varprosecutorfax = $row['prosecutorfax']; $varprosecutornotes = $row['prosecutornotes']; $varprosecutornotes = str_replace(['<br/>','</br>','<br />'], ' ', $row['prosecutornotes']); // Data from query 1 echo "<tr> <td class='county'>{$row['county']}</td> <td class='city'>{$row['city']}</td> <td class='court'>{$row['court']}</td> <td class='judge'>{$row['judge']}</td> <td class='address'>{$row['address']}</td> <td class='phone'>{$row['phone']}</td> <td class='fax'>{$row['fax']}</td> <td class='notes'>{$row['notes']}</td> </tr> </tbody> </table> <!-- ******************* END query 1 data results table --> </br> <!-- ******************* START A 2ND TABLE --> <table class='courtdirectorytable'> <tbody> <tr> <th class='prosecutor'>Prosecutor</th> <th class='prosecutoraddress'>Prosecutor Address</th> <th class='prosecutorphone'>Prosecutor Phone</th> <th class='prosecutorfax'>Prosecutor Fax</th> <th class='prosecutornotes'>Prosecutor Notes</th> </tr> <!-- OUTPUT MORE DATA FROM THE SAME QUERY 1 ROW --> <!-- OUTPUT MORE DATA FROM THE SAME QUERY 1 ROW --> <!-- OUTPUT MORE DATA FROM THE SAME QUERY 1 ROW --> <tr> <td class='prosecutor'> <textarea class='prosecutor' value='$varprosecutor'>$varprosecutor</textarea> </td> <td class='prosecutoraddress'> <textarea class='prosecutoraddress' value='$varprosecutoraddress'>$varprosecutoraddress</textarea> </td> <td class='prosecutorphone'> <textarea class='prosecutorphone' value='$varprosecutorphone'>$varprosecutorphone</textarea> </td> <td class='prosecutorfax'> <textarea class='prosecutorfax' value='$varprosecutorfax'>$varprosecutorfax</textarea> </td> <td class='prosecutornotes'> <textarea class='prosecutornotes' value='$varprosecutornotes'>$varprosecutornotes</textarea> </td> </tr> </tbody> </table> <!-- end table 2 --> <!-- start a 3rd table --> <table class='submitbutton'> <tbody> <tr> <td class='submitbutton'> <button type='submit' class='courtdirectory-submit' name='submit' tabindex='6' data-submit='...Sendng'>Update</button> </td> </tr> </tbody> </table>"; // end table 3 } echo "</form>"; echo "</body>"; } echo "</html>"; exit(); See my comments embedded in this code. Also - if your query generates more than one row then you will build those 3 tables multiple times and have them all embedded inside your single form. That's going to make any POST data pretty unpredictable. Edited January 23, 2022 by ginerjm Quote Link to comment https://forums.phpfreaks.com/topic/314448-undefined-variable-_getid-in-cxampphtdocsmyreliantservicescourtdirectoryviewphp-on-line-42/#findComment-1593544 Share on other sites More sharing options...
Pixeel Posted January 23, 2022 Share Posted January 23, 2022 (edited) Also, while you should really read what @ginerjmsaid, I also have to point out that (a) you should really remove the duplicate queries and (b) there's no validation on your queries since you simply assume $retval2 exists rather than checking that it does. And please consider giving variables slightly more meaningful names - in the long run, it'll be easier for you to understand the code you wrote. Edited January 23, 2022 by Pixeel 1 Quote Link to comment https://forums.phpfreaks.com/topic/314448-undefined-variable-_getid-in-cxampphtdocsmyreliantservicescourtdirectoryviewphp-on-line-42/#findComment-1593545 Share on other sites More sharing options...
ginerjm Posted January 23, 2022 Share Posted January 23, 2022 (edited) I agree with Pixeel. Why add 'var' to a name that is already known as a 'variable'? Also using underscores to break up var names is a nice practice since it makes them much clearer to see when you are browsing thru lots and lots of code in a hurry. An example would be 'prosecutor_fax' for instance. Stay away from upper and lower cases though. UPDATE: Just noticed. You are showing a lot of data in 3 tables (or a multiple of 3) all wrapped in a form with a submit button, but what is it for? You have no inputs so there will NEVER be any POST data other than the submit button's name and value. You asked yourself why the 'id' doesn't show up. Well - that is why. You are using a submit button which generates a POST (per your form tag) so you need an input tag somewhere to get that id to be sent. Edited January 23, 2022 by ginerjm 1 Quote Link to comment https://forums.phpfreaks.com/topic/314448-undefined-variable-_getid-in-cxampphtdocsmyreliantservicescourtdirectoryviewphp-on-line-42/#findComment-1593546 Share on other sites More sharing options...
requinix Posted January 23, 2022 Share Posted January 23, 2022 POSTed forms a very capable of including GET parameters: all you have to do is put them in the form action's URL. The problem here is that the form action's URL does not include any GET parameters. Quote Link to comment https://forums.phpfreaks.com/topic/314448-undefined-variable-_getid-in-cxampphtdocsmyreliantservicescourtdirectoryviewphp-on-line-42/#findComment-1593549 Share on other sites More sharing options...
mike3075 Posted January 23, 2022 Author Share Posted January 23, 2022 First, I want to thank everyone for their time, suggestions and recommendations. Here are my responses to your questions, suggestions and recommendations: requinix: The “id” is not display after I click the Update button Pixeel: I honestly didn’t give the GET and POST methods much consideration. I will correct that. I didn’t realize I left MySQL credentials in the code I posted. Thank you for catching that! ginerjm: I think there were duplicate queries and not using the results is because I was trying different things and didn’t delete or comment out the old code Thank you for cleaning update the code for me. It is way easier to read now. The reason there are 3 separate tables right now is because the rows will eventually be color coded and I didn’t feel like bothering with the CSS right now The query will eventually only generate one row Pixeel: I will remove the extra queries and insert the validation. For right now though I know there should be certain data returned from MySQL DB. This merely for testing. Once everything is working I will insert the validation I will rename the variables as I go along ginerjm: I never really thought about leaving the ‘var’ off. I always thought it was easier to find the variables if ‘var’ was in front it Ultimately, when a user changes data and clicks Update it will update the DB. I set all the inputs to ‘textarea’ just so everything would be vertically aligned to the top Quote Link to comment https://forums.phpfreaks.com/topic/314448-undefined-variable-_getid-in-cxampphtdocsmyreliantservicescourtdirectoryviewphp-on-line-42/#findComment-1593556 Share on other sites More sharing options...
ginerjm Posted January 23, 2022 Share Posted January 23, 2022 Don't get your very last comment. Inputs or textarea - the alignment is up to you in either case. You are using tables so alignment should not be an issue. Quote Link to comment https://forums.phpfreaks.com/topic/314448-undefined-variable-_getid-in-cxampphtdocsmyreliantservicescourtdirectoryviewphp-on-line-42/#findComment-1593557 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.