Page 1 sur 1

Recherche d un tuto

Posté : 29 janv. 2006, 01:09
par Mwu
Bonsoir tlm.


Je suis nouveau ds le domaine du php(mais je connais quelque truc qd mm :p)

Je suis a la recherche d un tutoriel pour faire euh cmt dire..

j'aimerai faire une liste de nom avec un champ de recherche pour trouver les nom de cette liste( car elle sera tres tres longue :p)


j'aurai juste besoin dun exemple ou d un tuto je serai me debrouiller pour le reste je pense.



Merci d avance a tt ceux qui repondront a ma demande


Cordialement

Mwu

Posté : 29 janv. 2006, 01:32
par zigz4g
Soir.

Je ne comprend pas exactement ce que tu recherches mais je peux peut etre te donner une premier idee de depart.

Si tu veux afficher une liste de nom tres longue, je te conseil en premier de classer tes noms par ordre alphabetique pour avoir un repartion par page.
ex : tu clique sur une lettre 'A' et le lien t'envois sur la page des noms commencant par 'A'.

Si tu veux faire une recherche dans le texte qui s'affiche dans la page, pourquoi ne pas utiliser ton navigateur pour faire la recherche. Firefox le faire tres bien et en live :)

Si vraiment tu veux faire une recherche avec du php, tu peux creer un formulaire et t'envoyer le nom recut.
Apres il te suffit, soit de faire une regexp ou mieux si tes noms sont stockes en base de donnees, tu peux faire un select avec '%' dans ta requette.

Un select du style :

Code : Tout sélectionner

select nom from utilisateur where nom like '%$nom_chercher%'
Attention car une recherche avec des % peuvent provoquer des ralentissements si ta liste est tres longue.

Ta question reste vague sur comment tu veux gerer ta liste de nom.
J'esperes t'avoir donner un point de depart.
Bonne soiree.

Posté : 29 janv. 2006, 01:35
par didgar
Salut !

Il te faut un formulaire avec un champ texte dans lequel on entre la ou les premières lettres du nom recherché.

A mon avis le mieux est de traiter le form sur sa propre page pour afficher la liste ( déroulante ? ) des résultats [ s'il y en a ] sous le champ de recherche.

En gros :
$query = "SELECT [b]id[/b], [b]nom[/b] FROM table WHERE nom LIKE '".trim($_POST['nom_du_champ_du_form'])."%' ORDER BY nom";

$result = mysql_query($query,$base_id);
$nbre_nom = mysql_num_rows($result);
if($result)
{
	while($rec = mysql_fetch_assoc($result))
	{
		$tab_nom[] = $rec;
	}
}
Après tu n'as plus qu'à parcourir le tableau $tab_nom. Cela te permettra de générer une liste déroulante avec id comme value et nom comme texte.

Genre :
echo '<option value="'.$tab_nom[$i]['[b]id[/b]'].'">'.$tab_nom[$i]['[b]nom[/b]'].'</option>'; // ou $i est le compteur d'une boucle
[Edit]
Cela suppose que tu souhaites afficher les résultats dans une liste déroulante ! Un select de form quoi ;-)
[/Edit]

A+

Didier

Posté : 29 janv. 2006, 02:44
par Mwu
Merci bcp pour vos reponses.

il est vrai que je me suis mal expliqué

je vais essayer de faire un peux mieux :)


pour la liste de nom,je pense qu une base mysql serrai plus simple pour les maj( car elle seront quotidienne)
( ca je sais faire :p)

Ensuite j'aimerai donc une page web ( php forcement)

