Bonjour à tous,
j'ai un bug qui subsiste depuis un moment sur un moteur de recherche (pour chercher un membre), principalement l’auto complétion, je m'explique:
si je marque ma, et qu'il y a dans la bdd (dans cet ordre) "Mattis" "Mathis" "MathisHey", il devrait me mettre les trois pseudos. Le problème est que le premier pseudo dans la bdd commençant par ces lettres (dans ce cas là "Mattis", n'est pas affiché.
Voici le code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | $(document).ready(function() { $results = $('#results'); $search = $('#browse'); $search.focus(function(){ if ($search.val().length > 0 ){ $results.show(200); } $(this).css('background-color', 'rgba(255,255,255,.3)'); }); $search.blur(function() { if ($search.val().length > 0) { $(this).css('background-color', 'rgba(255,255,255,.3)'); } else { $(this).css('background-color', 'rgba(255,255,255,.1)'); } }); $search.keyup(function(){ if ( $(this).val().length > 1 ) { $.get('http://1day-online.fr/ajax/search?string=' + $search.val(), function(data) { $results.empty(); $users = data.split('|'); $count = 0; if ($users[0] != "") { $.each($users,function(){ if (this != "") { /^\{(.+)\}\[(.+)\]$/.exec(this); $name = RegExp.$1; /*if($name.charAt(0) == "#") { $url = RegExp.$2.substring(1, RegExp.$2.length); $results.append($('<div class="block-results">') .append('<a href="http://1day-online.fr/tag/' + $url + '">' + $name + '</a>')) .append('</div>'); } else { */ $results.append($('<div class="block-results" onclick="openProfil(\'' + RegExp.$2 + '\');">') .append('<p>' + $name + '</p>')) .append('</div>'); //} $results.show(); } }); } else { $results.append('<div class="block-results"><p>Aucun résultat</p></div>') } }); } else { $('#results').hide(200); } }); }); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public function search() { $params['string'] = $_GET['string']; $params['limit'] = 15000; $req = $this->loadModel('userModel', getSearch, $params); $req2 = $this->loadModel('pageModel', searchTag, $params); foreach ( $req as $r) { echo '{' . htmlspecialchars($r['pseudo']) . '}'; echo '[' . $r['id'] . ']'; echo '|'; } foreach ( $req2 as $r2) { preg_match('#\#' . $params["string"] . '[a-zA-Z0-9]+ #i', $r2['content'], $tag); echo '{' . $tag[0] . '}'; echo '[' . $tag[0] . ']'; echo '|'; } } |
1 2 3 4 5 6 7 8 9 10 | public function getSearch($params) { $this->connect(); $pre = $this->bdd->prepare("SELECT * FROM users WHERE pseudo REGEXP'^" . $params['string'] . "' LIMIT 0, " . $params['limit']); $pre->execute(array('')); return $pre->fetchAll(); } |
Merci d'avance!
+0
-0