我用Bootstrap/PHP/PDO/SQL为大学做网上商店作业。到目前为止,我已经制作了一个页面,允许我向数据库输入产品类别,该表名为"tuoteryhma",其中包含值"name"answers"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添加到代码的"添加产品"部分。tuoteryhma的ID是tuote表的外键。
我一直在尝试将代码线添加到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
问题已解决问题是我在循环中打印的选项字段没有值。我认为值本身将保存在select类value="中,但事实并非如此。因此,为了解决这个问题,我不得不更改while循环选项打印,以从数据库中获取值。
echo "<option value='".$tietuejr['id']."' >".$tietuejr['nimi']."</option>";
感谢Codezilla向我指出这一点!