0

ユーザーが特定の製品のさまざまな「パッケージ」に対して多くの価格を設定できる、Web サイトの製品編集フィールドを設計しています。ユーザーが好きな順序でパッケージを注文できるようにしたいと考えています。そこで、カウンター(価格表にあるAI)を使用して、製品をリストアップします。誰かが私がこれをやっている方法がばかげていると言って、もっと良いデザインを教えてくれれば、私はそれを感謝します.

<?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 に答える