Fonction de rechercher (php)

Fermé
Choupi12 - 3 juil. 2009 à 09:27
 Choupi12 - 6 juil. 2009 à 10:29
Bonjour,
Je fais un tableau d'utilisateurs en php mais ma liste est longue et je voudrais faire un input text pour rechercher mes utilisateurs selon un critère. Seulement je ne vois pas quelle fonction utiliser pour récupéré mes utilisateurs. Le but étant que lorsqu'on note un nom ou un début de nom mes utilisateurs s'affiche a partir de ce nom ou début de nom ... Pouvez vous m'aider ? merci d'avance.

Je vous montre mon début mon code avec le tableau et mon input text.
?><tr><?php
foreach ($tableau as $val)
{
?><td><?php echo $val['nom']; ?></td><?php
?><td><?php echo $val ['prenom']; ?></td><?php
?><td><?php echo $val ['fonction']; ?></td><?php
?><td><?php echo $val ['mail']; ?></td><?php
?></tr><?php
}

?>
<p>Rechercher un utilisateur : </p>

<form align = "center">
<input type="text" name="<?php$mot?> "hize="20">
<input type="submit" value="Rechercher" alt="Lancer la recherche!">

</form>
A voir également:

17 réponses

up please ^^
0
Utilisateur anonyme
3 juil. 2009 à 11:14
tu veux que cela ce fasse automatique, ou alors ça ne te dérange pas que la page se recharge pour afficher la liste des pseudo commençant par le critère de recherche ?

Et les données du tableau sont extraite d'un BDD ou... ?
0
ben je préfèré que sa se fasse automtiquement mais si ta solution nécessite un rafaichissement de page c'est pas grave je suis preneuse.
0
Utilisateur anonyme
3 juil. 2009 à 11:47
Pour le faire automatiquement, il faudrait utiliser javascript, ne connaissant pas très bien javascript, je te passe une méthode avec PHP :

<?php
foreach ($tableau as $val)
{
?>
    <?php
    if( isset($_POST['keyword']) ){
$keyword = $_POST['keyword'];

if (preg_match("#^$keyword#", $val['nom'])){
    ?>

<td><?php echo $val['nom']; ?></td>
<td><?php echo $val ['prenom']; ?></td>
<td><?php echo $val ['fonction']; ?></td>
<td><?php echo $val ['mail']; ?></td>

    <?php
}
else{
}
    }
    else{
    ?>

<td><?php echo $val['nom']; ?></td>
<td><?php echo $val ['prenom']; ?></td>
<td><?php echo $val ['fonction']; ?></td>
<td><?php echo $val ['mail']; ?></td>

    <?php
    }
    ?>

<?php
}
?>

<p>Rechercher un utilisateur : </p>

<form action="#" method="POST">
<input type="text" name="keyword" value="" size="20">
<input type="submit" value="Rechercher" alt="Lancer la recherche!">
</form>



heu... bon ya certainement plein d'erreur mais le principe est là... j'ai pas trop le temps là si tu patiente jusqu'à cet aprem' j'auaris le temps de te faire un truc correct
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ok je serai la cette aprem. bon dja je prend sa et je test si ya truc faut jvais chercher pour les corriger t jte tien au courant merci bcp.
0
Utilisateur anonyme
3 juil. 2009 à 14:31
alors, beaucoup d'erreur ?
0
ben ouii assez. disons que a proprement parler ya aucun message d'erreur. mais lorsque le code s'éxécute sa me réaffiche plusieur fois ma liste
0
Utilisateur anonyme
3 juil. 2009 à 15:25
ouai bon je te refais ça bien je reposte dans 1/2 heure ^^
0
ok ;)
0
ah au passage, j'avais pas vu ta question tout a l'heure.
Donc je n'est pas de base de données mais j'ai récupéré une liste d'utilisateur provenant d'un Active directory.
0
Utilisateur anonyme
3 juil. 2009 à 15:45
Bon bah j'ai tester chez moi en créant un tableau vite fait et ça marche bien comme ça :

<?php
$tableau = array();
$tableau[0]['nom'] = "cyber.angel";
$tableau[1]['nom'] = "evuez";
$tableau[2]['nom'] = "chewaka";
$tableau[3]['nom'] = "cestpasmoi";
$tableau[0]['prenom'] = "julien";
$tableau[1]['prenom'] = "elsa";
$tableau[2]['prenom'] = "jerome";
$tableau[3]['prenom'] = "personne";
$tableau[0]['fonction'] = "aucune";
$tableau[1]['fonction'] = "aucune";
$tableau[2]['fonction'] = "aucune";
$tableau[3]['fonction'] = "aucune";
$tableau[0]['mail'] = "machin@machin.com";
$tableau[1]['mail'] = "machin@machin.com";
$tableau[2]['mail'] = "machin@machin.com";
$tableau[3]['mail'] = "machin@machin.com";
?>

<p>Rechercher un utilisateur : </p>

<form action="#" method="POST">
<input type="text" name="keyword" value="" size="20">
<input type="submit" value="Rechercher" alt="Lancer la recherche!">
</form>

<table border="2">
    
<?php
foreach ($tableau as $val)
{
?>
    <?php
    if( isset($_POST['keyword']) ){
$keyword = $_POST['keyword'];

if (preg_match("#^$keyword#", $val['nom'])){
    ?>

<tr>
<td><?php echo $val['nom']; ?></td>
<td><?php echo $val['prenom']; ?></td>
<td><?php echo $val['fonction']; ?></td>
<td><?php echo $val['mail']; ?></td>
</tr>

    <?php
}
else{
}
    }
    else{
    ?>

<tr>
<td><?php echo $val['nom']; ?></td>
<td><?php echo $val['prenom']; ?></td>
<td><?php echo $val['fonction']; ?></td>
<td><?php echo $val['mail']; ?></td>
</tr>

    <?php
    }
    ?>

<?php
}
?>

</table>




0
simple question pourquoi tu réécrit ca ??? Mon tableau va s'afficher 2 fois
<tr>
<td><?php echo $val['nom']; ?></td>
<td><?php echo $val['prenom']; ?></td>
<td><?php echo $val['fonction']; ?></td>
<td><?php echo $val['mail']; ?></td>
</tr>
0
Utilisateur anonyme
3 juil. 2009 à 15:54
bah non, parce que si on lance une recherche, il affiche les résultats, sinon il affiche tout le contenu du tableau.
mais tu peux enlever le 2ème si tu veux ^^
0
ok ok. bon j'ai garder les deux sa me va comme sa. Sa ne marche pas tout a fais mais je pense étre sur la bonne voi grace a toi merci
0
Utilisateur anonyme
3 juil. 2009 à 15:58
de rien, si tu a un problème hésite pas ;)
0
rebonjour !
Merci pour ce code il marchait parfaitement en fait. seulement je ne m'en été pas rendu compte tout de suite parce que j'ai un petit problème avec la casse de mon $nom.
je voudrais faire en sorte de l'ignorer comme sa mes utilisateurs ne seront pas obliger de tapé en majuscule. aprés plusieur tentative je n'y arrive toujours pas.
Si quelqu'un a une idée. merci d'avance.
0
bON J'ai persévéré et j'ai finalement trouvé ^^ merci encore !
0