Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.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
Javascript 希望不将空文本字段问题输入数据库_Javascript_Php_Html_Mysql - Fatal编程技术网

Javascript 希望不将空文本字段问题输入数据库

Javascript 希望不将空文本字段问题输入数据库,javascript,php,html,mysql,Javascript,Php,Html,Mysql,我有一个php questionare页面,它从数据库生成多个问题。所有的问题都是真是假,但也有一些问题的附加部分有一个填充文本字段(见图)。如果填充文本字段(“填充任务文本”)中包含文本,则响应和文本将保存到msyslq数据库中。但是,如果文本框中没有问题文本,我不希望随附问题编号的回复被提交。我认为有一个简单的解决方案,但我对php的了解还不够,无法弄清楚如何做到这一点——即只在文本框中有文本时将响应插入数据库 以下是问题和填写问题的内容: 下面是从_POST变量获取响应并将其放入“res

我有一个php questionare页面,它从数据库生成多个问题。所有的问题都是真是假,但也有一些问题的附加部分有一个填充文本字段(见图)。如果填充文本字段(“填充任务文本”)中包含文本,则响应和文本将保存到msyslq数据库中。但是,如果文本框中没有问题文本,我不希望随附问题编号的回复被提交。我认为有一个简单的解决方案,但我对php的了解还不够,无法弄清楚如何做到这一点——即只在文本框中有文本时将响应插入数据库

以下是问题和填写问题的内容:

下面是从_POST变量获取响应并将其放入“responses”表的相关代码

以下是浏览器中与上面屏幕截图对应的html。(抱歉弄得一团糟)


对
不
我既不后悔过去,也不想关上它的门。
我想做这个

对 不 我阅读有意义的文章并与他人讨论。 我想做这个
对 不 其他: 我想做这个
对 不 其他: 我想做这个
如果我需要提供更多细节,请告诉我。我认为它也可以用JavaScript来完成,但我也不太明白


谢谢。

我想应该这样做:)

