Bonjour,
Sur mon site créé il y a presque 25 ans j'utilise un moteur de recherche adossé à une base SQL pour trouver des photos. La page de recherche : https://www.perso-laplagne.fr/PhotosAnciennes.php.
Depuis quelques mois (ou années sans que j'y prenne garde ?) les résultats sont de plus en plus incohérents et sensibles à la casse alors qu'ils ne devraient pas...
Voici le code PHP
Je sais que cette requête est complètement obsolète mais ce qui me perturbe c'est que pour un même mot écrit différemment j'ai des résultats incomplets et variables.
Exemple : "Bellecôte"
- Bellecôte renvoie 72 photos
- Bellecote renvoie 80 photos
- bellecote renvoie 71 photos
- bellecôte renvoie... 0 photos
Pourtant l'interclassement choisi (utf8mb4_0900_ai_ci) est censé rendre les requêtes insensibles à la casse (enfin je crois !).
Le problème vient-il de la requête ? de la base ?
Merci de votre aide !!
Modifié par ARGo (12 Apr 2026 - 11:13)
Sur mon site créé il y a presque 25 ans j'utilise un moteur de recherche adossé à une base SQL pour trouver des photos. La page de recherche : https://www.perso-laplagne.fr/PhotosAnciennes.php.
Depuis quelques mois (ou années sans que j'y prenne garde ?) les résultats sont de plus en plus incohérents et sensibles à la casse alors qu'ils ne devraient pas...
Voici le code PHP
<?php
$paysages = htmlentities($_POST['paysages'], ENT_QUOTES);
$travaux = htmlentities($_POST['travaux'], ENT_QUOTES);
$stations = htmlentities($_POST['stations'], ENT_QUOTES);
$teleskis = htmlentities($_POST['teleskis'], ENT_QUOTES);
$telesieges = htmlentities($_POST['telesieges'], ENT_QUOTES);
$telecabines = htmlentities($_POST['telecabines'], ENT_QUOTES);
$evenements = htmlentities($_POST['evenements'], ENT_QUOTES);
$anneemin = htmlentities($_POST['anneemin'], ENT_QUOTES);
$anneemax = htmlentities($_POST['anneemax'], ENT_QUOTES);
$motscles = $_POST['motscles'];
$motscles = '%'.$motscles.'%';
?>
(...)
<?
$requete_sql='SELECT Nom, Legende, LegendeENG, LegendeSecondaire, MotsCles, Objet, AnneeMin, AnneeMax from PhotographiesAnciennes WHERE (anneemin BETWEEN \''.$anneemin.'\' AND \''.$anneemax.'\' OR anneemax BETWEEN \''.$anneemin.'\' AND \''.$anneemax.'\') AND (Objet LIKE \''.$telesieges.'\' OR Objet LIKE \''.$stations.'\' OR Objet LIKE \''.$paysages.'\' OR Objet LIKE \''.$travaux.'\' OR Objet LIKE \''.$evenements.'\' OR Objet LIKE \''.$teleskis.'\' OR Objet LIKE \''.$telecabines.'\') AND (Legende LIKE \''.$motscles.'\' OR LegendeSecondaire LIKE \''.$motscles.'\' OR LegendeENG LIKE \''.$motscles.'\'OR MotsCles LIKE \''.$motscles.'\') ORDER BY AnneeMin';
$resultat=mysql_query($requete_sql);
$nb_image=mysql_num_rows($resultat);
?>
(...)
Je sais que cette requête est complètement obsolète mais ce qui me perturbe c'est que pour un même mot écrit différemment j'ai des résultats incomplets et variables.
Exemple : "Bellecôte"
- Bellecôte renvoie 72 photos
- Bellecote renvoie 80 photos
- bellecote renvoie 71 photos
- bellecôte renvoie... 0 photos
Pourtant l'interclassement choisi (utf8mb4_0900_ai_ci) est censé rendre les requêtes insensibles à la casse (enfin je crois !).
Le problème vient-il de la requête ? de la base ?
Merci de votre aide !!
Modifié par ARGo (12 Apr 2026 - 11:13)