Il ya quelque temps, j'ai fait une fonction de recherche avec ajax et php. Vous pouvez remplir une zone de texte avec du texte et essayer de trouver une correspondance entre tous les pays stockés dans la base de données. Maintenant, je raffine le code et le fait PDO, mais j'ai cassé quelque chose et je ne peux pas savoir quoi.Base de données PHP ajax pas de mise à jour
c'est ma simple HTML
<head>
<title>Ajax</title>
<link href="style/style.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" type="text/css" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="scripts/Javascript.js"></script>
</head>
<body>
<div id="main">
<h1 class="title">Enter your country please</h1>
<input type="text" id="search" autocomplete="off" onchange="">
<h4 id="results-text">Showing results for: <b id="search-string">Array</b></h4>
<ul id="results"></ul>
</div>
</body>
voici mon Jquery et javascript. note que je n'ai rien changé au HTML ni javascript donc il ne peut pas par une erreur de type.
$(document).ready(function() {
alert('asdf');
function search() {
var query_value = $('input#search').val();
$('b#search-string').html(query_value);
if(query_value !== ''){
$.ajax({
type: "POST",
url: "search.php",
data: { query: query_value },
cache: false,
success: function(html){
$("ul#results").html(html);
}
});
}
return false;
}
$("input#search").live("keyup", function(e) {
clearTimeout($.data(this, 'timer'));
var search_string = $(this).val();
if (search_string == '') {
$("ul#results").fadeOut();
$('h4#results-text').fadeOut();
}
else {
$("ul#results").fadeIn();
$('h4#results-text').fadeIn();
$(this).data('timer', setTimeout(search, 100));
};
});
});
Et voici mon search.php
<?php
class SearchEngine{
private $html;
public function __construct($conn){
$this->html = '<li class="result">
<h3>NameReplace</h3>
<a target="_blank" href="ULRReplace"></a>
</li>';
if (isset($_POST["query"])) {
$search_string = mysql_real_escape_string($search_string);
}
else{
$search_string = 'b';
}
if (strlen($search_string) >= 1 && $search_string !== ' ') {
$query = 'SELECT * FROM country WHERE name LIKE "%' . $search_string . '%"';
$result = $conn->prepare($query);
$result->execute();
$result_array = $result->fetchAll();
foreach ($result_array as $result) {
$display_name = preg_replace("/" . $search_string . "/i", "<b>" . $search_string . "</b>", $result['name']);
$display_url = 'sadf';
$output = str_replace('NameReplace', $display_name, $this->html);
$output = str_replace('ULRReplace', $display_url, $output);
echo($output);
}
}
}
}
?>
Les problèmes:
la requête Post est jamais créé, pour cela, je fait un isset donc pour l'instant quand il y a Aucune post-requête créée. Il va créer une post-requête avec la valeur "B".
Je pense que la page ne sera jamais mise à jour, mais je ne peux pas être sûr à 100% puisque la publication n'est jamais créée, donc il n'y a jamais de mise à jour de la requête. Et pour une raison quelconque, les résultats ne sont pas placés là au bon endroit.
Toute aide sera très appréciée. S'il vous plaît soyez gentil je suis nouveau à Ajax et je veux plutôt comprendre que d'avoir la solution. Merci
si vous var_dump ($ _ POST); '- est-ce que quelque chose est affiché? Que se passe-t-il si vous essayez de naviguer manuellement vers la page PHP qui a mis à jour le code SQL? – Dutchie432
Je ne peux pas var_Dump le poste, car il ne sera jamais créé. J'ai testé le javascript.js et les fonctions internes sont appelées mais ne font pas ce qu'elles sont sensées faire. et que voulez-vous dire avec le manuel naviguer vers la page PHP? –
@KrijnvanderBurg vous avez encore besoin d'aide pour cette question? – meda