【问题标题】:Update database with checkbox php mysql使用复选框 php mysql 更新数据库
【发布时间】:2012-08-16 11:07:52
【问题描述】:

我想用选中状态的复选框更新数据库。

  • 如果选中,则使用 1 更新数据库。
  • 否则,如果未选中,则将其更新为 0。

它可以正常工作,但如果不选中它就不起作用。

<?php 
include('lib/db.php');

$facebook_id ="10001088";
$query1 = "SELECT `video`,`quran`,`medical`,`groups`  FROM `man_facebook`.`users` WHERE `facebook_id`='$facebook_id'";
        $result1 = mysql_query($query1);
while($result = mysql_fetch_array($result1))
{
    $video = $result['video'];
    $quran = $result['quran'];
    $medical = $result['medical'];
    $groups = $result['groups'];
    echo $video;
 //   echo $quran;
?>

<form method="post"  action="<? echo $_SERVER['REQUEST_URI']; ?>" >

<input type="checkbox" name="video" id="video" value="<?echo $video;?>" <?php
if($video == '1'){
     echo "checked='checked'";
}
 else {}
echo "/>"
?> 
 <input type="submit" name="submit" value="Submit">
</form>

<?php
}
 if (isset($_POST['submit']))
{
 if (is_numeric($_POST['video']) && $_POST['video'] <2 )
{
 $video1 = isset($_POST['video']) ? '1' : '0';


 echo $video1;
    $query = mysql_query("UPDATE `man_facebook`.`users` 
SET `video` ='$video1'
WHERE `facebook_id`='$facebook_id'");

$video = $video1;
echo '<meta http-equiv="refresh" content="0" />';

    }
    }
//echo $query;
 //header("Location: updatesql.php"); 

?>

也可以用jquery顺利更新吗?

【问题讨论】:

  • 请不要在新应用程序中使用mysql_query。这是 1990 年代的界面,正在退役。您应该使用 mysqli 和 PDO 以从可靠、正确的 SQL injection protection 中受益。
  • 你可以而且绝对应该使用 jquery 来更新复选框!
  • 好的,我会使用 mysqli 但我想先解决这个问题

标签: php mysql html checkbox


【解决方案1】:

我觉得这部分有点奇怪:

if (is_numeric($_POST['video']) && $_POST['video'] <2 )
{
    $video1 = isset($_POST['video']) ? '1' : '0';

您首先检查它是否为数字,然后检查它是否已设置。如果未设置,则 if 将自动变为 false。换句话说,$video 始终为 1。假设 $video 只能是真/假(或者它可能是“已检查”/“未检查”,不太确定),这样使用它:

$video1 = ($video ? '1' : '0');

希望我成功地发现了这个问题 :)

更新

<input type="checkbox" name="video" id="video" value="video" <?php
if($video == '1'){
     echo "checked='checked'";
}
echo "/>";

...

if (isset($_POST['submit']))
{
    echo $_POST['video']; // again, please tell what it outputs here!!!
    $video1 = (($_POST['video'] == "video") ? '1' : '0');

【讨论】:

  • 不不,我的意思是你以某种错误的方式检查它。在两种情况下都回显$_POST['video'](选中和未选中)并告诉我你得到了什么:P
  • 也许是因为你也定义了它的价值?尝试摆脱这部分:`value=""`
  • 已更新,请告诉它在这两种情况下的输出:)
  • 输出是“视频”...但它可以工作:) 谢谢.....你能帮我改用 jquery 吗?
  • 恐怕我不太擅长 :( 你应该试着提出另一个问题,有人会帮助你的 :) 很高兴我在这个问题上提供了帮助 :)
【解决方案2】:

复选框更新

if (isset($_POST["send"]) && $_POST["send"] == "ok") {

    foreach ($_POST['membre'] as $id => $data) {

        mysql_query("UPDATE tablename SET param1='" . $data['param'] . "'  WHERE id='" . $id . "'");
    }
}

<form>
    <input type="hidden" name="send" value="ok" />
    <td class="cel2" style=" width: 100px;">
        <input name="membre[<?php print $val['id']; ?>][param]" type="checkbox" style="margin-top: 7px; width: 30px;" value="1" id="param" <?php if ($val['p'] == '1') print 'checked'; ?> />
    </td>
</form>

【讨论】:

    猜你喜欢
    • 2016-12-14
    • 2012-06-03
    • 2017-06-06
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多