我使用Bootstrap / PHP / PDO / SQL为大学进行在线商店分配。到目前为止,我已经创建了一个允许我向数据库输入产品类别的页面,该表名为“tuoteryhma”,其中包含值“name”和“id”。现在我正在制作一个页面,它会将产品添加到“产品”表格中。
我试图通过一个基本的HTML表单来完成这个,顶部是一个选择类,我已经链接到数据库“tuoteryhma”,如下所示:
<?php
try {
$sqljr='SELECT * FROM tuoteryhma';
$kyselyx=$tietokantajr->query($sqljr);
while ($tietuejr = $kyselyx->fetch()) {
print '<option>' . $tietuejr['nimi'] . '</option>';
}
} catch (PDOException $pdoexjr) {
print "Tietokannan avaus epäonnistui." . $pdoexjr->getMessage();
}
?>
它运作正常。现在我的问题是我需要以某种方式获取所选“tuoteryhma”表的id值并将id添加到代码的“add product”部分。 tuoteryhma的ID是tuote table的外键。
我一直在尝试将代码行添加到您可以在上面看到的while循环中,例如:
$id = $tietuejr['id']
然后将$ id变量作为选择值放置如下:
<select class="form-control" name="tuoteryhmat" value="<?php $id ?>" id="tuoteryhmat">
然后在我的其他try-catch语句中使用它,这将(如果可行)将新产品添加到产品表中,如下所示:
<?php
if (isset($_POST['tuoteryhmat'])) {
try {
$nimijr = filter_input(INPUT_POST,'nimi',FILTER_SANITIZE_STRING);
$kuvausjr = filter_input(INPUT_POST,'kuvaus',FILTER_SANITIZE_STRING);
$hintajr = filter_input(INPUT_POST,'hinta',FILTER_SANITIZE_NUMBER_INT);
$idjr2 = filter_input(INPUT_POST, 'tuoteryhma_id');
$kyselyjr2 = $tietokantajr->prepare("INSERT INTO
tuote (nimi,kuvaus,hinta,tuoteryhma_id) VALUES
(:nimi,:kuvaus,:hinta,tuoteryhma_id:)");
$kyselyjr2->bindValue(':nimi', $nimijr, PDO::PARAM_STR);
$kyselyjr2->bindValue(':kuvaus', $kuvausjr, PDO::PARAM_STR);
$kyselyjr2->bindValue(':hinta', $hintajr, PDO::PARAM_STR);
$kyselyjr2->bindValue(':tuoteryhma_id', $idjr2, PDO::PARAM_STR);
$kyselyjr2->execute();
print "<p>VITTU</p>";
print "<p>Tuote tallennettu onnistuneesti!</p>";
} catch (PDOException $pdoextuotejr) {
print "Tuotteen tallennuksessa tapahtui virhe."
. $pdoextuotejr->getMessage();
}
}
?>
到目前为止没有运气。 如有任何帮助,请提前感谢。
*编辑抱歉,如果我不清楚某些事情,或留下一些重要的东西。这是完整的.php页面:http://pastebin.com/JRwi8B2p
答案 0 :(得分:0)
问题已解决 问题是我在while循环中打印的选项字段没有值。我认为值本身将保存在select class value =“”中,但事实并非如此。所以为了解决这个问题,我不得不改变我的while循环选项打印,从数据库中获取值。
echo "<option value='".$tietuejr['id']."' >".$tietuejr['nimi']."</option>";
感谢 Codezilla 向我指出这一点!