Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 6 of 6
  1. #1
    Regular Coder
    Join Date
    Apr 2005
    Location
    Lahore, Pakistan
    Posts
    150
    Thanks
    2
    Thanked 0 Times in 0 Posts

    How to use one FORM against different entries

    HI,

    I have a php page in which i have different products. I retrieve these products from database. Mean a loop runs and one by one it will retrieve all the products from the database.

    Then i add a simple button "ADD to cart".

    this button will repeat will displayed at every product.

    Means if there are 6 products, then it will show 6 buttons of "Add to CART".

    I want that if user click on first "add to cart" button, then it will post the values of only first product to database. If if user click on second "add to cart" button, then it will post the values of only second product to database.


    But add to cart button just send the values of only first prodcut.

    Kindly help me in this regard.


    Here is my sample code.

    PHP:
    $query = mysql_query("Select * from newproductinfo where pid=$pageid",$db) or die ("Error");
    $rowcount=0; //count the iterations of loop to control the table structure

    while ($result = mysql_fetch_array($query))
    {
    $pid=$result['pid'];
    $ppid=$result['productid'];
    print "<br> $ppid";

    $title=$result['title'];
    $pname=$result['productname'];
    $desc=$result['description'];
    $size=$result['size'];
    $image=$result['image'];
    $price = $result['price'];
    $a = $result['image'];

    if($rowcount==2){

    echo"</tr>";
    echo"<tr>";
    echo"<td width='50%' height='399' align='left' valign='top'>";
    $rowcount=1;
    }

    else{

    echo "<td width='50%' height='399' align='left' valign='top'>";
    $rowcount = $rowcount+1;
    }

    ////////////// Displaying Image and other things///////////////////////////////////////

    echo"<center><img src='images/".$a."'height='180' width='200'></center>";
    echo "<br><br>$ppid<br> $title<br> $pname<br> $desc<br> $size<br> $price<br><br>";

    echo"<form action='test.php?btn=$ppid' method='post'>";
    echo"<center><input type='submit' name='SUBMIT' value='Add to Cart'></center>";


    echo"</td>";
    echo"</form>";
    } //while Loop Ends

    I don't want to use seperate forms for each product . I just want to use one form against each product

    kindly correct this code, so that it will only send the information of that product, which i clicked.

    with this code it will only sent the first value of $ppid to other page.


    bye

  • #2
    Senior Coder NancyJ's Avatar
    Join Date
    Feb 2005
    Location
    Bradford, UK
    Posts
    3,174
    Thanks
    19
    Thanked 66 Times in 65 Posts
    you already posted almost *exactly* the same thing.
    problem while post data to other page

    to only use 1 form move your <form> and </form> tags outside the while loop. (you will have to remove the ?$ppid from the form action.

    for the seocnd part of your question, there is no way to only send the information from 1 product using 1 form. A form can only submit all of itself. You also have nothing in the form except a submit button, so you're not actually submitting anything. (except the button itself)

    You seem to want to pass the product id through the querystring, in which case you dont need a form at all. Just a link with test.php?btn=$ppid as the url (you can style the link to look like a button, or use a graphic).

  • #3
    Senior Coder missing-score's Avatar
    Join Date
    Jan 2003
    Location
    UK
    Posts
    2,194
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Actually, if you give the button a name and value, differnet submit buttons can lead to different outcomes... This way you only need one big form, and submit buttons could look like:

    Code:
    <input type="submit" name="ppid" id="ppid" value="<?php echo $ppid; ?>" />
    ... or you get the general idea? You see, when submit buttons are pressed, they also submit their name and value, so I think this could accomplish what you are looking for.

  • #4
    Senior Coder NancyJ's Avatar
    Join Date
    Feb 2005
    Location
    Bradford, UK
    Posts
    3,174
    Thanks
    19
    Thanked 66 Times in 65 Posts
    Quote Originally Posted by missing-score
    Actually, if you give the button a name and value, differnet submit buttons can lead to different outcomes... This way you only need one big form, and submit buttons could look like:

    Code:
    <input type="submit" name="ppid" id="ppid" value="<?php echo $ppid; ?>" />
    ... or you get the general idea? You see, when submit buttons are pressed, they also submit their name and value, so I think this could accomplish what you are looking for.
    Then the button text would read the product id rather than 'Add to Cart'

  • #5
    Senior Coder missing-score's Avatar
    Join Date
    Jan 2003
    Location
    UK
    Posts
    2,194
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Oh yeah :S

    I know I have done something along the lines of this before though, but it was long long ago..

    Still, stilly mistake on my part

  • #6
    Senior Coder NancyJ's Avatar
    Join Date
    Feb 2005
    Location
    Bradford, UK
    Posts
    3,174
    Thanks
    19
    Thanked 66 Times in 65 Posts
    I've pondered that solution to a problem many times, then had the spark of rememberance lol.

    One way of doing it is to include the ppid in with the button name

    to the button might be called "add|24" then at the processing stage you could do a
    PHP Code:
     foreach($_POST as $key => $val){
    if(
    strpos$key"add")){
    $arrData split("|"$key);
    $ppid $arrData[1];
    }

    buts thats a lot of work when you could just use a link and pass the ppid through $_GET
    and use
    PHP Code:
    $ppid $_GET['ppid']; 
    There really is no reason to use a form if you're only passing 1 piece of data.


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •