我是PHP和MySQL的新手。所以我坚持一个简单的问题。 现在我已经阅读了2晚关于我的问题,我在这里找到了很多主题,谷歌在那里谈论这个,但没有真正帮助我。我希望有人可以帮助我。
我有一个复选框,为mysql字段“what”发送yes / no值。但问题是我没有得到所选复选框的ID。
MySQL看起来像 - >
id | first_name |second_name | age ?|what
1 | first | second | 30 | no
2 | first | second | 35 | no
3 | first | second | 40 | no
我的代码看起来像 - >
选择零件:
$query = mysql_query("SELECT * FROM people") or sqlerr(__FILE__, __LINE__);
更新部分:
if (!empty($_GET['look'])) {
$what = ($_GET['what'] == yes) ? "yes" : "no";
$sql = "UPDATE people SET what = '$what' WHERE id = " . mysql_real_escape_string($id) . "";
mysql_query($sql) or die(mysql_error()); }
提交部分:
<div>
<input type="submit" name="look" value="Select">
<br><br>
<input type="button" onClick="select_all('what', '1');" value="All">
<input type="button" onClick="select_all('what', '0');" value="None">
</div>
选择全部/无由Javascript控制。
复选框部分:
<td align="center">
<input type="checkbox" name="what" value="yes" <?php ($what["what"]=="yes"?" checked":"") ?> \>
</td>
当我对$ sql发出回声时
$sql = "UPDATE people SET what = '$what' WHERE id = " . mysql_real_escape_string($id) . "";
echo($sql);
exit();
显示:
未选中时:
UPDATE people SET what = 'no' WHERE id =
选择时:
UPDATE people SET what = 'yes' WHERE id =
这是我的JS部分:
var formblock;
var forminputs;
function prepare() {
formblock= document.getElementById('form_id');
forminputs = formblock.getElementsByTagName('input');
}
function select_all(name, value) {
for (i = 0; i < forminputs.length; i++)
{
var regex = new RegExp(name, "i");
if (regex.test(forminputs[i].getAttribute('name'))) {
if (value == '1') {
forminputs[i].checked = true;
} else {
forminputs[i].checked = false;
}
}
}
}
if (window.addEventListener) {
window.addEventListener("load", prepare, false);
} else
if (window.attachEvent) {
window.attachEvent("onload", prepare)
} else
if (document.getElementById) {
window.onload = prepare;
}
所以我认为Upate SET有效,但我没有从所选复选框中获取id,而在MySQL中也没有变化。
有人能告诉我我做错了吗?
THX为您的利益!
StefanW
答案 0 :(得分:0)
首先你应该知道,如果实际检查了复选框,只能通过$ _POST / $ GET发送给PHP脚本。所以知道这一点你实际上不需要知道值是yes
或no
,你可以假设它存在或不是$ _POST / $ _GET。
因此,如果您将与此复选框相关的表格行的id
放入value=""
,那么当您查看$_GET['what']
时,您将获得要更新的行的ID / p>
因此PHP更新代码可能变为:
if ( isset($_GET['what']) ) {
$id = mysql_real_escape_string($_GET['what']);
$sql = "UPDATE people
SET what = 'yes'
WHERE id = $id";
$res = mysql_query($sql);
if ( !$res ) {
// show error
}
}
现在,如果你有更多的那个复选框要调用what
,我想从javascript中假设你需要将这些复选框命名为像
<input type="checkbox" name="what[]" value="<?php echo $id;?>">
请参阅name="what[]"
,这将导致您在$ _GET / $ _ POST中收到what
的数组,您可以像
foreach ( $_GET['what'] as $idx => $what ) {
if ( isset($what) ) {
$id = mysql_real_escape_string($what);
$sql = "UPDATE people
SET what = 'yes'
WHERE id = $id";
$res = mysql_query($sql);
if ( !$res ) {
// show error
}
}
}