Une recherche un peu particulière

Mammouth du PHP | 545 Messages

01 nov. 2007, 00:37

Bonjour,

Je suis occupé de coder un système de classement où l'on y trouve une liste de nom de personne ... pour l'heure, il y a plus de 5000 entrées (et l'on y retrouve difficilement quelqu'un) mais il risque d'en avoir beaucoup plus plutard !

Voyons la page ici

Je voudrais y proposer de système pour retrouver une personne :
- dans un champ texte, cela ne devrait pas trop poser de problème pour un nom entier mais j'aimerai qu'il soit proposer plusieurs nom pouvant correspondre si l'utilisateur mets par exemple quelques lettres (Ex pour Renard, il aurait mis Ren -> Renard, Renaud, Rentier, etc)
- Faire une liste alphabétique (n'y a-t-il pas un autre moyen que d'encoder chacune des lettres ?) qui me renvoie vers la liste des noms commençant par la lettre sélectionnée

Merci pour vos conseils, idées, ... que je pourrais exploiter
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Eléphant du PHP | 451 Messages

01 nov. 2007, 11:39

Bonjour,

Il me semble que le plus simple serait d'utiliser une base de données non ?

Autrement, il faut gérer un index alphabétique à mettre à jour à chaque changement :
- ça peut être un index global : l'adresse de chaque article dans le fichier
- ou alors un index par lettre pour réduire la mise à jour (index correspondant à la première lettre du nom)
Avec ça, on peut faire une recherche dicotomique.

Il y a probablement d'autres solutions.
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Mammouth du PHP | 545 Messages

01 nov. 2007, 12:29

Salut,
Il me semble que le plus simple serait d'utiliser une base de données non ?
La liste de nom sort bien d'une base de données. Affiché ainsi cela me paraît long alors j'ai pensé faire une requête spéciale qui autoriserait une partie du nom pour retrouver la personne.

J'ai aussi pensé à classer par ordre alphabétique et faire la requête en conséquence.

Dans les 2 cas (que je voudrais exploiter pour donner le choix à l'utilisateur), je ne sais pas comment m'y prendre !

Merci pour ton intervention
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 514 Messages

01 nov. 2007, 12:41

$bout_de_nom = "ren";

SELECT * FROM table WHERE nom LIKE '%".$bout_de_nom."%'
comme ça ?

Sinon, tu peux utiliser le SOUNDLIKE, c'est pas mal, aussi.

Eléphant du PHP | 451 Messages

01 nov. 2007, 13:31

$bout_de_nom = "ren";

SELECT * FROM table WHERE nom LIKE '%".$bout_de_nom."%'
comme ça ?

Sinon, tu peux utiliser le SOUNDLIKE, c'est pas mal, aussi.
Exactement :D
Là ca va te sortir tout les noms qui contiennent $bout_de_nom quelque soit la position.
Si tu ne veux que les noms qui commencent par $bout_de_nom : tu enlèves le premier % :
$req="SELECT * FROM table WHERE nom LIKE '".$bout_de_nom."%'"
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Mammouth du PHP | 545 Messages

01 nov. 2007, 14:13

J'essaye cela dès que possible car pour l'instant je n'ai plus accès à mon serveur ... :roll:
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 545 Messages

01 nov. 2007, 23:54

Ok c'est bon !
Grâce à votre aide j'ai fait ceci
qui fonctionne comme je l'espérais.

Pour le reste, n'y a-t-il rien qui génère une liste alphabétique (A - B - C - D - E - F - G ...) pour donner en cette possibilité de recherche sans devoir encoder
<a href = "' . $link . '&bout=' . 'A' . '">' . 'A';?>
pour chacune des lettres de l'alphabet ?

Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 545 Messages

02 nov. 2007, 00:11

Salut,

J'ai trouvé un morceau de code qu'une personne avait utilisée
echo "<a href='".$seflink."' title='".chr(65)."'>".chr(65)."</a>"
pour avoir un 'A' ... il ne me reste plus qu'à faire une boucle et le tour est joué !

C'est un peu tiré par les cheveux, non ?

Merci de vos lumières
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 545 Messages

02 nov. 2007, 00:40

Bon et bien voilà ce que cela donne en code :
<?php 
$ascii = 91;
$link .= '&bout=';
for($i = 65; $i != $ascii; $i++) {
  echo '<a href = "' . $link . chr($i) . '" title = "' . chr($i) .'">' . chr($i);
  if ($i < 90) {
    echo ' - ';
    }
  }  
?>
Merci pour tout
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

02 nov. 2007, 08:58

Modération :
Sebe, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 545 Messages

02 nov. 2007, 09:51

Oups encore une fois !
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!