achesnpains Posted June 3, 2013 Share Posted June 3, 2013 (edited) I have a 3 part form, the first part is filled out and submitted to MySQL by the dispatcher, the tech then clicks on the update record by id link in the search results form and is taken to the form to update the record. The tech fills out what they need in the form and submit it to update the record by unless they fill out ALL of the form fields they record wont update in MySQL, a syntax error will display. If they fill out ALL of the fields the form will submit and update the record fine, problem is they don't always have to fill out all of the fields on the ticket. So here is my code : <?php // database connection // include 'db_connect.php'; //This gets all the other information from the form // start of form inputs // include 'data/var/variables.php'; //Writes the information to the database mysql_query("UPDATE `tickets` SET `work_performed` = '$work_performed', `item_qty1` = '$item_qty1', `item_qty2` = '$item_qty2', `item_qty3` = '$item_qty3', `item_qty4` = '$item_qty4', `item_qty5` = '$item_qty5', `manuf_1` = '$manuf_1', `manuf_2` = '$manuf_2', `manuf_3` = '$manuf_3', `manuf_4` = '$manuf_4', `manuf_5` = '$manuf_5', `part_number1` = '$part_number1', `part_number2` = '$part_number2', `part_number3` = '$part_number3', `part_number4` = '$part_number4', `part_number5` = '$part_number5', `part_description1` = '$part_description1', `part_description2` = '$part_description2', `part_description3` = '$part_description3', `part_description4` = '$part_description4', `part_description5` = '$part_description5', `part_price1` = '$part_price1', `part_price2` = '$part_price2', `part_price3` = '$part_price3', `part_price4` = '$part_price4', `part_price5` = '$part_price5', `price_extension1` = '$price_extension1', `price_extension2` = '$price_extension2', `price_extension3` = '$price_extension3', `price_extension4` = '$price_extension4', `price_extension5` = '$price_extension5', `material_total` = '$material_total', `sales_tax` = '$sales_tax', `shipping_cost` = '$shipping_cost', `work_date1` = '$work_date1', `work_date2` = '$work_date2', `work_date3` = '$work_date3', `work_date4` = '$work_date4', `work_date5` = '$work_date5', `tech_name1` = '$tech_name1', `tech_name2` = '$tech_name2', `tech_name3` = '$tech_name3', `tech_name4` = '$tech_name4', `tech_name5` = '$tech_name5', `cost_code1` = '$cost_code1', `cost_code2` = '$cost_code2', `cost_code3` = '$cost_code3', `cost_code4` = '$cost_code4', `cost_code5` = '$cost_code5', `pay_rate1` = '$pay_rate1', `pay_rate2` = '$pay_rate2', `pay_rate3` = '$pay_rate3', `pay_rate4` = '$pay_rate4', `pay_rate5` = '$pay_rate5', `total_hours1` = '$total_hours1', `total_hours2` = '$total_hours2', `total_hours3` = '$total_hours3', `total_hours4` = '$total_hours4', `total_hours5` = '$total_hours5', `hours_subtotal1` = '$hours_subtotal1', `hours_subtotal2` = '$hours_subtotal2', `hours_subtotal3` = '$hours_subtotal3', `hours_subtotal4` = '$hours_subtotal4', `hours_subtotal5` = '$hours_subtotal5', `total_hours` = '$total_hours', `material_total` = '$material_total', `labor_cost` = '$labor_cost', `grand_total` = '$grand_total' WHERE `id` = '$id'"); mysql_affected_rows(); echo mysql_error(); ?> <html> <body> <center> <br><br><br> <form name="results" method="post" action="ticket_results.php" enctype="multipart/form-data" id="ticketresult"> <input type="submit" class="submit" id="ticketresult" style="width: 165px" value="Do Something"> </form> </center> </body> </html> Now I've been told previously to do the following, change my variables to this: $item_qty=$_POST['item_qty'][]; or this, $item_qty1=(isset($_POST['item_qty1'])? $_POST['item_qty1'] : 'NULL'); and neither suggestion works. How can I change my code so the form can be submitted without all the fields being filled out? Edited June 3, 2013 by achesnpains Quote Link to comment Share on other sites More sharing options...
DaveyK Posted June 3, 2013 Share Posted June 3, 2013 Well, where to begin. - First, allow me to notify you that you shouldnt be using mysql. Use mysqli or PDO mysql instead. - Second, since you are using mysql, you need to prevent mysql injection and escape the variables. I cant see if you are doing that or not, but I hope you are. - if you want to understand your $_POST request better, you can echo it using: echo '<pre>' . print_r($_POST, true) . '</pre>'; - this line: mysql_affected_rows(); wont echo anything. You need to put echo in front of it. - dont use center tags. CSS can do that better and <center> tags seem really outdated. - Lastly, what in the world are you doing to store data in such a way? Perhaps you could normalize your data and store it in several databases? that should give some insight as to what the PHP is receving and it might help you determine what to do next Quote Link to comment Share on other sites More sharing options...
Solution achesnpains Posted June 3, 2013 Author Solution Share Posted June 3, 2013 This was absolutely worthless and completely off topic to what I asked, If one more person comments about sql injection and to quit using MySQL I'm going to scream, MySQL isn't going anywhere for a long time, too many instances of it in use with too many people that don't know what to do with making the switch. Secondly, I wasn't asking for someone to criticize my work, I'm not a professional coder, I'm a business owner trying something out on my own before I waste the time of my guy's that do code with something that could be accomplished some other way. I don't understand why everybody I've asked this question to just can't stay on topic and answer the question at hand without telling me what I need to do with everything else besides what my issues is. None of the things you said have anything to do with my problem which is fine now as I've figured out what the issue was on my own! Quote Link to comment Share on other sites More sharing options...
DaveyK Posted June 3, 2013 Share Posted June 3, 2013 We are free to criticize the work you display as we find fit. You will only benefit from what we say. All points are valid to the displayed code althought not all are directly related to the subject at hand. Give yourself a break to learn from others who actually have something to share. Quote Link to comment 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.