带有sql查询的AJAX忽略提交表单中的空白字段

时间:2017-02-08 14:07:03

标签: php jquery sql ajax

我想使用AJAX将数据从表单发送到我的php页面,该页面将查询数据库并返回一个html表,以便刷新带有请求数据的主页面。

所有这些都将在“实时”中完成:当您完成表单中的字段填写时,将刷新所有数据。所以我将有一个新的SQL请求的AJAX请求,并将返回新的数据。

问题:如何在php文件中忽略我的请求中的空白字段?

我的SQL请求代码(我知道如何做AJAX +返回HTML):

$req = $bdd->prepare('SELECT * FROM voyages WHERE villeChargement = :villeChargement AND villeLivraison = :villeLivraison AND debutChargementReel = :debutChargementReel AND
  finChargementReel = :finChargementReel AND numeroCommande = :numeroCommande AND numeroOT = :numeroOT');
$req->execute(array(
    'villeChargement' => $_POST['villeChargement'], //Yes but... If the field was blank??
    'villeLivraison' => $_POST['villeLivraison'], //Yes but... If the field was blank??
    'debutChargementReel' => $_POST['debutChargementReel'], //Yes but... If the field was blank??
    'finChargementReel' => $_POST['finChargementReel'], //Yes but... If the field was blank??
    'numeroCommande' => $_POST['numeroCommande'], //Yes but... If the field was blank??
    'numeroOT' => $_POST['numeroOT'] //Yes but... If the field was blank??
));

包含输入字段的HTML:

<div class="container">
        <div class="row text-center">
    <div class="col-md-3 form-group">
                <label>Ville de chargement</label>
                <input type="text" class="form-control collectes-ville text-center" name="rechercheVilleChargement" placeholder="Chargement" id="rechercheVilleChargement">
                <label>Ville de livraison</label>
                <input type="text" class="form-control collectes-ville text-center" name="rechercheVilleLivraison" placeholder="Livraison" id ="rechercheVilleLivraison">
    </div>
            <div class="col-md-1 form-group">
            </div>
            <div class="col-md-1 form-group">
                <label>Chargement mini</label>
                <input type="text" id="debutChargementMini" class="form-control collectes-date-chargement-min text-center" name="debutChargementMini" placeholder="Date début" value="">
                <label><-></label>
                <input type="text" id="finChargementMini" class="form-control collectes-date-chargement-min text-center" name="finChargementMini" placeholder="Date fin" value=""> 
            </div>
            <div class="col-md-1 form-group">
                <label>Chargement réel</label>
                <input type="text" id="debutChargementReel" class="form-control collectes-date-chargement-min text-center" name="debutChargementReel" placeholder="Date début" value="">
                <label><-></label>
                <input type="text" id="finChargementReel" class="form-control collectes-date-chargement-min text-center" name="finChargementReel" placeholder="Date fin" value=""> 
            </div>
            <div class="col-md-1 form-group">
                <label>Livraison maxi</label>
                <input type="text" id="debutLivraisonMax" class="form-control collectes-date-chargement-min text-center" name="debutLivraisonMax" placeholder="Date début" value="">
                <label><-></label>
                <input type="text" id="finLivraisonMax" class="form-control collectes-date-chargement-min text-center" name="finLivraisonMax" placeholder="Date fin" value=""> 
            </div>
            <div class="col-md-1 form-group">
                <label>Livraison réelle</label>
                <input type="text" id="debutLivraisonReelle" class="form-control collectes-date-chargement-min text-center" name="debutLivraisonReelle" placeholder="Date début" value="">
                <label><-></label>
                <input type="text" id="finLivraisonReelle" class="form-control collectes-date-chargement-min text-center" name="finLivraisonReelle" placeholder="Date fin" value=""> 
            </div>
            <div class="col-md-1 form-group">
            </div>
            <div class="col-md-1 form-group">
                <label>N° de commande</label>
                <input type="text" class="form-control collectes-ville text-center" id="numeroCommande" name="numeroCommande" placeholder="N° Commande">
                <label>Numéro d'OT</label>
                <input type="text" class="form-control collectes-ville text-center" id="numeroOT" name="numeroOT" placeholder="Numero OT">
    </div>
            <div class="col-md-2 form-group">
                <label>Statut</label>
                <input type="text" class="form-control collectes-ville text-center" id="statut" name="statut" placeholder="Statut">
                <label>Transporteur</label>
                <input type="text" class="form-control collectes-ville text-center" id="transporteur" name="transporteur" placeholder="Transporteur">
    </div>
        </div>
</div>

jquery代码:

$(document).ready(function() {
  $('#sort').change(function(){
      var valeur = $('#sort option:selected').text();
      $.ajax({
        url: 'MODEL/ajaxSearchThirds.php',
        type: 'post',
        dataType: 'json',
        data: data, //All the fields data
        success: function(data) {
                   $('tbody').html(data.table);
        }
      });
  })

我是初学者,如果你认为我会做的是一个坏主意,我会接受所有的想法。

1 个答案:

答案 0 :(得分:1)

有点hacky回答,但你可能会发现它有用,我的想法是: 只检查js中的空值,如果一个是空的 - 用任何字符的符号替换它(mysql中的%),然后在查询中用'like'替换all =:

然后您的查询将返回非空字段的所有结果,但如果某些字段为空,则它将接受任何值。您没有指定,但我假设所有字段都不为空