Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP从非布尔MySQL派生复选框状态_Php_Mysql - Fatal编程技术网

使用PHP从非布尔MySQL派生复选框状态

使用PHP从非布尔MySQL派生复选框状态,php,mysql,Php,Mysql,目前我有一个表单,可以使用字段和复选框。字段和复选框都可以完美地更新数据库: <?php function renderForm($articletitle, $articleorganization, $articledate, $articleurl, $articletags ) { ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"

目前我有一个表单,可以使用字段和复选框。字段和复选框都可以完美地更新数据库:

<?php
 function renderForm($articletitle, $articleorganization, $articledate, $articleurl, $articletags )
 {
 ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <link rel="stylesheet" type="text/css" href="style.css">
  </head>
  <body>
    <div id="stylized" class="myform">
      <form id="form" name="form" action="" method="post">

现在,我想知道我是否应该用一个布尔复选框来代替

原因是我还构建了一个编辑表单,它完全遵循新的条目表单,只是值已经通过MySQL数据库填充

所以,我假设使用布尔运算会容易得多,对吗

因此,我不应该使用数组,而是应该为复选框指定不同的名称,在edit.php页面上,我可以使用如下内容:

<?php
 function renderForm($id, $articletitle, $articleorganization, $articledate, $articleurl, $articletags)
 {
 ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <link rel="stylesheet" type="text/css" href="style.css">
  </head>
  <body>
    <div id="stylized" class="myform">
      <form id="form" name="form" action="" method="post">
      <input type="hidden" name="id" value="<?php echo $id; ?>"/>
        <h1>Edit Details for &nbsp; &nbsp;<?php echo $articletitle; ?></h1>
        <fieldset>
          <legend>Article details</legend>
          <div class="row">
            <div class="field"><label>Article Title</label><input type="text" name="articletitle" value="<?php echo $articletitle; ?>"/></div>
          </div>
          <div class="row">
            <div class="field"><label>Article Author </label><input type="text" name="articleorganization" value="<?php echo $articleorganization; ?>"/></div>
            <div class="field"><label>Article Date </label><input type="text" name="articledate" value="<?php echo $articledate; ?>"/></div>
          </div>
          <div class="row">
            <div class="field"><label>Article Url: </label><input type="text" name="articleurl" value="<?php echo $articleurl; ?>"/></div>
          <div class="row">

          <input type="checkbox" name="articletags1" value="checkbox" id="articletags_0" />
          <input type="checkbox" name="articletags2" value="checkbox 2" id="articletags_1" />

          </div>
        </fieldset>
        <footer><input type="submit" name="submit" value="Submit"></footer></form>
    </div>
  </body>
</html>
<?php
 }

 include('settings.php');

 if (isset($_POST['submit']))
 { 
 if (is_numeric($_POST['id']))
 {
 $id = $_POST['id'];
 $articletitle = mysql_real_escape_string(htmlspecialchars($_POST['articletitle']));
 $articleorganization = mysql_real_escape_string(htmlspecialchars($_POST['articleorganization']));
 $articledate = mysql_real_escape_string(htmlspecialchars($_POST['articledate']));
 $articleurl = mysql_real_escape_string(htmlspecialchars($_POST['articleurl']));
 $articletags = implode(',', $_POST['articletags']);


 if ($articletitle == '' || $articletags == '')
 {
 $error = 'ERROR: Please fill in all required fields!';
 renderForm($id, $articletitle, $articletags);
 }
 else
 {
 mysql_query("UPDATE articles SET articletitle='$articletitle', articleorganization='$articleorganization', articledate='$articledate', articleurl='$articleurl', articletags='$articletags' WHERE id=$id")
 or die(mysql_error()); 

 header("Location: editsuccess.html"); 
 }
 }
 else
 {
 echo 'Error!';
 }
 }
 else
 {
 if (isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id'] > 0)
 {
 $id = $_GET['id'];
 $result = mysql_query("SELECT * FROM articles WHERE id=$id")
 or die(mysql_error()); 
 $row = mysql_fetch_array($result);
 if($row)
 {
 $articletitle = $row['articletitle'];
 $articleorganization = $row['articleorganization'];
 $articledate = $row['articledate'];
 $articleurl = $row['articleurl'];
 $articletags = $row['articletags'];

 renderForm($id, $articletitle, $articleorganization, $articledate, $articleurl, $articletags, '');
 }
   else
 {
   echo "No results!";
 }
 }
   else
 {
   echo 'Error!';
    }
     }
?>


但问题是edit.php页面上的复选框仍然没有显示选中状态。

您需要使用
checked=“checked”
,使用方式与使用
value
相同。请参见解决方案底部:

<input type="checkbox" <?php if(isset($_POST[articletags1])) echo 'checked="checked" ' ?>name="articletags1" value="checkbox" id="articletags_0" />
<input type="checkbox" <?php if(isset($_POST[articletags2])) echo 'checked="checked" ' ?>name="articletags2" value="checkbox 2" id="articletags_1" />
name=“articletags2”value=“checkbox 2”id=“articletags\u 1”/

希望这能奏效更新了正确的代码。使用
ini\u集('display\u errors',1)
生成错误。

Praveen,我尝试了你的建议,结果出现了一个空白页……你能说得更具体一点吗?
isset()
有问题。它需要一个
$\u POST[]
,否则
articletags1
将被解释为常量<代码>isset($\u POST['articletags1'])
<?php
 function renderForm($id, $articletitle, $articleorganization, $articledate, $articleurl, $articletags)
 {
 ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <link rel="stylesheet" type="text/css" href="style.css">
  </head>
  <body>
    <div id="stylized" class="myform">
      <form id="form" name="form" action="" method="post">
      <input type="hidden" name="id" value="<?php echo $id; ?>"/>
        <h1>Edit Details for &nbsp; &nbsp;<?php echo $articletitle; ?></h1>
        <fieldset>
          <legend>Article details</legend>
          <div class="row">
            <div class="field"><label>Article Title</label><input type="text" name="articletitle" value="<?php echo $articletitle; ?>"/></div>
          </div>
          <div class="row">
            <div class="field"><label>Article Author </label><input type="text" name="articleorganization" value="<?php echo $articleorganization; ?>"/></div>
            <div class="field"><label>Article Date </label><input type="text" name="articledate" value="<?php echo $articledate; ?>"/></div>
          </div>
          <div class="row">
            <div class="field"><label>Article Url: </label><input type="text" name="articleurl" value="<?php echo $articleurl; ?>"/></div>
          <div class="row">

          <input type="checkbox" name="articletags1" value="checkbox" id="articletags_0" />
          <input type="checkbox" name="articletags2" value="checkbox 2" id="articletags_1" />

          </div>
        </fieldset>
        <footer><input type="submit" name="submit" value="Submit"></footer></form>
    </div>
  </body>
</html>
<?php
 }

 include('settings.php');

 if (isset($_POST['submit']))
 { 
 if (is_numeric($_POST['id']))
 {
 $id = $_POST['id'];
 $articletitle = mysql_real_escape_string(htmlspecialchars($_POST['articletitle']));
 $articleorganization = mysql_real_escape_string(htmlspecialchars($_POST['articleorganization']));
 $articledate = mysql_real_escape_string(htmlspecialchars($_POST['articledate']));
 $articleurl = mysql_real_escape_string(htmlspecialchars($_POST['articleurl']));
 $articletags = implode(',', $_POST['articletags']);


 if ($articletitle == '' || $articletags == '')
 {
 $error = 'ERROR: Please fill in all required fields!';
 renderForm($id, $articletitle, $articletags);
 }
 else
 {
 mysql_query("UPDATE articles SET articletitle='$articletitle', articleorganization='$articleorganization', articledate='$articledate', articleurl='$articleurl', articletags='$articletags' WHERE id=$id")
 or die(mysql_error()); 

 header("Location: editsuccess.html"); 
 }
 }
 else
 {
 echo 'Error!';
 }
 }
 else
 {
 if (isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id'] > 0)
 {
 $id = $_GET['id'];
 $result = mysql_query("SELECT * FROM articles WHERE id=$id")
 or die(mysql_error()); 
 $row = mysql_fetch_array($result);
 if($row)
 {
 $articletitle = $row['articletitle'];
 $articleorganization = $row['articleorganization'];
 $articledate = $row['articledate'];
 $articleurl = $row['articleurl'];
 $articletags = $row['articletags'];

 renderForm($id, $articletitle, $articleorganization, $articledate, $articleurl, $articletags, '');
 }
   else
 {
   echo "No results!";
 }
 }
   else
 {
   echo 'Error!';
    }
     }
?>
<input type="checkbox" <?php if(isset($_POST[articletags1])) echo 'checked="checked" ' ?>name="articletags1" value="checkbox" id="articletags_0" />
<input type="checkbox" <?php if(isset($_POST[articletags2])) echo 'checked="checked" ' ?>name="articletags2" value="checkbox 2" id="articletags_1" />