【问题标题】:Modal not showing after database check数据库检查后不显示模态
【发布时间】:2019-10-19 16:53:27
【问题描述】:

我正在尝试创建一个注册表单。条件是,如果该人已经注册,则同一个人不能再注册。

我需要什么

我有以下 php MySQL 查询,它检查是否存在现有条目

  $duplicateCheckQuery = "SELECT * FROM registrationFormDetails WHERE email ='?' AND competition ='?'";
	$stmt = mysqli_stmt_init($conn);
	if(!mysqli_stmt_prepare($stmt, $duplicateCheckQuery)){
		echo "Duplicate check SQL statement failed";
	}else{
		mysqli_stmt_bind_param($stmt,"ss", $email, $competition);
		mysqli_stmt_execute($stmt);
		$result = mysqli_stmt_get_result($stmt);
		$resultCheck = mysqli_num_rows($result);

		if($resultCheck>0){
			
			echo '<script>
			$("#exampleModal").modal("show")
			
			</script>';
         }else{
             //register
        }
      }

我有以下从 Bootstrap 网站复制的模态代码

<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        ...
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>

当我提交表单时,我希望显示模式。但它没有显示,而是似乎提交了表单。有谁知道我哪里错了?

【问题讨论】:

  • 尝试用 $( document ).ready(function() { $("#exampleModal").modal("show"); }); 覆盖你的 js 代码 mb js 在它被初始化时并不知道你有这个表单
  • 删除'?' 周围的引号。它们是不必要的。
  • @Dharman 实际上这是导致模态不显示的实际问题。由于这个问题,$resultCheck 始终评估为 0,因此它从不显示模态窗口。我在后面的部分想通了。正如其他成员所建议的那样,即使没有 document.ready 功能,模态也会显示。我应该给你打勾

标签: php mysql forms bootstrap-4 bootstrap-modal


【解决方案1】:

模式在窗口完全加载之前被初始化,这就是它不工作的原因。所以你可以把你的代码改成这个,它工作得很好

echo '<script>
        $(document).ready(function(){
            $("#exampleModal").modal("show")
        });
        </script>';

【讨论】:

    【解决方案2】:

    正确答案如下。事实上,初始代码可以通过删除 ? 周围的 '' 标记来工作。在准备好的语句中标记。您也可以将脚本放在document.ready

      $duplicateCheckQuery = "SELECT * FROM registrationFormDetails WHERE email =? AND competition =?";
    	$stmt = mysqli_stmt_init($conn);
    	if(!mysqli_stmt_prepare($stmt, $duplicateCheckQuery)){
    		echo "Duplicate check SQL statement failed";
    	}else{
    		mysqli_stmt_bind_param($stmt,"ss", $email, $competition);
    		mysqli_stmt_execute($stmt);
    		$result = mysqli_stmt_get_result($stmt);
    		$resultCheck = mysqli_num_rows($result);
    
    		if($resultCheck>0){
    			
    			echo '<script>
    			$("#exampleModal").modal("show")
    			
    			</script>';
             }else{
                 //register
            }
          }

    然后给出模态代码

    <!-- Modal -->
    <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
      <div class="modal-dialog" role="document">
        <div class="modal-content">
          <div class="modal-header">
            <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
              <span aria-hidden="true">&times;</span>
            </button>
          </div>
          <div class="modal-body">
            ...
          </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
            <button type="button" class="btn btn-primary">Save changes</button>
          </div>
        </div>
      </div>
    </div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多