Bonsoir a tous,
je tourne en rond pour la redirection de l'autocompletion, j'ai ma requete pour récupérer ma table ou je souhaite faire correspondre la recherche et mon js pour le front.
Si vous pouviez m'aider se serait COOL...
ma requete:
$pdo = connect();
$keyword = '%'.$_POST['keyword'].'%';
$sql = "
SELECT posts.id as idPost, posts.manufacturer_code, posts.title, posts.content, posts.writer, posts.image, posts.date_post, posts.posted,
posts.menus_id, posts.delivery,posts.price,posts.brand,posts.deadlines,posts.link_shop,posts.availability,posts.guarantee
FROM posts
WHERE title
LIKE (:keyword)
ORDER BY idPost
ASC LIMIT 0, 10";
$query = $pdo->prepare($sql);
$query->bindParam(':keyword', $keyword, PDO::PARAM_STR);
$query->execute();
$list = $query->fetchAll();
foreach ($list as $rs) {
// put in bold the written text
$title = str_replace(htmlspecialchars($_POST['keyword']), '<b>'.$_POST['keyword'].'</b>', $rs['title']);
// add new option
echo '<li onclick="set_item(\''.str_replace("'", "\'", $rs['title']).'\')">'.$title.'</li>';
}
mon js:
function autocomplet() {
var min_length = 2; // min caracters to display the autocomplete
var keyword = $('#autocomplete_input').val();
if (keyword.length >= min_length) {
$.ajax({
url: 'content/ajax/autocomplet.php',
type: 'POST',
data: {keyword:keyword},
success:function(data){
$('#country_list_id').show();
$('#country_list_id').html(data);
}
});
} else {
$('#country_list_id').hide();
}
}
// set_item : this function will be executed when we select an item
function set_item(item) {
var idPost = $(this).attr('id');
console.log(id);
// change input value
$('#autocomplete_input').val(item);
window.location = "index.php?controller=blog&page=blog&id="+idPost;
// hide proposition list
$('#country_list_id').hide();
};
et mon form:
<form method="post">
<div class="input-field">
<i class="material-icons prefix">search</i>
<label for="autocomplete-input">Rechercher un article...</label>
<input type="text" id="autocomplete_input" class="autocomplete" onkeyup="autocomplet()">
<ul id="country_list_id" class="autocomplete-content dropdown-content"></ul>
</div>
</form>
Mon autocompletion fonctionne j'ai bien le title qui remonte dans mon input, pour la redirection je seche et coté sécurité y t-il un risque qvec se code ???
Merci d'avance
La solution a mon PB c'est de supprimer la function :
function set_item(item) {
var idPost = $(this).attr('id');
console.log(id);
// change input value
$('#autocomplete_input').val(item);
window.location = "index.php?controller=blog&page=blog&id="+idPost;
// hide proposition list
$('#country_list_id').hide();
};
et dans ma function PHP :
foreach ($list as $rs) {
// put in bold the written text
$title = str_replace(htmlspecialchars($_POST['keyword']), '<b>'.$_POST['keyword'].'</b>', $rs['title']);
// add new option
echo '<li onclick="set_item(\''.str_replace("'", "\'", $rs['title']).'\')">'.$title.'</li>';
}
Remplacer par
foreach ($list as $rs) {
// put in bold the written text
$title = str_replace(htmlspecialchars($_POST['keyword']), '<b>'.$_POST['keyword'].'</b>', $rs['title']);
// add new option
echo '<li><a href="index.php?controller=blog&page=post&id='.$rs['idPost'].'">'.$title.'</a></li>';
}
Pour ceux que cela peut interesser...