Recherche dans une base

Répondre
universdupc
le 12/01/2006 à 15:41
universdupc
Bonjour !

Voilà je viens de créer un annuaire téléphonnique. Avec une page d'acceuille donannt toutes les informations : nom, prenom, tel... Une page ajout de personne, une autre suppression de personne, une concerannt une fiche...
Dans ma page parincipale j'ai effectuer diffrent affichage. Soit toutes les données rangé dans l'ordre alphabétique où soit un trie. C'est-à-dire lorsque l'on appuie sur une lettre "A" par exemple on affiche juste les nom commencant par "A".
J'ai voulu rajouter un système de recherche aussi. C'est- à-dire en tapant le nom d'une personne seule les personnes de la base de données comportant ce nom doit s'afficher, ùais apparament ce ne marche pas pourriez-vous me dire si mon code est faux si vouz voyez l'erreur. Car moi je trouve pas.

Voici le code :

Remplacer par un wall

Merci

Note de zebden : utilisez le wall pour vos longs codes
zebden
le 12/01/2006 à 16:00
zebden
lu,

Premièrement,
$sql .= 'WHERE nom = "$recherche"'; va renvoyer WHERE nom = "$recherche", la variable ne sera pas interprétée en délimitant une chaine entre quotes.

Secondo,
si tu as une lettre ET une recherche tu va obtenir un truc dans le style WHERE `nom` REGEXP (a|A){1}WHERE `nom` = "pierre".

Donc une solution, mettre tes clauses dans un tableau

$whr .= 'WHERE `nom` REGEXP "^(' . strtoupper($lettre) . '|';
$whr .= strtolower($lettre) . '){1}"'
$tableauWhere[] = $whr;

ET pour la recherche corriger par :

$whr = '`nom` = "' . $recherche . '"';
$tableauWhere[] = $whr;


Lorsque tu construis ta requête :

$sql .= '...';
if($tableauWhere) $sql .= 'WHERE ' . implode(' OR ', $tableauWhere);
$sql .= ' ORDER BY `nom`


Tu peux très bien remplacer OR par AND mais je doute que ca soit vraiment utile (c'est même inutile et idiot), ainsi que d'allier les deux avec OR. Mais au moins t'as une solution qui marche.
zebdinou pour les intimes / Blog : http://www.zebden.fr
universdupc
le 12/01/2006 à 16:12
universdupc
ok popur le wall dsl je ne savais pas. Ben j'ai lu ce que tu ma dis ca semble bien mais un peu compliquer pour mes connaissances. j'ai donc essayé de le faire et cela foncitonne enfin à moitier je suis obliger de cliquer deux fois sur recherche pour que cela fonctionne ??
Le code est la

Voici le code :

http://www.lephpfacile.com/wall/wall.php?id=2558

Note de zebden : Les balises lien aussi c'est bien !
zebden
le 12/01/2006 à 16:23
zebden
Alors ton problème se situe la :

<form action="index.php?recherche=<?php echo($_POST['recherche']); ?>" method="POST">

à remplacer par <form action="index.php" method="post">

Dans tes tests, tu ne passes plus par $_GET mais $_POST.

if(isset($_POST['recherche'])) // Instruction.

Revoie la notion de superglobale pour bien comprendre la nuance entre les deux.
zebdinou pour les intimes / Blog : http://www.zebden.fr
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours