allydm Posted September 4, 2006 Share Posted September 4, 2006 Hi there.I'm building a shopping cart, and it needs to be intergrated into another piece of software (not made by me so i can't change how it works).Basically, when someone clicks 'Buy' on the shopping cart on my site, i need all the information on that shopping cart to be passed to the payment processor made by the other company. They require post information, to be sent in this format:<input type="hidden" name="item_name_X" value="Item"><input type="hidden" name="amount_X" value="Price"> This information is required for each individual item, so say someone bought 2 items, the form would have to look like this:<input type='hidden' name='item_name_1' value='Medium Ceramic Pot' /><input type='hidden' name='amount_1' value='18.00' /><input type='hidden' name='item_name_2' value='Small Ceramic Pot' /><input type='hidden' name='amount_2' value='14.00' />Notice how the item_name_1 changes to item_name_2 for the second item.All the information on the items in the cart is collected from this query: [code]$product_query = "SELECT * FROM `robin_basket` WHERE session_id = '".session_id()."'"; $product_result = mysql_query($product_query); $product_info = mysql_fetch_assoc($product_result);[/code]So i need the form to be automatically generated for each item in the cart, with the item_name and amount incrementing by 1 for each new item.Hope you understand, if you don't just tell me which bit you need clarification on (would really like to get this sorted).allydm Quote Link to comment https://forums.phpfreaks.com/topic/19705-auto-incrementing/ Share on other sites More sharing options...
sasa Posted September 4, 2006 Share Posted September 4, 2006 try[code]$product_query = "SELECT * FROM `robin_basket` WHERE session_id = '".session_id()."'";$product_result = mysql_query($product_query);echo '<form action ="some.php" metod="POST">';while($product_info = mysql_fetch_assoc($product_result)) { echo "<input type='hidden' name='item_name_$i' value='{$product_info['name']}' /> <input type='hidden' name='amount_$i' value='{$product_info['price']}' />"; $i++;}echo '<input type="submit"></form>';[/code] Quote Link to comment https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-85990 Share on other sites More sharing options...
tomfmason Posted September 4, 2006 Share Posted September 4, 2006 There may be a slight issue with that. The array always starts with 0 so what I do is this[code=php:0]$i = 0;$product_query = "SELECT * FROM `robin_basket` WHERE session_id = '".session_id()."'";$product_result = mysql_query($product_query);echo '<form action ="some.php" metod="POST">';while($product_info = mysql_fetch_assoc($product_result)) { echo "<input type='hidden' name='item_name_[$i + 1]' value='{$product_info['name']}' /> <input type='hidden' name='amount_[$i + 1]' value='{$product_info['price']}' />"; $i++;[/code]give this a try Quote Link to comment https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-85992 Share on other sites More sharing options...
Barand Posted September 4, 2006 Share Posted September 4, 2006 Seems easier just to start with $i = 1 Quote Link to comment https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-85994 Share on other sites More sharing options...
tomfmason Posted September 4, 2006 Share Posted September 4, 2006 ^..lol.. There I go tryin to over think things..lolGood point Barand Quote Link to comment https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-85995 Share on other sites More sharing options...
allydm Posted September 4, 2006 Author Share Posted September 4, 2006 Thankyou for the replies, unfortunatly the code above dosn't seem to work.The contents of the cart arn't sent to the page (i have checked and its not the 3rd party payment processor not working). The post data (that the php code above generates) isn't sent, i have added another field to the form to see if the form completely wasn't working, but the other field does work.Any ideas? Quote Link to comment https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86006 Share on other sites More sharing options...
Barand Posted September 4, 2006 Share Posted September 4, 2006 Because you use "SELECT * FROM `robin_basket`..." there is no way of knowing what the column names are the robin_basket table.Sasa assumes (reasonably) that the ones you are intersted in are "name" and "price". Is that the case?Better to specify the columns you want to select and don't just use "*" every time. Quote Link to comment https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86013 Share on other sites More sharing options...
allydm Posted September 4, 2006 Author Share Posted September 4, 2006 I understand that, and when i inputted the code i changed the "name" and "price" to the correct column values.The two columns are called product_name and product_price.However the code still does not seem to work. Quote Link to comment https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86018 Share on other sites More sharing options...
Barand Posted September 4, 2006 Share Posted September 4, 2006 Have you tried viewing the page source to look at the generated form code? Quote Link to comment https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86022 Share on other sites More sharing options...
allydm Posted September 4, 2006 Author Share Posted September 4, 2006 No i hadn't! Sorry.Basically, non of the php generated stuff is showing on the form. The entire code for the form is...[code] <form name="_xclick" action="test1.php" method="post"> <input type="hidden" name="cmd" value="_cart"> <input type="hidden" name="upload" value="1"> <input type="hidden" name="business" value="******"> <input type="hidden" name="currency_code" value="GBP"> <?php while($product_info = mysql_fetch_assoc($product_result)) { echo "<input type='hidden' name='item_name_[$i + 1]' value='{$product_info['product_name']}' /> <input type='hidden' name='amount_[$i + 1]' value='{$product_info['product_price']}' />"; $i++; } ?> <input type="image" src="******" border="0" name="submit"> </form>[/code]However only this...[code] <form name="_xclick" action="test1.php" method="post"> <input type="hidden" name="cmd" value="_cart"> <input type="hidden" name="upload" value="1"> <input type="hidden" name="business" value="*******"> <input type="hidden" name="currency_code" value="GBP"> <input type="image" src="*******" border="0" name="submit"> </form>[/code]is there on the page source.Any ideas why? I can't see...the echo seems valid.*edit*The rest of the code is further up the page, and reads as...[code] $i = 1; $product_query = "SELECT * FROM `robin_basket` WHERE session_id = '".session_id()."'"; $product_result = mysql_query($product_query);[/code] Quote Link to comment https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86029 Share on other sites More sharing options...
Barand Posted September 4, 2006 Share Posted September 4, 2006 Could be the query returns no resultsChange$product_result = mysql_query($product_query);to$product_result = mysql_query($product_query) or die (mysql_error() );Also, echo $product_query to check the actual query that is being executed. Quote Link to comment https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86033 Share on other sites More sharing options...
allydm Posted September 4, 2006 Author Share Posted September 4, 2006 Hi.$product_query is being executed correctly, and the query is returning results.Is there any more information i should provide to help with this? Quote Link to comment https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86036 Share on other sites More sharing options...
Barand Posted September 4, 2006 Share Posted September 4, 2006 I cannot understnd why no input fields if the query produces results. Add the line in red, it won't affect the form [color=red]echo "There are ". mysql_num_rows($product_result) . "items<br>";[/color] while($product_info = mysql_fetch_assoc($product_result)) { echo "<input type='hidden' name='item_name_[$i + 1]' value='{$product_info['product_name']}' /> <input type='hidden' name='amount_[$i + 1]' value='{$product_info['product_price']}' />"; $i++; } Quote Link to comment https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86048 Share on other sites More sharing options...
allydm Posted September 4, 2006 Author Share Posted September 4, 2006 That outputs..."There are 3items" Quote Link to comment https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86050 Share on other sites More sharing options...
Barand Posted September 4, 2006 Share Posted September 4, 2006 Curiouser and curiouser!May as well get the field names right and remove those [$i + 1] 's, but it doesn't explain why they don't appear - should be 3 of them[code]while($product_info = mysql_fetch_assoc($product_result)) { echo "<input type='hidden' name='item_name_$i' value='{$product_info['product_name']}' /> <input type='hidden' name='amount_$i' value='{$product_info['product_price']}' />"; $i++; }[/code]Are you looping through the query results in the code before getting to this bit? Quote Link to comment https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86062 Share on other sites More sharing options...
allydm Posted September 4, 2006 Author Share Posted September 4, 2006 [quote author=Barand link=topic=106879.msg428089#msg428089 date=1157410728]Are you looping through the query results in the code before getting to this bit?[/quote]I am, as it displays the current cart contents in a table further up the page...is this a problem? Quote Link to comment https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86064 Share on other sites More sharing options...
Barand Posted September 4, 2006 Share Posted September 4, 2006 Yes.You have already reached the end of the results so when you come to this loop there are no more to be read.Do the query again immed before this while loop. Quote Link to comment https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86065 Share on other sites More sharing options...
allydm Posted September 4, 2006 Author Share Posted September 4, 2006 We have progressed!Okay, now i'm getting two of the three items information sent through, however one of the items isn't.Items:item_name_1item_name_2i am getting, but i'm not getting:item_name_3Now i've tried all sorts of combinations (been up to item_name_11), tried item_name, item_name_, item_name_0 however the third item just dosn't seem to appear.Any ideas why? There are 3 rows fetched by the query, and 3 items are shown by the same query earlier in the page, but not here. Quote Link to comment https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86071 Share on other sites More sharing options...
Barand Posted September 4, 2006 Share Posted September 4, 2006 It's 30 past midnight here and I'm up at 6:30 so I'll have to look at it tomorrow. Post current code so I can see what's happening.. Quote Link to comment https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86076 Share on other sites More sharing options...
allydm Posted September 4, 2006 Author Share Posted September 4, 2006 Here is the section of code: [code] $i = 1; $product_query1 = "SELECT * FROM `robin_basket` WHERE session_id = '".session_id()."'"; $product_result1 = mysql_query($product_query1) or die (mysql_error() ); $product_info1 = mysql_fetch_assoc($product_result1); while($product_info1 = mysql_fetch_assoc($product_result1)) { echo "<input type='hidden' name='item_name_$i' value='{$product_info1['product_name']}' /> <input type='hidden' name='amount_$i' value='{$product_info1['product_price']}' />"; $i++; } [/code]I have changed the name of the variables from $product_info to $product_info1, just so that i could differenciate between them.I really do appreciate your help with this Quote Link to comment https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86084 Share on other sites More sharing options...
Barand Posted September 5, 2006 Share Posted September 5, 2006 $i = 1; $product_query1 = "SELECT * FROM `robin_basket` WHERE session_id = '".session_id()."'"; $product_result1 = mysql_query($product_query1) or die (mysql_error() ); [color=red]$product_info1 = mysql_fetch_assoc($product_result1);[/color] while($product_info1 = mysql_fetch_assoc($product_result1)) { echo "<input type='hidden' name='item_name_$i' value='{$product_info1['product_name']}' /> <input type='hidden' name='amount_$i' value='{$product_info1['product_price']}' />"; $i++; } Remove the highlighted line. It reads the first rec but does nothing with it. Quote Link to comment https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86228 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.