我的形式很简单:
<form action="add.php" method="post" >
<input name="name" maxlength="30"/><br/>
<textarea cols="80" name="description" rows="10">
</textarea><br/>
<table>
<thead>
<tr>
<th></th>
<th width="200px">Shop list</th>
</tr>
</thead>
<tbody div class ="table">
<?php
$result = mysql_query("SELECT shop_id, name FROM shop") or die(mysql_error());
if(mysql_num_rows($result) > 0) {
while($row = mysql_fetch_assoc($result)) {
echo '<tr>
<td>
<input type="checkbox" name="identifer[]" value="'.$row['shop_id'].'" /> <br /></td>
<td>'.ucfirst($row['shop']).'</td>
</tr> ';
}
}
?>
</tbody></table>
<input type="submit" value="Add">
</form>
我想将结果保存在两个不同的表中: book (book_id,name,description)和 places 。在 places 表中,我想保存您可以购买该书的商店(places_id,book_id,shop_id)。
我有add.php文件(它不能正常工作):
<?php
$name = $_POST['name'];
$description = $_POST['description'];
$identifer =($_POST['identifer']);
if (isset($identifer)){
$id_arr = implode(',', $identifer);
$result = mysql_query("INSERT INTO places (places_id, book_id, shop_id) VALUES (NULL, NULL ($id_arr))") or die(mysql_error());
}
$q = "INSERT INTO baldas (book_id, name, description) VALUES (NULL, '$name', '$description')";
$result2 = mysql_query($q) or die(mysql_query());
?>
我很困惑如何在同一时间将结果保存在两个不同的表中,同时我在识别哪些复选框被检查并将结果写入数据库时遇到问题,尤其是我不知道如何处理book_id 。 任何建议都会有所帮助。
答案 0 :(得分:1)
我不知道如何处理book_id
您首先将值插入表baldas
,然后调用mysql_insert_id()
<?php
$q = "INSERT INTO baldas (book_id, name, description) VALUES (NULL, '$name', '$description')";
$result = mysql_query($q) or die(mysql_query());
$bookID = mysql_insert_id();
// CODE TO INSERT INTO `places` TABLE USING $bookID //
?>
我在确定选中哪个复选框时遇到问题
你拥有它们的方式,你必须遍历$_POST['identifier']
数组来识别shop_id
<?php
foreach((array)$_POST['identifier'] as $shopID) {
$q2 = "INSERT INTO places (place_id, book_id, shop_id) VALUES (NULL, '$bookID', '$shopID')";
$result2 = mysql_query($q2) or die(mysql_error());
}
?>
如果未选中,则不会显示在$_POST
答案 1 :(得分:1)
试试这个,希望可以帮到你:
<?php
$name = $_POST['name'];
$description = $_POST['description'];
$identifer[] =($_POST['identifer']);
$y = null;
if(count($identifer) > 1){
foreach($identifer as $x){
$y .= $x.",";
}
$val = rtrim($y,",");
} else {
$val = $identifer[0]
}
$result = mysql_query("INSERT INTO places (places_id, book_id, shop_id) VALUES (NULL, NULL, '$val')") or die(mysql_error());
$q = "INSERT INTO baldas (book_id, name, description) VALUES (NULL, '$name', '$description')";
$result2 = mysql_query($q) or die(mysql_query());
?>
如果在桌子上放置places_id并且在桌子上放置了book_id是AUTO_INCREMENT,你可以尝试使用add.php
<?php
$name = $_POST['name'];
$description = $_POST['description'];
$identifer = $_POST['identifer'];
$shop_id = null;
if(isset($identifer)) $shop_id = implode(',', $identifer);
$q = "INSERT INTO baldas (name, description) VALUES ('$name', '$description')";
$result = mysql_query($q) or die(mysql_query());
$book_id = mysql_insert_id();
$result2 = mysql_query("INSERT INTO places (book_id, shop_id) VALUES ('$book_id', '$shop_id')") or die(mysql_error());
?>
答案 2 :(得分:0)
我认为将ID设置为NULL可能会出现问题,如果ID是自动递增的(我认为它们是自动递增的)。检查一下。
显示错误总是有帮助的。
答案 3 :(得分:0)
包含您可以购买 图书的所有“地点”的表格应该包含:
每个地方都会有一个行,可以购买一本书。因此,如果要添加一个可以购买一本书籍的地方,您应该只需要一个查询:
INSERT INTO places (book_id, shop_id) VALUES ($book_id, $shop_id)
注意我没有包含place_id,因为那应该是自动递增。