2017-08-20 1 views
0

Iam en essayant de faire une recherche en direct ajax. Lorsque vous mettez un mot, il affiche automatiquement des suggestions ci-dessous, tout comme w3schools. Mais pour une raison quelconque mon fichier d'index et mon php n'échangent pas de valeur de données ou ma base de données ne se connecte pas pour une raison quelconque. Ce que je reçois toujours est "aucun pays trouvé". Pouvez-vous vérifier le code pour les erreurs? c'est le fichier php:Ajax recherche ne se connecte pas à la base de données

<?php 
include_once('dbconnect.php'); 
$q = intval($_GET['q']); 
    $query = mysqli_query($conn,"SELECT * FROM `users` WHERE userCountry LIKE '%".$q."%'"); 
     $count = mysqli_num_rows($query); 
//Replace table_name with your table name and `thing_to_search` with the column you want to search 
    if($count == "0" || $q == ""){ 
     $s[] = "No Country found!"; 
    }else{ 
       while($row = mysqli_fetch_array($query)){ 
     $s[] = $row['userCountry']; // Replace column_to_display with the column you want the results from 
       } 
     } 
for($x = 0; $x < $count; $x++) { 
      echo $s[$x]; 
      echo "<br>"; 
} 
?> 

et voici mon fichier index.php:

<head> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
     <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> 
     <link rel="stylesheet" href="/resources/demos/style.css"> 
     <script src="https://code.jquery.com/jquery-1.12.4.js"></script> 
     <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> 
<script> 
function showCountry(str) { 
    if (str == "") { 
     document.getElementById("txtHint").innerHTML = ""; 
     return; 
    } else { 
     if (window.XMLHttpRequest) { 
      // code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp = new XMLHttpRequest(); 
     } else { 
      // code for IE6, IE5 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     xmlhttp.onreadystatechange = function() { 
      if (this.readyState == 4 && this.status == 200) { 
       document.getElementById("txtHint").innerHTML = this.responseText; 
      } 
     }; 
     xmlhttp.open("GET","indexsearchquery.php?q="+str,true); 
     xmlhttp.send(); 
    } 
} 
</script> 
<input id="search-box" name="q" type="text" autocomplete="off" placeholder="Search country..." onchange="showCountry(this.value)" /> 
     <input type='image' name='search' id="search-icon" value='Submit' src="search-icon.png" > 
     <p style="color:white;">Suggestions: <span id="txtHint" ></span></p> 
+0

Lors du débogage, quelle est la valeur envoyée au serveur? Quelle est la requête SQL en cours d'exécution lors de l'exécution? Quelles sont les données dans 'utilisateurs 'et quel (s) enregistrement (s) prévoyez-vous de renvoyer? – David

Répondre

0

Votre nom du pays ne sera pas en entier. mais vous le convertir en intval changer votre fichier php pour

include_once('dbconnect.php'); 
$q = $_GET['q']; //<-----remove intval 
    $query = mysqli_query($conn,"SELECT * FROM `users` WHERE userCountry LIKE '%".$q."%'"); 
     $count = mysqli_num_rows($query); 
//Replace table_name with your table name and `thing_to_search` with the column you want to search 
    if($count == "0" || $q == ""){ 
     $s[] = "No Country found!"; 
    }else{ 
       while($row = mysqli_fetch_array($query)){ 
     $s[] = $row['userCountry']; // Replace column_to_display with the column you want the results from 
       } 
     } 
for($x = 0; $x < $count; $x++) { 
      echo $s[$x]; 
      echo "<br>"; 
} 
+0

Probablement à noter la vulnérabilité de l'injection SQL flagrante cette réponse crée ... – David

+0

cela a fonctionné vous êtes l'homme. Maintenant comment je me protège des injections sql? – Peslis

+0

Utilisez des instructions préparées Vous trouverez beaucoup de tutoriel pour cela –

-1

il est important de connaître le contenu du fichier dbconnect.php parce que l'un contenant des variables de connexion de base de données. Vérifiez si votre serveur MySQL est en place et que toutes les variables sont bien définies.