1

問題があり、それを解決する方法がわかりません。id (ユーザーに割り当てられる) 列と id_item 列 (アイテム テーブルからアイテムに割り当てられる) およびアイテムを含む在庫テーブルがあります。 id テーブルも含むテーブル。

より具体的には、これは私のデータベースに含まれるものです: items テーブル:

id  name 
1   Dagger
2   Staff
3   Wood Shield

それぞれに固有の ID があります。

在庫表:

id  id_item     username    name
1   3           cristi          Wood Shield
2   1           motoc           Dagger
2   2           motoc           Staff

ID はすべてのユーザー ID から取得され、id_item は項目テーブルからの項目の ID です。

問題: インベントリに 2 つの武器を持っている motoc としてログインしているとします。今まではすべて問題ありません。彼が持っているすべてのアイテムのボタンを作りたいです。ボタンはありますが、正常に動作しません。最初のものをクリックすると、正しい ssss1 が表示されますが、2 番目のものを押しても何も起こりません。次の $row1['id_item'] を ssss2 より具体的に示したいと思います。

これを解決する方法が本当にわかりません。ありがとうございました。

これは私が試したことです:

if (isset($_SESSION['id'])) {
    $sth1 = $dbh->prepare("SELECT * FROM inventory WHERE id = ".$_SESSION['id']."");
    $sth1->execute();
    while($row1 = $sth1->fetch(PDO::FETCH_ASSOC)){
        $sth = $dbh->prepare("SELECT * FROM items WHERE id = ".$row1['id_item']."");
        $sth->execute();
        $row = $sth->fetch(PDO::FETCH_ASSOC);
        $ss = print $row1["id_item"];
?>

<form id='<?php echo $row1["id_item"]; ?>' method="POST" action="" >
    <input type="hidden" name="refid" value="add" />
    <input type="submit" name="submit<?php echo $row1["id_item"]; ?>" value="Add" />
</form>

<?php
    }

    if (isset($_POST["submit$ss"])) {
        $refid = intval($_POST["refid"]);
        $sth1 = $dbh->prepare("SELECT * FROM inventory WHERE id = ".$_SESSION['id']."");
        $sth1->execute();
        $row1 = $sth1->fetch(PDO::FETCH_ASSOC);
        echo "ssss".$row1['id_item'];      
    }
}
4

2 に答える 2

0

これを試してみてください。あなたが何をしたいのか正確にはちょっと混乱していますが、これでうまくいくと思います。

<?php
if (isset($_SESSION['id'])) {
    $sth1 = $dbh->prepare("SELECT * FROM inventory WHERE id = " . $_SESSION['id']);
    $sth1->execute();
    while ($row = $sth1->fetch(PDO::FETCH_ASSOC)) {
        $sth = $dbh->prepare("SELECT * FROM items WHERE id = " . $row['id_item']);
        $sth->execute();
        $row = $sth->fetch(PDO::FETCH_ASSOC);
        $ss = $row["id_item"];
        ?>

        <form id='<?php echo $ss; ?>' method="post" action="?show">
            <input type="hidden" name="item_id" value="<?php echo $ss; ?>" />
            <input type="submit" name="submit" value="Add" />
        </form>

    <?php
    }

    if (isset($_GET["show"]) && isset($_POST['item_id'])) {
        echo "ssss" . $_POST['item_id'];
    }

}

コードの一部をクリーンアップし、フォームの作成方法を変更しました。フォームの変更を確認するために、一番下の PHP コードも変更しました。

今さらですがお伝えします。データベースの設計方法を変更する必要があります。それを最新の状態に保つことは、お尻の痛みになります。多対多の関係であるため、items テーブルと users テーブルを使用し、その間にピボット テーブルを配置する必要があります。

楽しむ!

于 2013-07-18T15:48:27.913 に答える