0

我一直在为我的网站设计一个编辑产品字段,用户可以在其中为某个产品的不同“包装”提供许多价格。我希望用户能够以他们想要的任何顺序订购包裹。所以我列出了产品,使用一个计数器(价格表上的人工智能)。如果有人告诉我我这样做是愚蠢的,并告诉我一个更好的设计,我将不胜感激。

<?php
    $UserID = mysqli_real_escape_string($connection, $_SESSION['userID']);
    $PID = mysqli_real_escape_string($connection, $_SESSION['ePID']);
    $findpricesstmt = mysqli_prepare($connection, "SELECT * FROM products WHERE UserID = ? and PID= ?");
    mysqli_stmt_bind_param($findpricesstmt, 'ii', $UserID, $PID);
    mysqli_stmt_execute($findpricesstmt);
    $findpricesresult = mysqli_stmt_get_result($findpricesstmt);
    $findpricesrow = mysqli_fetch_assoc($findpricesresult);
    if(mysqli_num_rows($findpricesresult) == 0) {
        echo('You currently have no prices for this product, meaning it is deactivated. To continue sales, add a price and click reactivate.');
    }
    else{
        $_SESSION['count'] = 50;
        while($_SESSION['count'] > 0)
        {
            $count = mysqli_real_escape_string($connection, $_SESSION['count']);
            $count1stmt = mysqli_prepare($connection, "SELECT * FROM prices WHERE Count = ? and UserID = ? and PID= ?");
            mysqli_stmt_bind_param($count1stmt, 'iii', $count, $UserID, $PID);
            mysqli_stmt_execute($count1stmt);
            $count1result = mysqli_stmt_get_result($count1stmt);
            if(mysqli_num_rows($count1result) != 0) {
                include '../includes/orderpackmanu.php';
            }
            $_SESSION['count']--;
        }
    }
?>

在 orderpackmanu.php 中,我有:

<?php
$count = mysqli_real_escape_string($connection, $_SESSION['count']);

$displayprimanustmt = mysqli_prepare($connection, "SELECT * FROM prices WHERE Count = ?");
mysqli_stmt_bind_param($displayprimanustmt, 'i', $count);
mysqli_stmt_execute($displayprimanustmt);
$displayprimanuresult = mysqli_stmt_get_result($displayprimanustmt);

if(mysqli_num_rows($displayprimanuresult) != 0) {
    $displayprimanurow = mysqli_fetch_assoc($displayprimanuresult);
    $price = $displayprimanurow['price'];
    $units = $displayprimanurow['units'];
    $ppu = $displayprimanurow['ppu'];
    $dispcode = $displayprimanurow['dispcode'];
}
?>
<div>
    <div style="width:55%;float:left;text-align:center;">
        <?php if(isset($price)){ echo $price . "$ for "; } if(isset($units)){ echo $units; } ?>
        <br>
        <?php if(isset($ppu)){ echo $ppu . "$ per unit"; } ?>
    </div>
    <div style="width:40%;float:left;">
        <input class="orderinput" type="text" name="<?php if(isset($count)){ echo $count; } ?>" placeholder="<?php if(isset($dispcode)){ echo $dispcode; } ?>" maxlength="30">
    </div>
    <div style="clear:both;"></div>
    <br>
</div>

我的问题是关于输入名称的(尽管此设计的任何“总”解决方案也是可以接受的)。如果我采用这种格式,并且每个输入都有自己dispcode的名称,那么是否有一种简单的方法来进行输入过程?或者有人告诉我为什么我在做的事情根本上是错误的,以及如何解决它。

4

1 回答 1

0

由于我想将未知数量的字段标识为唯一的,因此这是一个有趣的难题。我最终使用了类似于发布的内容,除了我在“名称”字段的开头添加了一些识别字符,以便我可以在我的代码中循环它们:

$x = 1;
while(isset($_POST[$x])){
//input
$x++;
}

这不起作用,因为变量字段不能以数字开头。这确实有效:

$count;
$x = 'X'.$count;
while(isset($_POST[$x])){
//input
$count++;
$x = 'X'.$count;
}

现在它仍然存在问题,但这是我在这样做时学到的最大/最令人困惑/最容易解释的东西。不管怎样,我很快就会改变我的代码,只是回去用我学到的东西回答我提出的问题。

于 2013-10-17T19:29:31.993 回答