更改为 mysqli,并带有一些消息以输出调试信息,试试这个(设置数据库连接字段以适合您的数据库):-
<div class="adjust">
<?php
$link = new mysqli("hostname", "username", "password", "databasename");
if ($link->connect_errno)
{
printf("Connect failed: %s\n", $link->connect_error);
exit();
}
?>
<center><form class="greatForm" method="post" action="#">
<?php
$sql = "SELECT price, item_name, item_label, item_img FROM extra_item WHERE theme_name = '$title'";
if ( ($read_extra = $link->query($sql)===false )
{
echo "Invalid query: ".$link->error."\r\n $sql\r\n";
exit();
}
while($show_extra = $read_extra->fetch_array(MYSQLI_ASSOC))
{
$_SESSION['getextraprice'] = $show_extra['price'];
$_SESSION['getextraname'] = $show_extra['item_name'];
?>
<input type="checkbox" name="<?php echo $show_extra['price']; ?>" id="<?php echo $show_extra['item_label']; ?>" value="<?php echo $show_extra['item_label']; ?>"/>
<label for="<?php echo $show_extra['item_label']; ?>" >
<img style="height:150px;width:150px;" src="<?php echo 'themeinfo/extra/'.$show_extra['item_img']; ?>"/><?php echo $show_extra['item_name']; ?></label>
<?php
}
?>
<center><br><br><input type="submit" class="button" style="width:10%;" value="SAVE" name="choose_extra"></center></br>
</form></center>
<?php
if(isset($_POST['choose_extra']))
{
$getextraprice = $_SESSION['getextraprice'];
$getextraname = $_SESSION['getextraname'];
$sql = "INSERT INTO selectextra(user,title,extraitem,price) VALUES('$username','$title','$getextraname,'$getextraprice')";
if ( ($insert = $link->query($sql)===false )
{
echo "failed: ".$link->error."\r\n $sql\r\n";
}
else
{
echo "Order SAVE.";
}
}
?>
</div>
</div>
编辑 - 如果你真的想使用 mysql_* 调用,那么试试这个,这至少会让你知道错误是什么:-
<div class="adjust">
<center><form class="greatForm" method="post" action="#">
<?php
$read_extra = mysql_query("SELECT price, item_name, item_label, item_img FROM extra_item where theme_name = '".mysql_real_escape_string($title)."'") or die(mysql_error());
while($show_extra = mysql_fetch_array($read_extra))
{
$_SESSION['getextraprice'] = $show_extra['price'];
$_SESSION['getextraname'] = $show_extra['item_name'];
?>
<input type="checkbox" name="<?php echo $show_extra['price']; ?>" id="<?php echo $show_extra['item_label']; ?>" value="<?php echo $show_extra['item_label']; ?>"/>
<label for="<?php echo $show_extra['item_label']; ?>" >
<img style="height:150px;width:150px;" src="<?php echo 'themeinfo/extra/'.$show_extra['item_img']; ?>"/><?php echo $show_extra['item_name']; ?></label>
<?php
}
?>
<center><br><br><input type="submit" class="button" style="width:10%;" value="SAVE" name="choose_extra"></center></br>
</form></center>
<?php
if(isset($_POST['choose_extra']))
{
$getextraprice = mysql_real_escape_string($_SESSION['getextraprice']);
$getextraname = mysql_real_escape_string($_SESSION['getextraname']);
$takeextra = mysql_query("INSERT INTO selectextra(user,title,extraitem,price) VALUES('".mysql_real_escape_string($username)."','".mysql_real_escape_string($title)."','$getextraname,'$getextraprice')") or die(mysql_error());
if($takeextra)
{
echo "Order SAVE.";
}
else{
echo "failed";
}
}
?>
</div>
</div>
如果您想获取已勾选的复选框,则可以这样做:-
<div class="adjust">
<center><form class="greatForm" method="post" action="#">
<?php
$read_extra = mysql_query("SELECT price, item_name, item_label, item_img FROM extra_item where theme_name = '".mysql_real_escape_string($title)."'") or die(mysql_error());
while($show_extra = mysql_fetch_array($read_extra))
{
$_SESSION['getextraprice'] = $show_extra['price'];
$_SESSION['getextraname'] = $show_extra['item_name'];
?>
<input type="checkbox" name="<?php echo $show_extra['price']; ?>" id="<?php echo $show_extra['item_label']; ?>" value="<?php echo $show_extra['item_label']; ?>"/>
<label for="<?php echo $show_extra['item_label']; ?>" >
<img style="height:150px;width:150px;" src="<?php echo 'themeinfo/extra/'.$show_extra['item_img']; ?>"/><?php echo $show_extra['item_name']; ?></label>
<?php
if(isset($_POST['choose_extra']) and array_key_exists($show_extra['price'], $_POST) and $_POST[$show_extra['price']] != '')
{
$takeextra = mysql_query("INSERT INTO selectextra(user, title, extraitem, price)
VALUES('".mysql_real_escape_string($username)."',
'".mysql_real_escape_string($title)."',
'".mysql_real_escape_string($show_extra['item_name'])."',
'".mysql_real_escape_string($_POST[$show_extra['price']])."')") or die(mysql_error());
}
}
?>
<center><br><br><input type="submit" class="button" style="width:10%;" value="SAVE" name="choose_extra"></center></br>
</form></center>
</div>
</div>
请注意,这只是一个猜测,因为字段名称是数字价格的字段似乎很奇怪。
编辑 - 根据猜测进一步更新:-
<div class="adjust">
<center><form class="greatForm" method="post" action="#">
<?php
$read_extra = mysql_query("select id, item_label, price, item_name, item_img from extra_item where theme_name = '$title'");
while($show_extra = mysql_fetch_array($read_extra))
{
echo "<input type='checkbox' name='checkextra[".$show_extra['id']."]' id='".$show_extra['item_label']."' value='".$show_extra['price']."'/>";
echo "<label for='".$show_extra['item_label']."' >";
echo "<img style='height:150px;width:150px;' src='themeinfo/extra/'".$show_extra['item_img']."'/>".$show_extra['item_name']."</label>";
echo "<input type='hidden' name='item_name[".$show_extra['id']."]' value='".$show_extra['item_name']."'/>";
}
echo "<center><br><br><input type='submit' class='button' style='width:10%;' value='SAVE' name='choose_extra'></center></br>";
echo "</form></center>";
if(isset($_POST['choose_extra']))
{
foreach($_POST['checkextra'] as $getextraprice_id=>$getextraprice)
{
$takeextra = mysql_query("INSERT INTO selectextra(user,title,extraitem,price)
VALUES('".mysql_real_escape_string($username)."',
'".mysql_real_escape_string($title)."',
'".mysql_real_escape_string($_POST['item_name'][$getextraprice_id])."',
'".mysql_real_escape_string($getextraprice)."')") or die(mysql_error());
}
if($takeextra)
{
echo "<center>Extra item order SAVE.</center>";
}
else
{
echo "failed";
}
}
?>
</div>
将带有价格值的复选框和包含 item_name 的隐藏字段放在一起。两者都是数组。这些数组的索引应该匹配。当您处理表单时,您会遍历复选框,您将获得每个复选框数组项的索引,并将其用作访问 item_name 字段的索引。
再次编辑。使用序列号来强制表单元素数组的索引(可能应该是必要的,但我更喜欢强制执行)而不是使用表中的字段。
<div class="adjust">
<center><form class="greatForm" method="post" action="#">
<?php
$conn = mysql_connect('localhost', 'root', '');
mysql_select_db('test', $conn);
$title = 'fred';
$username = 'jo';
$read_extra = mysql_query("SELECT item_label, price, item_name, item_img FROM extra_item WHERE theme_name = '$title'");
$row_cnt = 0;
while($show_extra = mysql_fetch_array($read_extra))
{
echo "<input type='checkbox' name='checkextra[$row_cnt]' id='".$show_extra['item_label']."' value='".$show_extra['price']."'/>";
echo "<label for='".$show_extra['item_label']."' >";
echo "<img style='height:150px;width:150px;' src='themeinfo/extra/'".$show_extra['item_img']."'/>".$show_extra['item_name']."</label>";
echo "<input type='hidden' name='item_name[$row_cnt]' value='".$show_extra['item_name']."'/>";
$row_cnt++;
}
echo "<center><br><br><input type='submit' class='button' style='width:10%;' value='SAVE' name='choose_extra'></center></br>";
echo "</form></center>";
if(isset($_POST['choose_extra']))
{
foreach($_POST['checkextra'] as $getextraprice_id=>$getextraprice)
{
$takeextra = mysql_query("INSERT INTO selectextra(user,title,extraitem,price)
VALUES('".mysql_real_escape_string($username)."',
'".mysql_real_escape_string($title)."',
'".mysql_real_escape_string($_POST['item_name'][$getextraprice_id])."',
'".mysql_real_escape_string($getextraprice)."')") or die(mysql_error());
}
if($takeextra)
{
echo "<center>Extra item order SAVE.</center>";
}
else
{
echo "failed";
}
}
?>
</div>