【问题标题】:Select Form - Link two tables in a third table选择表格 - 在第三个表格中链接两个表格
【发布时间】:2020-11-16 14:43:21
【问题描述】:

这是我第一次来这里,所以请温柔一点……

我的名字是 Maxime,我正在尝试学习 PHP 几个星期。我在堆栈和互联网上搜索了很多,但我没有找到解决方案,所以如果这是“基本”或者我解释得不好,我很抱歉。我正在寻求帮助!



这周,我正在尝试一些事情: 我有 2 张桌子:

BARLIST

|-----------+--------+----------+-----+---------|
|   barId   | barName| Adresse  | lat | long    |
|-----------+--------+----------+---------------|
|     1     |   Mike |50 street | 50  |  1.5    |
|     2     |   John |51 street | 30  |  45     |
|     3     |   Beth |52 street | 26  |  87     |
|-----------+--------+----------+---------------|

啤酒清单

|--------+----------+----------|
| beerId | beerName | typeBeer |
|--------+----------+----------|
|   1    |   Leffe  | blond    |
|   2    |   Affli  | brune    |
|   3    |   Affli  | blanche  |
|--------+----------+----------|

BARBEER - 我想要的链接表

|--------+----------+----------|
| Id     | beerId   | barId    |
|--------+----------+----------|
|   1    |   1      | 1        |
|   2    |   2      | 1        |
|   3    |   3      | 2        |
|--------+----------+----------|

这个想法是让用户通过一个选择表单从表格中选择一个酒吧和一个啤酒,将它们添加到第三个表格barbeer。所以我尝试了一些东西,最近这里有我所拥有的。

带有选定内容的表单

<form method="post" action="">
            <label class="first-column ">Choose a bar</label><div class="second-column">
                <select name="test">
                    <option>Select</option>
                    <?php

                    $sqli = "SELECT * FROM barList";
                    $result = mysqli_query($con, $sqli);
                    while ($row = mysqli_fetch_assoc(@$result)) {
                        ?>
                        <option value="<?php echo $row['barId'];?>"><?php echo $row['barName'];?></option>';
                        <?php
                    }


                    ?>
                </select>

                <label class="first-column ">Choose a beer</label><div class="second-column">
                    <select name="test1">
                        <option>Select</option>
                        <?php

                        $sqli = "SELECT * FROM beerList";
                        $result = mysqli_query($con, $sqli);
                        while ($row = mysqli_fetch_assoc(@$result)) {
                            # code...?>
                        <option value="<?php echo $row['beerId'];?>"><?php echo $row['beerName'];?></option>';
                      <?php
                        }


                        ?>
                    </select>
            <input type="submit" name="submit_4" value="Submit" />

效果很好,我可以在表单上看到啤酒和酒吧的名称。 但是现在我想将用户的选择添加到第三个表中,所以我尝试了这个:

if(isset($_POST['submit_4'])){
    if(empty($errors)){
        try
        {
            $pdo = new PDO('mysql:host=localhost;dbname=whereismybeer;charset=utf8', 'root', '');
        }
        catch(Exception $e)
        {
            die('Erreur : '.$e->getMessage());
        }
        echo $_POST['test'];
        echo $_POST['test1'];
        
        $req= $pdo-> prepare("INSERT INTO barbeer JOIN barList, ON barbeer.barId = ? JOIN beerList, ON barbeer.beerId = ?");
        $req->execute([$_POST['test'], $_POST['test']]);
        
        die ('Yeah, It worked!');

    }}

我也试过这样的变量

$var = $_POST['test];
INSERT INTO [...] barbeer.barID = $var;

我没有错误消息,只有“是的,它成功了!”但理发桌上什么都没有……所以我被困住了。 您能帮我找到解决方案、想法或任何有用的东西吗?

非常感谢您的回答和帮助!

编辑: 在另一个页面中,未来的想法将是询问“我在哪里可以喝这种啤酒?”,并在网站上显示酒吧的列表在哪里我可以喝这种啤酒!这就是为什么我认为联合是必要的。

编辑 2: 好的,所以我对 JOIN 函数的理解是错误的。我现在不需要打电话了。我只需要将 beerID 和 barID 放入带有经典 INSERT 的第三个表中。

INSERT INTO barbiere (barName, biereName) VALUES (?, ?);

【问题讨论】:

  • 这里不需要任何 JOIN 吗?
  • 不要输出“是的,它起作用了”,如果你没有真正检查你之前尝试做的事情是否真的 工作。
  • 嗨,在另一个页面中,未来的想法是问“我在哪里可以喝这种啤酒?”,网站显示我可以喝这种啤酒的酒吧列表!所以我认为 JOIN 是必要的! (对不起,我忘了提!)。

标签: php mysql forms join select


【解决方案1】:

您不需要使用联接。您从表单中获得了 beerId、barId 的值。所以只要做一个正常的插入。

声明应该是。

INSERT INTO barbeer (beerId, barId) VALUES (?, ?);

【讨论】:

  • 哦,好的,像这样它工作了。所以如果在另一个页面中我想知道哪个酒吧有这种啤酒,我只需要比较表 barbeer 和 barList 中的 barId,对吗?完全不需要加入吗?
  • 您可以从 barbeer 表中获取与 beerId 关联的 barId。要获取该条的信息,您需要与条表连接,或者您可以进行两个查询,一个获取 barId,另一个获取具有这些 barId 的那些条的信息。显然,使用 join 是有效率的。
  • ok,join的使用将在其他页面!我对加入的理解是错误的。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2014-05-09
  • 2019-09-16
  • 1970-01-01
  • 2011-10-02
  • 2017-11-20
  • 2023-01-12
  • 2012-07-04
  • 2013-08-04
相关资源
最近更新 更多