【发布时间】: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