Une question pour les débutants, alors soyez gentil :)

J'ai créé un petit script de recherche pour rechercher des valeurs dans ma base de données. Mais lorsque je mets un résultat de recherche, j'obtiens tous les fichiers de ma base de données. Pas seulement le nom que je cherchais. Je ne suis pas un technicien alors je me demandais où se situe mon erreur.

Page de recherche principale

        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(document).ready(function(){

                 function search(){

                      var name=$("#search").val();

                      if(name!=""){
                        $("#result").html("<img src='ajax-loader.gif'/>");
                         $.ajax({
                            type:"post",
                            url:"search-database.php",
                            data:"name="+search,
                            success:function(data){
                                $("#result").html(data);
                                $("#search").val("");
                             }
                          });
                      }



                 }

                  $("#button").click(function(){
                     search();
                  });

                  $('#search').keyup(function(e) {
                     if(e.keyCode == 13) {
                        search();
                      }
                  });
            });
        </script>
  </head>
  <body>
        <div id="container">
             <input type="text" id="search" placeholder="Zoek hier uw kandidaat...."/>
             <input type="button" id="button" value="Zoek" />
             <ul id="result"></ul>
        </div>
  </body>
</html>

Search-database.php

<?php
include 'dbconfig.php';
?>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Gevonden kandidaten</title>
</head>
<body>
<div id="header">
<label>Resultaten</label>
</div>
<div id="body">
    <table width="80%" border="1">
    <tr>
    <td>File Name</td>
    <td>File Type</td>
    <td>File Size(KB)</td>
    <td>View</td>
    </tr>
    <?php
    $search=$_POST['search'];
    $query = $pdo->prepare("select * from test where name LIKE '%$search%' LIMIT 0 , 10");
    $query->bindValue(1, PDO::PARAM_STR);
    $query->execute();
        while($results= $query->fetch())
        {
        ?>
        <tr>
        <td><?php echo $results['name'] ?></td>
        <td><?php echo $results['type'] ?></td>
        <td><?php echo $results['size'] ?></td>
        <td><a href="uploads/<?php echo $results['file'] ?>" target="_blank">view file</a></td>
        </tr>
        <?php
    }
    ?>
    </table>

</div>
</body>
</html>
0
WouterS 17 janv. 2017 à 15:39

2 réponses

Meilleure réponse

Remplacez votre fonction de recherche par

function search(){
                   var name=$("#search").val();
                    if(name!=""){
                             $("#result").html("<img src='ajax-loader.gif'/>");
                             $.ajax({
                                type:"post",
                                url:"search-database.php",
                                data:"name="+name,
                                success:function(data){
                                    $("#result").html(data);
                                    $("#search").val("");
                                }
                           });
                      }

                 }
1
NITIN PATEL 17 janv. 2017 à 12:46

Ici :

var name=$("#search").val();

Vous définissez votre valeur d'entrée sur une variable nommée name, mais ici:

data:"name="+search,

Vous envoyez une valeur inexistante nommée search à votre fichier PHP (dans $POST['name']).

Par conséquent, $_POST['search'] est vide et votre requête SQL est:

select * from test where name LIKE '%%' LIMIT 0 , 10

Ce qui renvoie tous les résultats.

Vous devez remplacer votre ligne de données dans votre appel AJAX pour:

data:"search="+name,
1
roberto06 17 janv. 2017 à 12:42