foreach($\u POST['question']作为$key=>$questionToInsert)
{
$follow=(isset($_POST['follow'][$key])?$_POST['follow'][$key]:'';
$fill_in_quest_text=(isset($_POST['fill_in_quest_text'][$key]))?
$\u POST['fill_in_quest_text'][$key]:'';
$q=(isset($_POST['q'][$key])?$_POST['q'][$key]:'';
如果($q){
如果(isset($\u POST['fill\u in_quest\u text'][$key])&&$\u POST['fill\u in_quest\u text'][$key]=''){
//跳过
}否则{
回显“do”。$\u发布['question'][$key].
;//用于调试目的 $query=“插入到响应中(用户id、问题id、响应主、, 响应\跟进、类别、响应\时间、唯一会话、填写任务\文本) 值(“$\u SESSION['userid']..”、“$\u POST['question'][$key]..”、“$q..”、, “$follow.”,“$_POST[“category”]”,“,”。日期(“Y-m-d”)。”, “$”会话['unique_SESSION']。”,““$填写任务文本。”)”; mysql\u查询($query); } } }
您应该能够简单地检查输入的“真实性”。这将消除诸如空字符串
”之类的响应,这可能是从空输入中得到的

尝试按如下方式修改代码:

$q=(isset($\u POST['q'][$key]))$_发布['q'][$key]:'';
//不要储存“falsy”$q
如果($q)
{
$query=“在响应中插入(用户id、问题id、响应主、响应后续、类别、响应时间、唯一会话、在任务文本中填充)值(“$”会话['userid']。”,“$”发布['question'][$key]。”,“$q.”,“$follow.”,“$”发布[“类别”,“$”日期(“Y-m-d”),“$”会话['unique会话['question'][$key]。”,在任务文本中填充“,”;
mysql\u查询($query);
}
更新 根据OP的评论,如果您想保存一些可能为空的字段,您需要以某种方式通知PHP。默认情况下,PHP无法知道一段数据来自哪种类型的输入。实现这一点的一种方法可以是:


这里的想法是构建一个输入数组,我们希望将其强制存储在数据库中。然后我们只需检查输入键是否在
force\u save
数组中:

//这一行:
如果($q){}
//变成:
如果($q | |在_数组($key,$_POST['force_save']){}中

谢谢@TrueSkillZ。但是我不知道如何打印$\u POST['question']变量的内容,因为我提交的代码不在html页面的可视部分。然而,“question”变量只是问题ID的整数。关于您的JavaScript解决方案,我不明白如何将其集成到代码中。这是我将与Submit按钮放在一起的内联代码吗?谢谢。您只需将上面的代码复制到HTML中,然后单击“提交”按钮。它将检查所有字段是否为空并禁用它们。您不需要在submit按钮中添加任何内容,该代码会自动检测表单提交。你能给出你包含的图像的HTML输出吗?然后,我将看到编写最终PHP代码所需的所有详细信息。您可以在问题中包含HTML输出:)我在上面的问题中添加了HTML。关于您提供的javascript,我将其放在文档的区域中,并添加了jquery源url,但似乎没有任何效果。注意,我已经有了一些javascript函数,所以我不知道这是否会影响它的工作。我不知道如何判断代码是否正在运行。用php解决方案更新了这个问题。只添加了代码“if(isset($\u POST['fill\u in_quest\u text'][$key])&&$\u POST['fill\u in_quest\u text'][$key]=''”{”它检查是否有文本输入,是否存在,是否为空跳过:)已测试并正在处理:)谢谢@TrueSkillZ,但它似乎总是将测试视为错误,并对每个问题执行查询。我尝试了empty()函数,但没有用。如果我单独使用测试的第一部分(isset())它会插入每个问题,除了框中有文本的问题。如果我只使用测试的第二部分($\u POST['fill\u in_quest\u text'][$key]
foreach( $_POST['question'] as $key => $questionToInsert ) 
{
 $follow = ( isset($_POST['follow'][$key]) ) ? $_POST['follow'][$key] : '';
 $fill_in_quest_text = ( isset($_POST['fill_in_quest_text'][$key]) ) ?
    $_POST['fill_in_quest_text'][$key] : '';
 $q = ( isset($_POST['q'][$key]) ) ? $_POST['q'][$key] : '';

 $query = "insert into responses(userid,question_id,response_main,
    response_followup,category,response_time,unique_session,fill_in_quest_text)
    values('".$_SESSION['userid']."','".$_POST['question'][$key]."', '".$q."',
    '".$follow."','".$_POST["category"]."','".date("Y-m-d")."',
   '".$_SESSION['unique_session']."','".$fill_in_quest_text."')";

 mysql_query($query);
}
    <tr>
    <td width="70" valign="top"><input  type="radio" name="q[37]" value="yes" onClick='callme("q37","y","follow37")'> Yes
    <input type="hidden" name="question[37]" value="364"></td>
<td width="70" valign="top"><input type="radio" name="q[37]" value="no" onClick='callme("q37","n","follow37")' >    
  No</td>
  <td>I neither regret the past nor wish to close the door on it.</td>
</tr>
<tr>
  <td width="70" valign="top">&nbsp;</td>
  <td width="70" valign="top">&nbsp;</td>
  <td ><div id="q37" style="display:none">
<input type="checkbox" id="follow37" name="follow[37]" value="yes" >
I would like to work on this</div>
    <br>
        </td></tr>
    <tr>
  <td width="70" valign="top"><input  type="radio" name="q[38]" value="yes" onClick='callme("q38","y","follow38")'>
    Yes
    <input type="hidden" name="question[38]" value="365"></td>
  <td width="70" valign="top"><input type="radio" name="q[38]" value="no" onClick='callme("q38","n","follow38")' >    
  No</td>
  <td>I read meaningful texts and discuss them with others.</td>
</tr>
<tr>
  <td width="70" valign="top">&nbsp;</td>
  <td width="70" valign="top">&nbsp;</td>
  <td ><div id="q38" style="display:none">
<input type="checkbox" id="follow38" name="follow[38]" value="yes" >
I would like to work on this</div>
    <br>
        </td></tr>
    <tr>
  <td width="70" valign="top"><input  type="radio" name="q[39]" value="yes" onClick='callme("q39","y","follow39")'>
    Yes
    <input type="hidden" name="question[39]" value="366"></td>
  <td width="70" valign="top"><input type="radio" name="q[39]" value="no" onClick='callme("q39","n","follow39")' >    
  No</td>
  <td>Other:  <input style='font-size=13px;' type='text' size='90' name='fill_in_quest_text[39]'></td>
</tr>
<tr>
  <td width="70" valign="top">&nbsp;</td>
  <td width="70" valign="top">&nbsp;</td>
  <td ><div id="q39" style="display:none">
<input type="checkbox" id="follow39" name="follow[39]" value="yes" >
I would like to work on this</div>
    <br>
        </td></tr>
    <tr>
  <td width="70" valign="top"><input  type="radio" name="q[40]" value="yes" onClick='callme("q40","y","follow40")'>
    Yes
    <input type="hidden" name="question[40]" value="367"></td>
  <td width="70" valign="top"><input type="radio" name="q[40]" value="no" onClick='callme("q40","n","follow40")' >    
  No</td>
  <td>Other:  <input style='font-size=13px;' type='text' size='90' name='fill_in_quest_text[40]'></td>
</tr>
<tr>
  <td width="70" valign="top">&nbsp;</td>
  <td width="70" valign="top">&nbsp;</td>
  <td ><div id="q40" style="display:none">
<input type="checkbox" id="follow40" name="follow[40]" value="yes" >
I would like to work on this</div>
    <br>
        </td>
</tr>
<tr>
  <td colspan="3"><input id="btns" type="submit" name="submit" value=" Submit " onClick="return countUAquestions()">&nbsp;&nbsp;
    <!-- <input type="button" name="button" value="Cancel" onClick="window.location.href='welcome_page.php'"> -->
    <input id="btns" type="button" name="button" value="  Cancel  " onClick="return jsconfirm()"></td>
</tr>
<tr>
  <td colspan="3" height="20">&nbsp;</td>
</tr>
    </table>
    <input type="hidden" name="category" value="Spiritual_Wellness">
    <input type="hidden" name="total_questions" value="40">
  </form>
</div>
     foreach( $_POST['question'] as $key => $questionToInsert ) 
        {
         $follow = ( isset($_POST['follow'][$key]) ) ? $_POST['follow'][$key] : '';
         $fill_in_quest_text = ( isset($_POST['fill_in_quest_text'][$key]) ) ?
            $_POST['fill_in_quest_text'][$key] : '';
         $q = ( isset($_POST['q'][$key]) ) ? $_POST['q'][$key] : '';

        if($q){
          if(isset($_POST['fill_in_quest_text'][$key]) && $_POST['fill_in_quest_text'][$key]==''){
          //skip
          }else{
            echo 'do'.$_POST['question'][$key].'<br/>'; //for debug purpose
           $query = "insert into responses(userid,question_id,response_main,
              response_followup,category,response_time,unique_session,fill_in_quest_text)
              values('".$_SESSION['userid']."','".$_POST['question'][$key]."', '".$q."',
              '".$follow."','".$_POST["category"]."','".date("Y-m-d")."',
             '".$_SESSION['unique_session']."','".$fill_in_quest_text."')";

          mysql_query($query);
          }
      }

        }