当前位置: 首页 > 知识库问答 >
问题:

如何从while(mysqli_fetch_array)内部取值(with_post)

林华皓
2023-03-14

我尝试创建一个购物车。

我的问题:

在prodctslist.php中,我显示了所有产品(对于sql查询,我使用了mysqli_fetch_array进行显示),并且我在循环中放置了一个html按钮“Add to Cart”,用于每个产品。此外,我还在每个循环put那里放置了一个html输入(隐藏),product_id。

我想在客户端已经选择的ilias.php产品中使用_post。但它会给我所有的Product_ID。

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    <title>LabTsoum</title>
</head>
<body>
    <div id="container">
        <div id="logo">LabTsoum</div>
        <div class="menu">Welcome, <a class = "register" href="home.php"><?php print("$user"); ?></a> || <a class = "register" href="home.php">home</a> | <a class = "register" href="home.php">my cart</a> | <a class = "register" href="sign_out.php">sign out</a></div>

        <?php
            $sql = "SELECT * FROM products";
            $result = mysqli_query($mysqli, $sql)
            or die("Error: ".mysqli_error($mysqli));
            $i=0;
            while($row = mysqli_fetch_array($result))
            {
                $product_id[$i] = $row['product_id'];
                ?><div class= "form"><?php
                echo $product_name = $row['product_name'];
                ?></br>price: <?php
                echo $product_price = $row['product_price'];
                ?> €</br>
                <form  action="ilias.php" enctype="multipart/form-data" method="POST">
                <input type="hidden" name="add2cart[]" value="<?php echo $product_id[$i]; ?>" />
                </br><input class="buttons" type="submit" value="add to cart" id="button"></div><?php
                $i=$i + 1;
            }
            mysqli_free_result($result);
        ?>

    </div>
</body>

null

和ilias.php

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    <title>LabTsoum</title>
</head>
<body>
    <div id="container">
        <div id="logo">LabTsoum</div>
        <div class="menu">Welcome, <a class = "register" href="home.php"><?php print("$user"); ?></a> || <a class = "register" href="home.php">home</a> | <a class = "register" href="home.php">my cart</a> | <a class = "register" href="sign_out.php">sign out</a></div>

        <?php

            foreach($_POST['add2cart'] as $i=>$s){
                echo $_POST['add2cart'][$i];
                }


        ?>

    </div>
</body>

null

共有2个答案

陆曜文
2023-03-14

这里有两个问题:

没有结束的标记。如果要使用submit按钮,则需要为每次迭代提供一个新表单。

// ...within loop
<form  action="ilias.php" enctype="multipart/form-data" method="POST">
  <input type="hidden" name="add2cart[]" value="<?php echo $product_id[$i]; ?>" />
  </br><input class="buttons" type="submit" value="add to cart" id="button"></div>
</form>

其次,尽管代码是有效的,但您可能不希望将id作为数组提交:

”/>

您可以考虑删除[]

耿珂
2023-03-14

你在那里只看到ID是很好的。

在您的ilias.php中,使用下面的代码。这将为您提供产品的所有数据。

foreach($_POST['add2cart'] as $i=>$s){
    if(is_numeric(mysql_real_escape_string($s)){
        $sql = "SELECT * FROM products WHERE product_id = " . $s . "";
        $rs = mysql_query($sql);
        $r = mysql_fetch_array($rs);
        var_dump($r); 
    }
}

或者如果您不想拥有数组,请更改

<input type="hidden" name="add2cart[]" ... /> 

致:

<input type="hidden" name="add2cart" ... />

并按如下方式获得产品:

$product_id = $_POST['add2cart'];
if(is_numeric(mysql_real_escape_string($product_id)){
    $sql = "SELECT * FROM products WHERE product_id = " . $product_id . "";
    $rs = mysql_query($sql);
    $r = mysql_fetch_array($rs);
    var_dump($r); 
}

不要忘记使用标记

但是,如果不将产品ID存储在会话中,您将无法创建真正的购物车

 类似资料:
  • 问题内容: 应该很基本,但是我无法使它正常工作。我有以下代码可以遍历mysqli查询: 它可以工作并返回: 变量#1 :(数组,3个元素)↵0(字符串):“ 4testtest”(9个字符)1(字符串):“ 1Hello world!Welcome to WordPress。这是您的第一篇文章。编辑或删除它,然后开始写博客!” (99个字符)2(字符串):“ 2Sample Page这是一个示例页

  • 问题内容: 我的代码在这里: 现在,我想在单击“确认”按钮后返回true。因此,如何从内部类-方法的OnClickListener返回“ true”。 需要一些帮助,谢谢。 问题答案: 在这种情况下,您不能从内部类返回任何东西。在这种情况下,这没有多大意义。该程序是否应该在您的onClick函数中等待,直到它返回某些内容?收听者的工作方式并非如此。您需要做的就是获取计划返回的代码,如果返回“ tr

  • 我在Eclipse中获得了一个Hashmap条目,如下所示: 链接到hashmap输出的图片 我无法使用键=“value”获取值。我收到的错误是:java。lang.ClassCastException:类java。无法将lang.Double转换为java类。util。Map(java.lang.Double和java.util.Map位于加载程序“bootstrap”的模块java.base中

  • 问题内容: 如何在Java的do-while循环内部访问变量? 下面的代码写出一个值,直到输入的值不在0到10之间为止。 这是我的代码: 只要输入在0到10之间,循环就会继续要求输入。一旦输入其他数字,循环就会终止并显示所有输入数字的总数。 问题答案: 尝试一下(在循环外将变量声明为a):

  • 问题内容: 我已经为两个窗口/阶段编写了一个控制器。在MainClass中打开第一个窗口。如果用户单击按钮,则控制器中的第二个按钮。如何在applyFor()方法中从second.fxml获取TextFields? 谢谢。 问题答案: 在fxml之间共享控制器不是很好,除非它们具有相同的用途。在这里,这两个fxml似乎有不同的用途(帐户管理,登录或其中一个类似,并为另一个创建新帐户)。更糟糕的是,

  • 如何从容器内部获取docker的容器名称? 我不能使用“inspect”,因为我必须使用容器内部的脚本从JSON url获取信息。