Bon, voici un petit script qui fonctionne normalement, teste-le en modifiant la requête avec tes champs et oublie pas d'initialiser les variables avec ton host, ton utilisateur et ton mot de passe :
<?php
/* à toi de choisir le nombre de lettres que doit vérifier la rime,
ici 4 lettres (garde le '-' devant , important !'). */
define("NOMBRE_LETTRES_RIME", -4);
$ton_host = "mysql:host=localhost;dbname=nomBdd";
$ton_utilisateur = "";
$ton_mdp = "";
$requete = "SELECT champ_mot FROM table_mots ORDER BY champ_mot";
$tableau_mots = array();
$tableau_rimes = array();
$bdd = get_bdd($ton_host,$ton_utilisateur,$ton_mdp);
$donnees_brut = $bdd->query($requete);
remplir_mots_bdd($donnees_brut, $tableau_mots);
remplir_rimes($tableau_mots, $tableau_rimes);
afficher_rimes($tableau_rimes);
// Fonctions --------------------------------
/**
* Remplit le tableau avec les mots de ta bdd
* @param [array] $donnees_brut [Données issues de ta BDD]
* @param [array] $tableau_mots [Tableau final]
* @return [rien] [Tableau envoyé par référence]
*/
function remplir_mots_bdd($donnees_brut, &$tableau_mots){
while($ligne = $donnees_brut->fetch()){
array_push($tableau_mots, $ligne['champ_mot']);
}
}
/**
* Retourne une instance de PDO
* @param [string] $host [ton hôte]
* @param [string] $user [ton utilisateur]
* @param [string] $password [ton mot de passe]
* @return [PDO object] [instance de la classe PDO]
*/
function get_bdd($host, $user, $password) {
try {
$bdd = new PDO($host, $user, $password);
} catch (Exception $e) {
die("Erreur instanciation PDO");
}
return $bdd;
}
/**
* Remplit le tableau avec les rimes éventuelles
* De la forme array(array(mot1,mot2), array(mot3,mot4), ...)
* @param [array] $tableau_mots [le tableau avec
* tous les mots de ta bdd]
* @param [array] $tableau_rimes [Le tableau
* contenant les rimes]
* @return [rien] [Tableau envoyé par référence]
*/
function remplir_rimes($tableau_mots, &$tableau_rimes){
foreach ($tableau_mots as $id => $mot) {
foreach($tableau_mots as $id2 => $mot2){
if(($mot!=$mot2) && !in_array($mot, $tableau_rimes)){
if(verifier_rime($mot, $mot2, NOMBRE_LETTRES_RIME))
array_push($tableau_rimes, array($mot, $mot2));
}
}
}
}
/**
* Vérifie l'éventuelle rime entre les 2 mots
* @param [string] $mot [description]
* @param [string] $mot2 [description]
* @param [int] $nb_lettres_rime [Constante
* définissant le nombre
* de letres que doit
* vérifier la rime]
* @return [type] [Retourne vrai ou faux]
*/
function verifier_rime($mot, $mot2, $nb_lettres_rime){
if(substr($mot, $nb_lettres_rime) == substr($mot2, $nb_lettres_rime))
return true;
return false;
}
/**
* [Affiche toutes les rimes trouvées]
* @param [array] $tableau_rimes [Tableau des rimes]
* @return [rien] [affichage simple]
*/
function afficher_rimes($tableau_rimes){
foreach ($tableau_rimes as $id => $tab) {
echo $tab[0].' rime avec '.$tab[1].'<br />';
}
}
?>
Je sais pas comment tu veux afficher tout ça donc je t'ai fait un truc tout simple à toi de choisir ensuite.