dsa99349 2016-05-29 06:42
浏览 192
已采纳

循环在html和php中创建多个按钮

So basically what I am trying to do is using a loop to display multiple image and create a corresponding button to each image. If I pressed on the corresponding button, it will store the image into another database.

The first part display quite well. However, the second part I can hardly figure out how to determine the corresponding button for each image.

<?php while($row=mysqli_fetch_array($result)) { ?>
<div id="item">
  <?php echo '<img height="200" width="200" src="data:image;base64,'.$row[2]. '">';?>
  </br>
  <?php echo $row[ "name"];?>
  </br>
  <?php echo $row[ "price"];?>
  </br>
  <?php echo $row[ "description"];?>
  </br>
 <form>Quantity:
  <input type="text" value="" name="quantity" />
  </br>
  <input type="submit" value="add to cart" name="cart" />
 </form>
  <?php 
if (isset($_POST[ "cart"])){ 
$addtoname=$_SESSION[ 'username']; 
$addtoprice=$row[ 'price']; 
$addtodiscount=$row[ 'discount']; 
$addtoid=$row[ 'id']; 
$addtoimage=$row[ 'image']; 
$addtoquantity=$_POST[ 'quantity']; 
$hostname="localhost" ; 
$username="root";
$password="" ; 
$database="myproject" ; $con=mysqli_connect($hostname,$username,$password,$database) or die(mysqli_error()); 
$select=mysqli_select_db($con, "myproject")or die( "cannnot select db"); mysqli_query($con,"INSERT INTO cart(username,quantity,price,image,id,discount) VALUES('$addtoname','$addtoquantity','$addtoprice','$addtoimage','$addtoid','$addtodiscount')"); 
echo "success"; 
} 
else{ 
echo "fail"; 
}?>
</div>
<?php }//end of while ?>

It seems like it always go to fail AND never run into isset($_POST[ "cart"]))

Any tips will be much appreciated.

Thank you

</div>
  • 写回答

2条回答 默认 最新

  • duanpo1498 2016-05-29 09:35
    关注

    Create 2 files:

    One with the actual form populated by the DB:

    <?php while($row=mysqli_fetch_array($result)) { ?>
    <div id="item">
     <form method="post" action="cartReceiver.php">Quantity:
      <?php echo '<img height="200" width="200" src="data:image;base64,'.$row[2]. '">';?>
      </br>
      <?php echo $row[ "name"];?>
      </br>
      <?php echo $row[ "price"];?>
      </br>
      <?php echo $row[ "description"];?>
      </br>
      <input type="text" value="" name="quantity" />
      </br>
      <input type="submit" value="add to cart" name="cart" />
     </form>
    </div>
    <?php }//end of while ?>
    

    And then the receiver of the action declared in form(cartReceiver.php):

    <?php
    if (isset($_POST[ "cart"])){ 
    $addtoname=$_SESSION[ 'username']; 
    $addtoprice=$row[ 'price']; 
    $addtodiscount=$row[ 'discount']; 
    $addtoid=$row[ 'id']; 
    $addtoimage=$row[ 'image']; 
    $addtoquantity=$_POST[ 'quantity']; 
    $hostname="localhost" ; 
    $username="root";
    $password="" ; 
    $database="myproject" ; $con=mysqli_connect($hostname,$username,$password,$database) or die(mysqli_error()); 
    $select=mysqli_select_db($con, "myproject")or die( "cannnot select db"); mysqli_query($con,"INSERT INTO cart(username,quantity,price,image,id,discount) VALUES('$addtoname','$addtoquantity','$addtoprice','$addtoimage','$addtoid','$addtodiscount')"); 
    echo "success"; 
    } 
    else{ 
    echo "fail"; 
    }
    

    Note that I changed the tag order of the form. If you wish to receive the fetched parameters from POST without querying the DB after transition, then you can change the first file like this:

     <?php while($row=mysqli_fetch_array($result)) { ?>
        <div id="item">
         <form method="post" action="cartReceiver.php">Quantity:
          <?php echo '<img height="200" name="image" width="200" src="data:image;base64,'.$row[2]. '">';?>
          </br>
          <input type="text" name="username" value="<?php echo $row[ "name"];?>" readonly /> 
          </br>
          <input type="text" name="price" value="<?php echo $row[ "price"];?>" readonly />
          <input type="hidden" name="discount" value="<?php echo $row[ "discount"];?>" />
          </br>
          <input type="text" name="description" value="<?php echo $row[ "description"];?>" readonly />  
          </br>
          <input type="text" value="" name="quantity" />
          </br>
          <input type="submit" value="add to cart" name="cart" />
         </form>
        </div>
        <?php }//end of while ?>
    

    So the cartReceiver.php file will look like this in this case:

    <?php
    if (isset($_POST[ "cart"])){ 
    $addtoname=$_POST['username']; 
    $addtoprice=$_POST['price']; 
    $addtodiscount=$_POST['discount']; 
    $addtoid=$_POST['id']; 
    $addtoimage=$_POST['image']; 
    $addtoquantity=$_POST[ 'quantity']; 
    $hostname="localhost" ; 
    $username="root";
    $password="" ; 
    $database="myproject" ; $con=mysqli_connect($hostname,$username,$password,$database) or die(mysqli_error()); 
    $select=mysqli_select_db($con, "myproject")or die( "cannnot select db"); mysqli_query($con,"INSERT INTO cart(username,quantity,price,image,id,discount) VALUES('$addtoname','$addtoquantity','$addtoprice','$addtoimage','$addtoid','$addtodiscount')"); 
    echo "success"; 
    } 
    else{ 
    echo "fail"; 
    }
    

    Notice the readonly attirbute in the inputs. It will prevent the users from altering their contents.

    Now you can access all the inputs after you submit the form (click the add to cart button) by using $_POST['name'],$_POST['description'] etc

    EDIT: Code updated for your needs. Since it seems you dont want to display the discount, you pass it to the form through a hidden field which can be then accessed as the others through $_POST.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog