Champ auto-complété

Eléphant du PHP | 333 Messages

05 déc. 2005, 06:23

Désolé je ne sais pas comment nommer le sujet de monpost, mais voici ma question, je ne suis même pas certain d'ètre dans le bon forum, mais sinon, SVP les modo, ne pas me chicaner, mais jjuste déplacer....

J'ai ma table avec disons une colone de code et de nom.

J'aimerais avoir une page ou j'ai un "text box" et toute la liste des champs de ma table.

Pour la liste y a pas de problème, mais ce que j'aimerais est que dans le box, j'entre le # du code et au fur et à mesure que j'entre les chiffres, bien il y a des champs qui s'élimine dans la liste pour à la fin n'avoir que celui que j'ai entré le code complet.

Me comprenez vous, et cela est-il possible
Modifié en dernier par auclairp le 05 déc. 2005, 22:30, modifié 1 fois.
Ce n'est pas toujours facile d'essayer, mais c'est toujours vallorisant lorsqu'on y arrive !!!

Apprenez, ne le faite pas faire par les autres.

Mammouth du PHP | 19672 Messages

05 déc. 2005, 08:11

:shock: J'ai pas compris grand chose.

Première règle du bon développeur pour résoudre un problème : correctement le formuler. Si tu arrives à formuler clairement la question, dis-toi bien que tu auras résolu les 3/4 du problème, le 1/4 restant n'étant que de la technique et un choix de fonction appropriée.

Pour expliquer ce que tu veux faire, détaille avec clarté ce que tu as (éventuellement avec un exemple), explique ce que tu veux obtenir (avec un exemple basé sur l'exemple précédent) et décris ce que tu as déjà essayé de faire pour ça et les erreurs que tu as rencontré.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 383 Messages

05 déc. 2005, 09:00

si j'ai bien compris ce que tu veux ( rien n'est moins sur, alors suit quand meme les conseils de cyrano :-) ), ca me semble impossible a partir du PHP. peut etre en javascript, mais a mon avis tu t'embetera beaucoup pour un truc pas forcement indispensable...

Administrateur PHPfrance
Administrateur PHPfrance | 250 Messages

05 déc. 2005, 10:24

bonjour auclairp
regarde du coté de la technologie Ajax pour faire ce que tu souhaite faire

Le_Bébert
Invité n'ayant pas de compte PHPfrance

05 déc. 2005, 18:06

De façon claire:

Tu as une base de données avec deux champs : code et nom

Tu veux un formulaire avec un <input> pour saisir le code du champs voulu. Sachant qu'au fur et a mesure qu'on rentre le code: une liste du formulaire se met à jour automatiquement et élimine les noms qui ne vont pas.Il ne reste alors que les nom dont le code commence par les chiffres tapés. :lol:

Réponse : seulement en javascript/vbscript

Essaye sur www.toutjavascript.com ça doit exister tout fait.

Le_Bébert

Eléphant du PHP | 333 Messages

05 déc. 2005, 21:03

De façon claire:

Tu as une base de données avec deux champs : code et nom

Tu veux un formulaire avec un <input> pour saisir le code du champs voulu. Sachant qu'au fur et a mesure qu'on rentre le code: une liste du formulaire se met à jour automatiquement et élimine les noms qui ne vont pas.Il ne reste alors que les nom dont le code commence par les chiffres tapés. :lol:

Réponse : seulement en javascript/vbscript

Essaye sur www.toutjavascript.com ça doit exister tout fait.

Le_Bébert
C'est exactement cela....., et je peux appeler ca comment pour en fire ue recherche

Merci
Ce n'est pas toujours facile d'essayer, mais c'est toujours vallorisant lorsqu'on y arrive !!!

Apprenez, ne le faite pas faire par les autres.

Mammouth du PHP | 768 Messages

05 déc. 2005, 21:16

C'est exactement cela....., et je peux appeler ca comment pour en fire ue recherche
Champ autocomplété.
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 333 Messages

05 déc. 2005, 21:31

J'ai trouvé......

Voici le script, oui je sais c'est du javaScript, mais je veux inclure du php alors c'est ici, et le post est déja ouvert

Code : Tout sélectionner

<SCRIPT LANGUAGE="JavaScript"> var Liste=new CreerListe("Pays", 5, 200) Liste.Add("Afghanistan"); Liste.Add("Afrique du sud"); Liste.Add("Albanie"); Liste.Add("Algérie"); Liste.Add("Allemagne"); Liste.Add("Andorre"); Liste.Add("Angola"); Liste.Add("Antigua-et-Barbuda"); Liste.Add("Arabie"); Liste.Add("Argentine"); Liste.Add("Arménie"); Liste.Add("Australie"); Liste.Add("Autriche"); Liste.Add("Azerbaïdjan"); Liste.Add("Bahamas"); function CreerListe(nom, hauteur, largeur) { this.nom=nom; this.hauteur=hauteur; this.largeur=largeur; this.search=""; this.nb=0; this.Add=AjouterItem; this.Afficher=AfficherListe; this.MAJ=MAJListe; } function AjouterItem(item) { this[this.nb]=item this.nb++; } function AfficherListe() { if (document.layers) { var Z="<SELECT name="+this.nom+" size="+this.hauteur+">"; } else { var Z="<SELECT name="+this.nom+" size="+this.hauteur+" style='width:"+this.largeur+"'>"; } for (var i=0; i<this.nb; i++) { Z+="<OPTION value=\""+this[i]+"\">"+this[i]+"</OPTION>" } Z+="</SELECT>" document.write(Z); } function MAJListe(txt,f) { if (txt!=this.search) { this.search=txt f.elements[this.nom].options.length=0; for (var i=0; i<this.nb; i++) { if ( this[i].substring(0,txt.length).toUpperCase()==txt.toUpperCase() ) { var o=new Option(this[i], this[i]); f.elements[this.nom].options[f.elements[this.nom].options.length]=o; } } if (f.elements[this.nom].options.length==1) { f.elements[this.nom].selectedIndex=0; } } } function ListeCheck() { Liste.MAJ(document.forms["monform"].search.value,document.forms["monform"]) if (document.layers) { setTimeout("ListeCheck()", 1001) } else { setTimeout("ListeCheck()", 100) } } </SCRIPT> </HEAD> <BODY bgcolor="#FFFFFF" text="#FAFAFF" alink="#000066" link="#000066" vlink="#000066" > <FONT FACE="Arial" SIZE='-1' COLOR="navy"> <FORM name=monform> <INPUT type=text name=search><BR> <SCRIPT language=javascript> Liste.Afficher(); ListeCheck(); </SCRIPT> </FORM>
Je voudrais remplacer

Code : Tout sélectionner

Liste.Add("Afghanistan"); Liste.Add("Afrique du sud"); Liste.Add("Albanie"); Liste.Add("Algérie"); Liste.Add("Allemagne"); Liste.Add("Andorre"); Liste.Add("Angola"); Liste.Add("Antigua-et-Barbuda"); Liste.Add("Arabie"); Liste.Add("Argentine"); Liste.Add("Arménie"); Liste.Add("Australie"); Liste.Add("Autriche"); Liste.Add("Azerbaïdjan"); Liste.Add("Bahamas");
Par une commande MySQL
<?
$reponse = mysql_query("SELECT code FROM description"); // Requête SQL 
// On fait une boucle pour lister tout ce que contient la table :
while ($donnees = mysql_fetch_array($reponse) )
{
Liste.add("$donnees['code'];")
}
?>
Ok je sais que cela a probablement pas de sens... mais j'aimerais introduire ce genre de requête dans mon script... avez vous une idée
Ce n'est pas toujours facile d'essayer, mais c'est toujours vallorisant lorsqu'on y arrive !!!

Apprenez, ne le faite pas faire par les autres.

Eléphant du PHP | 333 Messages

05 déc. 2005, 21:37

ok je me suis essayer de juste remplacer par
<?
$reponse = mysql_query("SELECT * FROM description");
while ($donnees = mysql_fetch_array($reponse) )
{

Liste.Add("$donnees['code']");
}
?>
Bien sure comme je pensait ca ne fonctionne pas, mais je devais essayer
Ce n'est pas toujours facile d'essayer, mais c'est toujours vallorisant lorsqu'on y arrive !!!

Apprenez, ne le faite pas faire par les autres.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

05 déc. 2005, 22:21

Avertissement :
auclairp, je vais écrire en rouge, mais cela ne doit pas te traumatiser.
Ce n'est pas pour te chicaner ni te faire subir les affres de quelconques supplices.
Juste pour indiquer que le message qui suit, je l'énonce en tant que modérateur.

Modération :
À présent que tu as reçu quelques éléments de réponse,
que dirais-tu d'éditer ton message initial pour donner un titre valide à ton sujet ?
Que dirais-tu, par exemple, de "Champ auto-complété" ? ;)

À part ça, tu es dans le bon forum. :pouce:


Tu sais, je fais parfois les gros yeux et j'ai une grosse voix, mais je n'ai jamais mangé personne. :lol:

Eléphant du PHP | 333 Messages

05 déc. 2005, 22:24

Avertissement :
auclairp, je vais écrire en rouge, mais cela ne doit pas te traumatiser.
Ce n'est pas pour te chicaner ni te faire subir les affres de quelconques supplices.
Juste pour indiquer que le message qui suit, je l'énonce en tant que modérateur.

Modération :
À présent que tu as reçu quelques éléments de réponse,
que dirais-tu d'éditer ton message initial pour donner un titre valide à ton sujet ?
Que dirais-tu, par exemple, de "Champ auto-complété" ? ;)

À part ça, tu es dans le bon forum. :pouce:


Tu sais, je fais parfois les gros yeux et j'ai une grosse voix, mais je n'ai jamais mangé personne. :lol:
Certainement mais ???? comment, car je suis bien en accord, le titre en place ne dit par grand choses..... mais si tu partage tout ton savoir avec moi, ca me fera plaisir de me conformer au désir d'un Modo....
Ce n'est pas toujours facile d'essayer, mais c'est toujours vallorisant lorsqu'on y arrive !!!

Apprenez, ne le faite pas faire par les autres.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

05 déc. 2005, 22:28

On va la refaire... ;)
éditer ton message initial pour donner un titre valide à ton sujet ?

Eléphant du PHP | 333 Messages

05 déc. 2005, 22:31

On va la refaire... ;)
éditer ton message initial pour donner un titre valide à ton sujet ?
Un " ne soit pas parresseux et regarde la FAQ " ou juste
http://www.phpfrance.com/forums/faq.php#15
aurait suffit, mais bon le résultat est le même,
Ce n'est pas toujours facile d'essayer, mais c'est toujours vallorisant lorsqu'on y arrive !!!

Apprenez, ne le faite pas faire par les autres.

Eléphant du PHP | 333 Messages

06 déc. 2005, 17:36

Pour ceux ques ca pourrais intéresser, c'Est assez simple en fin de compte...

Voici le code
<? 
require("connec.php");
$liste = "SELECT code FROM description ORDER BY code";
$resultat = mysql_query($liste);	
?>
<SCRIPT LANGUAGE="JavaScript">

var Liste=new CreerListe("Pays", 5, 200)
<?
while ($rows=mysql_fetch_array($resultat))
		{
		echo "Liste.Add('".$rows["code"]."');";
		}
?>

function CreerListe(nom, hauteur, largeur) {
	this.nom=nom; this.hauteur=hauteur; this.largeur=largeur;
	this.search="";
	this.nb=0; 
	this.Add=AjouterItem;
	this.Afficher=AfficherListe;
	this.MAJ=MAJListe;
}

function AjouterItem(item) {
	this[this.nb]=item
	this.nb++;
}

function AfficherListe() {
	if (document.layers) {
		var Z="<SELECT name="+this.nom+" size="+this.hauteur+">";
	} else {
		var Z="<SELECT name="+this.nom+" size="+this.hauteur+" style='width:"+this.largeur+"'>";
	}
	for (var i=0; i<this.nb; i++) {
		Z+="<OPTION value=\""+this[i]+"\">"+this[i]+"</OPTION>"		
	}
	Z+="</SELECT>"
	document.write(Z);
}

function MAJListe(txt,f) {
	if (txt!=this.search) {
		this.search=txt
		f.elements[this.nom].options.length=0; 
		for (var i=0; i<this.nb; i++) {
			if ( this[i].substring(0,txt.length).toUpperCase()==txt.toUpperCase() ) {
				var o=new Option(this[i], this[i]);
				f.elements[this.nom].options[f.elements[this.nom].options.length]=o;
			}
		}
		if (f.elements[this.nom].options.length==1) {
			f.elements[this.nom].selectedIndex=0;
		}
	}
}

function ListeCheck() {
	Liste.MAJ(document.forms["monform"].search.value,document.forms["monform"])
	if (document.layers) {
		setTimeout("ListeCheck()", 1001)
	} else {
		setTimeout("ListeCheck()", 100)
	}
}

</SCRIPT>
</HEAD>

<BODY bgcolor="#FFFFFF" text="#FAFAFF" alink="#000066" link="#000066" vlink="#000066" >

<FORM name=monform>
<INPUT type=text name=search><BR>
<SCRIPT language=javascript>
	Liste.Afficher();
	ListeCheck();
</SCRIPT>
</FORM>
</BODY></HTML>
Ce n'est pas toujours facile d'essayer, mais c'est toujours vallorisant lorsqu'on y arrive !!!

Apprenez, ne le faite pas faire par les autres.