stervyatnik Posted August 10, 2007 Share Posted August 10, 2007 Hello, all! I have a PHP page, which queries a database and displays a multi-lined form, containing a state and an associated rate, like this: [pre] AL 0.0240 AR 0.0630 AZ 0.0580 CA 0.0250 CO 0.0680 [/pre] The number of lines is variable - there can be as many as 51 (all states plus DC), but in some cases, not all states have rates, and are not displayed. You can edit/change the rate, but not the state. I want to pass each state and rate to a PHP page that will then load new values in the database. There is no primary key in the database; it uses the state and other values as a composite key. My initial thought is to do it like this (line numbers added for reference): [pre] 01 $query = "SELECT * from tbl_Rates where carrier = '".$HTTP_POST_VARS["carrier"]."' 02 and level = '".$HTTP_POST_VARS["clevel"]."' and direction = '".$HTTP_POST_VARS["direction"]."' order by state"; 03 $result = mysql_query($query); 04 $num_results = mysql_num_rows($result); 05 echo "<form name=\"form2\" method=\"post\" action=\"update_intrastate.php\"> 06 <table> 07 <tr> 08 <td>Carrier</td> 09 <td>Direction</td> 10 </tr> 11 <tr> 12 <td>State</td> 13 <td>Rate</td> 14 </tr>"; 15 for ($i=0; $i <$num_results; $i++) 16 { 17 $row = mysql_fetch_array($result); 18 echo "<tr> 19 <td><p><input type=\"hidden\" name=\"state".$i."\" value=\"".$row["state"]."\">".$row["state"]."</td> 20 <td><p><input type=\"text\" name=\"rate".$i."\" value=\"".$row["rate"]."\" size=\"10\"></td> 21 </tr>"; 22 } 23 echo "</table> 24 <input type=\"hidden\" name=\"carrier\" value=\"".$HTTP_POST_VARS["carrier"]."\"> 25 <input type=\"hidden\" name=\"clevel\" value=\"".$HTTP_POST_VARS["clevel"]."\"> 26 <input type=\"hidden\" name=\"direction\" value=\"".$HTTP_POST_VARS["direction"]."\"> 27 <input type=\"hidden\" name=\"results_total\" value=\"".$num_results."\"> 28 <input type=\"submit\" name=\"Submit2\" value=\"Save\"> 29 </form>"; [/pre] In lines 19 and 20, I combine the count ($i) with the field name, and use it in a hidden and text input element, so I should get HTTP_POST_VARS like: state0 state1 state2...etc. and rate0 rate1 rate2...etc. In the processing page - update_intrastate.php - how can I reference these variables? I pass the variable "results_total" which gives me the seed for the counter I'd use, so I envision my code on the processing page would look something like this: [pre] for ($i=0; $i <$HTTP_POST_VARS["results_total"]; $i++) { $query = "update tbl_Rates set rate = '".$HTTP_POST_VARS["rate$i"]."' WHERE carrier = '".$HTTP_POST_VARS["carrier"]."' and level = '".$HTTP_POST_VARS["clevel"]."' and state = '".$HTTP_POST_VARS["state$i"]."' and direction = '".$HTTP_POST_VARS["direction"]."'"; mysql_query($query); } [/pre] Can I reference the variable like this: $HTTP_POST_VARS["rate$i"] $HTTP_POST_VARS["state$i"] INSIDE the quotes as part of the HTTP_POST_VARS name? I suspect this won't work. What would be the correct way? Any pointers would be greatly appreciated. Thanks! Dan sends... Quote Link to comment https://forums.phpfreaks.com/topic/64241-how-can-i-pass-an-array-via-http_post_vars/ Share on other sites More sharing options...
wildteen88 Posted August 10, 2007 Share Posted August 10, 2007 $HTTP_*_VARS are now depreciated and have been replaced with $_*, eg $HTTP_POST_VARS should be $_POST Use: $_POST['rate' . $i] When trying to get rateX (X being a number). You do the same with state too: $_POST['state' . $i] Quote Link to comment https://forums.phpfreaks.com/topic/64241-how-can-i-pass-an-array-via-http_post_vars/#findComment-320314 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.