IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

DHTML menu affichage remplit via php


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    Programmeur Delphi
    Inscrit en
    Octobre 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Programmeur Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 183
    Par défaut DHTML menu affichage remplit via php
    Slt à tous,

    j'ai découvert en surfant sur le net, un site (celui-ci pour ne pas le citer...) permettant d'obtenir des données selon l'encodage de qques caractères (ex: ds la zone d'encodage "code postal ou localité", encoder "41" et on obtient les codes postaux et villes commençant par "41..")

    je supose que la technologie comprend du DHTML pour afficher le menu et une requête sql (php) sur l'évènement "onkeyup" de la zone d'encodage...

    J'aurais souhaité connaître les étapes à suivre pour obtenir un résultat identique... et savoir si je ne me trompe pas en parlant de language DHTML et PHP???

    Merci d'avance pour tout

    Ced

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    C'est simplement du Javascript, avec un array comprenant tous les codes postaux.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Programmeur Delphi
    Inscrit en
    Octobre 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Programmeur Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 183
    Par défaut
    oui je suis d'accord avec toi
    je remplis un array via une requête sql (php)

    ds la doc que j'ai découvert pour afficher un menu, je dois mettre ds le <body>
    <script language="JavaScript">
    document.write(creerMenu('cdp',tabCodePostaux));
    </script>
    ...
    </body>
    il me crée un array avec plusieurs codes postaux
    mtn, je voudrais après avoir remplis "41", qu'il me recrée cette array avec les données correspondantes...
    je ne vois pas à quel moment, je dois faire appel à "document.write(creerMenu('cdp',tabCodePostaux));" et surtout où le mettre, dans une fonction sur l'évênement "onkeyup"...

    ced

  4. #4
    Membre expérimenté
    Homme Profil pro
    Programmeur Delphi
    Inscrit en
    Octobre 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Programmeur Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 183
    Par défaut
    Je ne sais si pas si c'est possible en javascript
    mais j'ai créé un array (remplis via requête sql + php)

    via une fonction javascript, je sais accéder à mon tableau
    mais puis-je supprimer des éléments de ce tableau qui ne correspondent pas aux valeurs que je recherche???

    for (i=0; i<tab.length; i++)
    {
    if (document.getElementById(1).value <> tab[i][1])
    {
    retirer du tableau... quel est le code le permettant???
    }
    }

    ced

  5. #5
    Membre expérimenté
    Homme Profil pro
    Programmeur Delphi
    Inscrit en
    Octobre 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Programmeur Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 183
    Par défaut
    Slt, voici mon code

    j'ai un tableau "tabCodePostaux" qui s'initialise (via php)
    dans le <body>, il est créé grâce à l'appel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <script language="JavaScript">
    document.write(creerMenu('cdp',tabCodePostaux));
    </script>
    je souhaiterai afficher un autre tableau, avec des données filtrées selon la valeur encodée dans la zone de saisie "codepostal"
    je gère l'évènement "onKeyUp" qui me crée un nouveau tableau "tabCodePostauxResult", je crée de suite le code pour ce tableau, mais ensuite, je ne sais pas quoi faire exactement...

    Dans la fonction "fKeyUp()", si le test est vérifié,je fais appel à : fCdpCorrespondant('cdpNew'); - qui est la création de mon tableau filtré,
    et à :
    showMenu(cdpDivMenu); - qui permet l'affichage du tableau, je devrais passé comme paramètre "cdpNewDivMenu" au lieu de "cdpDivMenu", mais j'obtiens une erreur...

    Que faire svp???????

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
     
    <html>
    <head>
    <title>Codes postaux</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <style>
    .DivMenu {
    	position:absolute;
    	left:-200px;
    	top:-1000px;
    	width:200px;
    	z-index:100;
    	background-color:darkorange;
    	border:4px groove lightgrey;
    }
    .TDMenu {
    	color:darkblue;
    	font-family:verdana;
    	font-size:70%;
    	width:100%;
    	cursor:default;
    }
    </style>
    <script language="JavaScript">
    var tabCodePostaux = new Array();
    tabCodePostaux[0] = new Array();
    tabCodePostaux[0][0] = 4000;
    tabCodePostaux[0][1] = "Glain";
    tabCodePostaux[1] = new Array();
    tabCodePostaux[1][0] = 4000;
    tabCodePostaux[1][1] = "Liège";
    tabCodePostaux[2] = new Array();
    tabCodePostaux[2][0] = 4000;
    tabCodePostaux[2][1] = "Rocourt";
    tabCodePostaux[3] = new Array();
    tabCodePostaux[3][0] = 4020;
    tabCodePostaux[3][1] = "Bressoux";
    tabCodePostaux[4] = new Array();
    tabCodePostaux[4][0] = 4020;
    tabCodePostaux[4][1] = "Jupille-sur-Meuse";
    tabCodePostaux[5] = new Array();
    tabCodePostaux[5][0] = 4020;
    tabCodePostaux[5][1] = "Liège";
    tabCodePostaux[6] = new Array();
    tabCodePostaux[6][0] = 4020;
    tabCodePostaux[6][1] = "Wandre";
    tabCodePostaux[7] = new Array();
    tabCodePostaux[7][0] = 4030;
    tabCodePostaux[7][1] = "Grivegnée";
    tabCodePostaux[8] = new Array();
    tabCodePostaux[8][0] = 4031;
    tabCodePostaux[8][1] = "Angleur";
    tabCodePostaux[9] = new Array();
    tabCodePostaux[9][0] = 4032;
    tabCodePostaux[9][1] = "Chênée";
    tabCodePostaux[10] = new Array();
    tabCodePostaux[10][0] = 4040;
    tabCodePostaux[10][1] = "Herstal";
    tabCodePostaux[11] = new Array();
    tabCodePostaux[11][0] = 4041;
    tabCodePostaux[11][1] = "Milmort";
    tabCodePostaux[12] = new Array();
    tabCodePostaux[12][0] = 4041;
    tabCodePostaux[12][1] = "Vottem";
    tabCodePostaux[13] = new Array();
    tabCodePostaux[13][0] = 4042;
    tabCodePostaux[13][1] = "Liers";
    tabCodePostaux[14] = new Array();
    tabCodePostaux[14][0] = 4050;
    tabCodePostaux[14][1] = "Chaudfontaine";
    tabCodePostaux[15] = new Array();
    tabCodePostaux[15][0] = 4051;
    tabCodePostaux[15][1] = "Vaux-sous-Chèvremont";
    tabCodePostaux[16] = new Array();
    tabCodePostaux[16][0] = 4052;
    tabCodePostaux[16][1] = "Beaufays";
    tabCodePostaux[17] = new Array();
    tabCodePostaux[17][0] = 4053;
    tabCodePostaux[17][1] = "Embourg";
     
     
    function fctCodeP()
    {
    var iCdp = document.getElementById(1).value;
    	for (i=0 ; i<tabCodePostaux.length ; i++)
    	{
    		if (tabCodePostaux[i][0] == iCdp)
    		{
    			document.getElementById(2).value = tabCodePostaux[i][1];
    		}
    	}
    }
     
    function fLoad()
    {
    document.getElementById(1).focus();
    }
     
    function creerMenu(nomMenu, optionMenu)
    {
    var divHtml = '<div id="' + nomMenu + 'DivMenu" class="DivMenu"';
    divHtml = divHtml + ' onMouseOut="return hideMenu(this)">';
    var tableHtml = '<table border="0" cellspacing="1" cellpadding="1" id="' + nomMenu + 'Table">';
    var htmlTableLigne = "";
    var compteurLigne;
    var totalNombreLignes = optionMenu.length;
    	for (compteurLigne = 0 ; compteurLigne < totalNombreLignes ; compteurLigne++)
    	{
    		htmlTableLigne = htmlTableLigne + '<tr><td id="' + nomMenu + optionMenu[compteurLigne][0] + '" RollOver RollOut';
    		htmlTableLigne = htmlTableLigne + ' onclick="goPage(' + optionMenu[compteurLigne][0] + ',\'' + optionMenu[compteurLigne][1] + '\')"';
    		htmlTableLigne = htmlTableLigne + ' class="TDMenu">' + optionMenu[compteurLigne][0] + ' - ' + optionMenu[compteurLigne][1] + '</td></tr>';
    	}
    return divHtml + tableHtml + htmlTableLigne + '</table></div>';
    }
     
    function showMenu(menuAafficher)
    {
    var srcElement = event.srcElement;
    var xPos = parseInt(srcElement.offsetLeft);
    var yPos = parseInt(srcElement.offsetTop);
     
    menuAafficher.style.left = xPos;
    menuAafficher.style.top = yPos  + 25;
    }
     
    function hideMenu(menuToHide)
    {
    	if (event.toElement != menuToHide && menuToHide.contains(event.toElement) == false)
    	{
    		menuToHide.style.left = -200;
    		menuToHide.style.top = -1000;
    	}
    }
     
    function fKeyUp()
    {
    	if ((document.getElementById(1).value).length >= 2)
    	{
    		fCdpCorrespondant('cdpNew');
    		showMenu(cdpDivMenu); // affiche le menu d'initialisation
    		// j'aimerai afficher le tableau avec les données correspondantes
    	}
    	else
    	{
    		hideMenu(cdpDivMenu);
    	}
    }
     
    function fCdpCorrespondant(nomMenu)
    {
    var cdp = document.getElementById(1).value; // récupération de la valeur encodée
    var inbre = (cdp.toString()).length; // longueur de la chaîne pour le substr
    var icpt = 0;
    var cdptab = 0;
    var tabCodePostauxResult = new Array();
     
    	for (i=0 ; i<tabCodePostaux.length-1 ; i++) // je parcours tout le tableau initialisé
    	{
    		cdptab = tabCodePostaux[i][0];
    		if ((cdptab.toString()).substr(0,inbre) == cdp) // si ma sous-chaine est égal à la valeur encodée
    		{ // alors j'ajoute les valeurs au nouveau tableau
    			tabCodePostauxResult[icpt] = new Array();
    			tabCodePostauxResult[icpt][0] = tabCodePostaux[i][0];
    			tabCodePostauxResult[icpt][1] = tabCodePostaux[i][1];
    			icpt = icpt + 1;
    		}
    	}
     
    	//-- code de création du tableau de résultat, mais à quel endroit lui permettre de se créer????
    	var divHtml = '<div id="' + nomMenu + 'DivMenu" class="DivMenu"';
    	divHtml = divHtml + ' onMouseOut="return hideMenu(this)">';
    	var tableHtml = '<table border="0" cellspacing="1" cellpadding="1" id="' + nomMenu + 'Table">';
    	var htmlTableLigne = "";
    	var compteurLigne;
    	var totalNombreLignes = tabCodePostauxResult.length;
    	for (compteurLigne = 0 ; compteurLigne < totalNombreLignes ; compteurLigne++)
    	{
    		htmlTableLigne = htmlTableLigne + '<tr><td id="' + nomMenu + tabCodePostauxResult[compteurLigne][0] + '" RollOver RollOut';
    		htmlTableLigne = htmlTableLigne + ' onclick="goPage(' + tabCodePostauxResult[compteurLigne][0] + ',\'' + tabCodePostauxResult[compteurLigne][1] + '\')"';
    		htmlTableLigne = htmlTableLigne + ' class="TDMenu">' + tabCodePostauxResult[compteurLigne][0] + ' - ' + tabCodePostauxResult[compteurLigne][1] + '</td></tr>';
    	}
    return divHtml + tableHtml + htmlTableLigne + '</table></div>';
    }
     
    function goPage(cdp,ville)
    {
    document.getElementById(1).value = cdp;
    document.getElementById(2).value = ville;
    hideMenu(cdpDivMenu);
    }
     
    function document_onmouseover()
    {
    	var srcElement = event.srcElement;
    	if ( srcElement.tagName == "TD" && typeof(srcElement.RollOver) != "undefined")
    	{
    		srcElement.style.color = "white";
    		srcElement.style.backgroundColor = "darkblue";
    	}
    }
     
    function document_onmouseout()
    {
    	var srcElement = event.srcElement;
    	if ( srcElement.tagName == "TD" && typeof(srcElement.RollOver) != "undefined")
    	{
    		srcElement.style.color = "darkblue";
    		srcElement.style.backgroundColor = "darkorange";
    	}
    }
     
    document.onmouseover = document_onmouseover;
    document.onmouseout = document_onmouseout;
    </script>
    </head>
     
    <body onLoad="fLoad()">
    	<script language="JavaScript">
    		document.write(creerMenu('cdp',tabCodePostaux)); // création du tableau d'initialisation
    	</script>
    Code postal : <input type="text" id="1" name="codepostal" size="10" maxlength="4" onKeyUp="fKeyUp()" onBlur="fctCodeP()">&nbsp;&nbsp;
    Localité : <input type="text" id="2" name="localite" size="25">
     
    </body>
    </html>

  6. #6
    Membre expérimenté
    Homme Profil pro
    Programmeur Delphi
    Inscrit en
    Octobre 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Programmeur Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 183
    Par défaut
    La solution est en javascript combiné avec "innerHTML" et "visibility"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Affichage d'une table sous forme d'un tableau via PHP
    Par CYCLOPE91440 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/01/2007, 19h25
  2. [Librairies] Exécution d'un .JAR sur un serveur distant via PHP
    Par kaboume dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 09/10/2005, 14h54
  3. [Help] pb d'insertion via PHP ...
    Par romtrash dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 19/04/2005, 11h47
  4. Réponses: 2
    Dernier message: 27/05/2004, 00h40
  5. Transformation xml + xsl -> HTML via PHP
    Par petit-ourson dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 19/10/2003, 22h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo