Jump to content

Recommended Posts

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
Link to comment
https://forums.phpfreaks.com/topic/19705-auto-incrementing/
Share on other sites

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]
Link to comment
https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-85990
Share on other sites

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
Link to comment
https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-85992
Share on other sites

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?
Link to comment
https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86006
Share on other sites

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.
Link to comment
https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86013
Share on other sites

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]
Link to comment
https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86029
Share on other sites

Could be the query returns no results

Change
$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.
Link to comment
https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86033
Share on other sites

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++;
}

Link to comment
https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86048
Share on other sites

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?
Link to comment
https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86062
Share on other sites

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_1
item_name_2
i am getting, but i'm not getting:
item_name_3

Now 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.
Link to comment
https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86071
Share on other sites

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
Link to comment
https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86084
Share on other sites

$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.
Link to comment
https://forums.phpfreaks.com/topic/19705-auto-incrementing/#findComment-86228
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.