qui affiche tt les noms de la liste (je n ariv pas a faire cela :'()

pour ce qui est de la conection entre la page et la base de donnée j'ai vu les tuto sur le site donc je dois pouvoir y ariver ss trop trop de prob :p.

ensuite j'aimerai que sur les pages de liste qu il y ai une petite case pour effectuer les recherche et c'est la que je cale :'(

( pas evidant de s'exprimer quand on connais pas les temres exact:p)


en haut des pages j'aimerai qu il y ai un petit formulaire de recherche( pour rechercher les noms présent dans la db)

et c'est cela que je n arive pas a faire



j'ai deja commencer a faire les "trucs"

les voicis

la base de donées
-- phpMyAdmin SQL Dump
-- version 2.7.0-pl2
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Dimanche 29 Janvier 2006 à 01:33
-- Version du serveur: 4.1.15
-- Version de PHP: 4.4.0-4
--
-- Base de données: `XXXXX`
--

-- --------------------------------------------------------

--
-- Structure de la table `listepk`
--

CREATE TABLE `listepk` (
`Nom` varchar(25) NOT NULL default '',
`Clan` varchar(25) NOT NULL default '',
`ID` int(11) NOT NULL default '0',
`Date` datetime NOT NULL default '0000-00-00 00:00:00'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

pour la mise a jour de cette liste je compte utiliser le mm script qui se trouve dans les tuto mais avec quelque modif evidement :p

voici la modif( qui ne marche pas actuellement,je cherche tjrs l erreur )
<?php

switch($_POST['action'])
{

// INSERTION DANS LA BASE
case "inserer":

// déclaration de quelques variables
$host = "l";
$user = "";
$pass = "";
$bdd = "";
$table = "";

// connection avec MySQL
@mysql_connect($host, $user, $pass) or die("Impossible de se connecter à la base de données"); // Le @ indique à php de ne pas afficher de message d'erreur
@mysql_select_db($bdd) or die("Impossible de se connecter à la base de données");

// affichage sélection
echo '<p>Bonjour ' . htmlentities($_POST['Nom']) . ', Clan ' . htmlentities($_POST['Clan']) . '</p>';

// stockage dans la bdd
$Nom = $_POST['Nom'];
$Clan = $_POST['Clan'];
$ID = $_POST['ID'];
if(!get_magic_quotes_gpc())
{
// si php n'est pas configuré pour le faire automatiquement, on ajoute des \ devant les '
// deux raisons : autoriser d'ajouter des ', et sécuriser notre requete
// on y reviendra dans un prochain tutorial
$nom = addslashes($nom);
$Clan = addslashes($Clan);
$ID = addslashes($ID);
}
$sql = "INSERT INTO " . $table . "(Nom, Clan, ID, Date) VALUES('" . $Nom . "','" . $Clan . "','" . $ID . "', NOW())";
$res = mysql_query($sql);

// déconnection avec MySQL
mysql_close();

break;

// AFFICHAGE FORMULAIRE HTML
default:

?>
<form method="post" action="<?php echo $_SERVER['file:///C|/DOCUME~1/Thomas/LOCALS~1/Temp/Rar$DI00.579/PHP_SELF']; ?>">
<input type="hidden" name="action" value="inserer" />
<p>Votre nom : <input type="text" name="Nom" /></p>
<p>Votre clan : <input type="text" name="Clan" /></p>
<p><input type="submit" name="Submit" value="Ok" /></p>
</form>
<?

break;

}

?>

cela s ajoute bien ds la db mais les id marchent pas :p

pas trop grave pour le moment( je pense qu'ils sont mm pas utiles:p)
lz petit truc chiant aussi c que si on entre 2 fois le mm nom ca se met 2 fois ds la bdd( c chiant mais a voir plus tard :p)

bah maintenant jvais essayer de faire le module de recherche mais je ne c pas cmt commencer a vrai dire.

pour que la recherche ne se fasse que ds une partie de la bdd(je cherche encore :p )




mci encore pour votre aide


cordialement

Mwu

Posté : 29 janv. 2006, 12:34
par jobherzt
j'ai lu un peu en diagonale, mais bon. 2 choses :
- pour que les id se mettent tout seuls, il faut que dans ta base tu aies coche la case "autoincrement" sous phpadmin.
- pour faire une recherche, il suffit que tu mette un formulaire, et que tu apprennes a faire passer une variable d'une page a une autre, puis tu recehrche ce nom dans la base avec une requete SQL.
- pour eviter d'ajouetr deux fois le memenom, il suffit de tester s'il est deja dans la base, avant de l'ajouter !! :-)

Posté : 30 janv. 2006, 17:46
par Mwu
Voila tout est quasi ok..il ne reste plus que le moteur de recherche a implémenter mais je vais me reposer un peu ^^

sinon j ai deja essayer plusieur script et avec modification aucun n as été...mais je commence a me demander si c reelement utile:p

cordialement