Page 1 sur 1
Champ auto-complété
Posté : 05 déc. 2005, 06:23
par auclairp
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
Posté : 05 déc. 2005, 08:11
par Cyrano

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é.
Posté : 05 déc. 2005, 09:00
par jobherzt
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...
Posté : 05 déc. 2005, 10:24
par matt_m
bonjour auclairp
regarde du coté de la technologie Ajax pour faire ce que tu souhaite faire
Posté : 05 déc. 2005, 18:06
par Le_Bébert
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.
Réponse : seulement en javascript/vbscript
Essaye sur
www.toutjavascript.com ça doit exister tout fait.
Le_Bébert
Posté : 05 déc. 2005, 21:03
par auclairp
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.
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
Posté : 05 déc. 2005, 21:16
par mario
C'est exactement cela....., et je peux appeler ca comment pour en fire ue recherche
Champ autocomplété.
Posté : 05 déc. 2005, 21:31
par auclairp
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
Posté : 05 déc. 2005, 21:37
par auclairp
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
Posté : 05 déc. 2005, 22:21
par albat
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.
Tu sais, je fais parfois les gros yeux et j'ai une grosse voix, mais je n'ai jamais mangé personne. 
Posté : 05 déc. 2005, 22:24
par auclairp
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.
Tu sais, je fais parfois les gros yeux et j'ai une grosse voix, mais je n'ai jamais mangé personne. 
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....
Posté : 05 déc. 2005, 22:28
par albat
On va la refaire...

éditer ton message initial pour donner un titre valide à ton sujet ?
Posté : 05 déc. 2005, 22:31
par auclairp
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,
Posté : 06 déc. 2005, 17:36
par auclairp
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>