Merci pour vos réponses. Voici des compléments pour mieux m'expliquer :
Mon script qui me permet d'afficher l'autocomplétion, je ne souhaite afficher que les 5 premiers digits de mon champ code (ex. une seule fois 00010 au lieu de 00010A, 00010B, 00010C), il s'agit du même produit mais avec des conditionnements différents. Je précise que ma table est une vue d'une table très conséquente de plusieurs millions de produits et je ne peux pas rajouter de colonne dans cette table trop lourde. C'est pourquoi j'aimerai afficher juste les 5 premiers digits du code pour permettre au client de sélectionner son produit et de pouvoir choisir son conditionnement après sur la page résultat où seront afficher les sous-produits ex. : 00010A, 00010B, 00010C).
J'ai utilisé array_unique mais j'ai toujours 00010 qui s'affichent plusieurs fois :
exemple de résultat dans l'affichage de l'autocomplétion si on recherche 00010 :
00010
gel
00010
gel
00010
gel
alors que je souhaiterai avoir :
00010
gel
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
|
<?php
$conn = new mysqli("localhost","root", "","base");
if($conn->connect_error){
die("Failed to connect!".$conn->connect_error);
}
if(isset($_POST['query'])){
$inpText = $_POST['query'];
$query = "SELECT *
FROM base_vue
WHERE
code LIKE '$inpText%'
OR
nom LIKE '%$inpText%'
ORDER BY
code limit 15
";
$result = $conn->query($query);
if($result->num_rows>0){
while($row=$result->fetch_assoc()){
$result = $conn->query($query);
if($result->num_rows>0){
while($row=$result->fetch_assoc()){
// Afficher les 5 premiers caractères
$code2 = $row['code'];
$code2 = substr($code2,0,5);
$code2_3 = explode(" ",$code2);
$unique = array_unique($code2_3);
var_dump($unique);
echo"<a href='#' class='list-group-item list-group-item-action border-1'>".$code2."</a>";
echo"<a href='#' class='list-group-item list-group-item-action border-1'>".$row['nom']."</a>";
}
}
else {
echo "<p class='list-group-item border-1'>No Record</p>";
}
}
?> |
Ma table base_vue
code nom cond
00010A gel 250 ml
00010B gel 500 ml
00010C gel 1 L
00020A huile 250 ml
00020B huile 500 ml
00020C huile 1 L
Partager