Mammouth du PHP |
1609 Messages
25 mai 2019, 19:02
Voilà, code non testé donc possibles erreurs mais c'est ça. Les 2 parties SCRIPT devraient être dans 2 fichiers différents. La fonction sort_alpha_noaccent_tolower pourrait aller dans un fichier d'include séparé que tu inclurais dans les 2 scripts comme le script mysqli_conn.php.
<?php
/** FUNCTIONS */
function sort_alpha_noaccent_tolower($str)
{
$str = mb_strtolower($str); // tout en minuscules
$str = strtr($str, // sans accents
'àáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'aaaaaaceeeeiiiioooooouuuuyy');
$chr = str_split($str,1);
sort($chr); // ordre alphabetique
return trim(implode('',$chr)); // supprime les espaces (si on a plusieurs mots)
}
/** SCRIPT UPDATE DATABASE - EXECUTE ONCE */
require ('mysqli_conn.php');
$conn = new mysqli($servername, $username, $password, $dbname);
$query = 'SELECT * FROM dictionnaire';
$words = $conn->query($query);
while ($word = $words->fetch_object())
{
$sorted_letters = $conn->real_escape_string(sort_alpha_noaccent_tolower($word->scrabble_name));
$update = "UPDATE dictionnaire SET sorted_letters = '$sorted_letters'";
$conn->query($update);
}
/** SCRIPT LOOKING FOR ANAGRAMMES */
require ('mysqli_conn.php');
$conn = new mysqli($servername, $username, $password, $dbname);
$search = 'chanter';
$sorted_letters = $conn->real_escape_string(sort_alpha_noaccent_tolower($search));
$query = "SELECT * FROM dictionnaire WHERE sorted_letters = '$sorted_letters'";
$words = $conn->query($query);
while ($word = $words->fetch_object())
{
if ($word->scrabble_name != $search)
echo $word->scrabble_name.'<br/>';
}
Les test if ($words->num_rows > 0) sont dispensables, s'il n'y a pas de lignes retournées, les while feront false dès leur première itération.
Et j'ai enlevé les tests de résultat car quand on est sûr de sa requête c'est pas indispensable. ^^
Développeur web depuis + de 20 ans