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 :

Mise à jour de champs


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Mil
    Mil est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 32
    Par défaut Mise à jour de champs
    Bonjour,

    Il me semble que ce n est pas faisable facilement mais j aimerai avoir un formulaire où la liste présente dans le deuxième champs dépend de la sélection faite dans le premier champ. Du style j ai un champ Pays qui contient France, Angleterre, Espagne et un champ ville. J aimerai que si l on choisit France seule les villes françaises de ma base n apparaissent dans la liste 2.

    Je crois que c est pas faisable en PHP et qu il faut passer par du javascript. Mais comme je suis pas sure je vous soumet qd même mon problème.

    Merci d avance

    Mil

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    c'est faisable en php, il suffit juste de poster ton formulaire sur le onchange de ton select et de regénérer ta page en gardant le bon pays et en remplissant la liste des villes.

    Tu peux aussi le faire sans recharger la page grace a javascript effectivement.

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Précision : en js, tu peux utiliser l'objet XMLHttpRequest, qui sert justement à ça. Pour un changement de select, la modification est le plus souvent instantannée, c'est même assez spectaculaire.

  4. #4
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Citation Envoyé par siddh
    c'est faisable en php, il suffit juste de poster ton formulaire sur le onchange de ton select et de regénérer ta page en gardant le bon pays et en remplissant la liste des villes.

    Tu peux aussi le faire sans recharger la page grace a javascript effectivement.
    juster pour rappeler que onchange == javascript

  5. #5
    Mil
    Mil est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 32
    Par défaut
    pour le onChange c etait la solution que je voyais mais ça force un rechargement de la page ...
    Je vais regarder ce qu est XMLHttpRequest dont parle vg33 car je ne connais pas du tout ...
    Si ça sert précisémment à ça c est cool !

    Merci de vos réponses, je creuse ...

  6. #6
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    XmlHttpRequest ça sera du javascript aussi,
    regardes tes messages persos

  7. #7
    Mil
    Mil est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 32
    Par défaut
    MErci ... J ai pris ton tuto et je l ai mis à ma sauce mais ça ne semble pas fonctionner ...
    Moi j ai une table lieu et une machine. POur le moment j ai rien dans mes tables du coup j ai mis dans lieu (id_lieu, nom)
    1 FRance
    2 Angleterre

    Et dans machine (id_machine, nom, id_lieu)
    1 Paris 1
    2 Lyon 1
    3 Lille 1
    4 LOndres 2

    Voici le code (le nom de fichier vient d un autre essai) :
    - Index. php
    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
     
     <html>
    	<head>
    		<title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
    		<script language="javascript">
    			var xhr = null; 
     
    			if(window.XMLHttpRequest) // Firefox et autres
    			   xhr = new XMLHttpRequest(); 
    			else if(window.ActiveXObject){ // Internet Explorer 
    			   try {
    		                xhr = new ActiveXObject("Msxml2.XMLHTTP");
    		            } catch (e) {
    		                xhr = new ActiveXObject("Microsoft.XMLHTTP");
    		            }
    			}
    			else { // XMLHttpRequest non supporté par le navigateur 
    			   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    			   xhr = false; 
    			} 
     
    			/**
    			* Méthode qui sera appelée sur le click du bouton
    			*/
    			function go(){
    				if(xhr){
    					// On défini ce qu'on va faire quand on aura la réponse
    					xhr.onreadystatechange = function(){
    						// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    						if(xhr.readyState == 4 && xhr.status == 200){
    							lesoptions = xhr.responseText;
    							// On se sert de innerHTML pour rajouter les options a la liste
    							document.getElementById('machine').innerHTML = lesoptions;
    						}
    					}
     
    					// Ici on va voir comment faire du post
    					xhr.open("POST","species.php",true);
    					// ne pas oublier ça pour le post
    					xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    					// ne pas oublier de poster les arguments
    					// ici, l'id de l'auteur
    					sel = document.getElementById('lieu');
    					idlieu = sel.options[sel.selectedIndex].value;
    					xhr.send("idlieu="+idlieu);
    				}
    				else // xhr n'existe pas
    					alert("Houston on a un problème !");
     
    			}
    		</script>
    	</head>
    	<body>
    		<form>
    			<fieldset style="width: 500px">
    				<legend>Liste liées</legend>
    				<label>Lieu</label>
    				<select name='lieu' id='lieu' onchange='go()'>
    					<option value='-1'>choisir un lieu</option>
    					<option value='1'>France</option>
    					<option value='2'>Angleterre</option>
    				</select>
    				<label>Machines</label>
    				<select name='machine' id='machine'>
    					<option value='-1'>Choisir une machine</option>
    				</select>
    			</fieldset>
    		</form>
    	</body>
    </html>
    - species.php (là c est le fichier dont le nom vient d un autre essai ;o) )
    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
     
     
    <?php
            if(isset($_POST['idlieu'])){
                    mysql_connect("localhost","root","pass");
                    mysql_select_db("maintenance");
                    $res = mysql_query("SELECT id_machine,nom FROM machine
                            WHERE id_lieu=".$_POST["idlieu"]." ORDER BY id_machine");
     
                    while($row = mysql_fetch_assoc($res)){
                            echo "<option value='".$row["id_machine"]."'>".$row["nom"]."</option>";
                    }
                    mysql_close();
                            }
    //echo "<option value='1'>ici</option>";
     
    ?>
    J ai l impression qu il ne va pas du tout dans mon fichier species.php ... Car j avais placé la ligne qui est en commentaire hors du test sur le POST et ça ne marche pas mieux ... Dc ce n est pas simplement le fait de ne pas voir le POST['idlieu'] ...
    Mystère !!

  8. #8
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    alors essayes de voir si ton php marche en faisant un page avec juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    mysql_connect("localhost","root","pass");
          mysql_select_db("maintenance");
          $res = mysql_query("SELECT id_machine,nom FROM machine
             WHERE id_lieu=1 ORDER BY id_machine");
     
          while($row = mysql_fetch_assoc($res)){
             echo "<option value='".$row["id_machine"]."'>".$row["nom"]."</option>";
          }
          mysql_close();
    par exemple, et tu interroge directement dans ton navigateur

  9. #9
    Mil
    Mil est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 32
    Par défaut
    OUi ça marche ...
    Enfin comme j ai pas la balise SELECT, il m ecrit juste le nom des villes les unes après les autres mais ça fonctionne.

    J ai de toute façon pas vraiment l impression qu il arrive jusqu à cette page.

  10. #10
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    ok t'as pas d'erreur javascript ?
    en bas a gauche dans ie un panneau avec un point d'exclamation, tu double click dessus et regarde les details

  11. #11
    Mil
    Mil est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 32
    Par défaut
    Ben malheureusement non ...
    Pas d erreur ..

  12. #12
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    et si ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(xhr.readyState == 4 && xhr.status == 200){
                         lesoptions = xhr.responseText;
                         // On se sert de innerHTML pour rajouter les options a la liste
                         document.getElementById('machine').innerHTML = lesoptions;
                      }
    tu met ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(xhr.readyState == 4 && xhr.status == 200){
                         lesoptions = xhr.responseText;
                         alert(lesoptions);
     
                         document.getElementById('machine').innerHTML = lesoptions;
                      }
    tu as le alert ?

  13. #13
    Mil
    Mil est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 32
    Par défaut
    Oui j ai la fenetre d alerte qui s ouvre avec toutes les lignes
    <option> qui s affichent ...

  14. #14
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    et il ne fait pas le innerHTML ?

    as tu essayé dans firefox en regardant dans la console javascript si il y a des erreurs ?

  15. #15
    Mil
    Mil est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 32
    Par défaut
    Je n ai pas Firefox ...
    Je l installe et je te tiens au courant ...

    Merci de ton aide en tt cas !

  16. #16
    Mil
    Mil est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 32
    Par défaut
    Bon et bien sous Firefox ça fonctionne sans pb ...
    Mon souci maintenant c est que moi j ai besoin que ça marche sous IE !!! Merci Microsoft

  17. #17
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    vide ton cache dans ie et reessayes

  18. #18
    Mil
    Mil est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 32
    Par défaut
    pas mieux ....

  19. #19
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    bonsi le alert marche sous ie et qu il te met bien ton contenu,
    tu vas juste faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(document.getElementById('machine').innerHTML);
    histoire de vérifier que ie te trouve bien ton élément

  20. #20
    Mil
    Mil est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 32
    Par défaut
    Effectivement il me soulève une erreur ...
    J ai une erreur sur la page ... Il me dit qu à cette ligne il y a un pb : "objet requis"

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 10
    Dernier message: 03/03/2009, 11h46
  2. mise à jour de champ monétaire dans un dbgrid
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 1
    Dernier message: 30/08/2005, 11h49
  3. Mise à jour auto champs date
    Par rodrigue50 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/07/2005, 17h03
  4. mise à jour plusierus champs
    Par bachilbouzouk dans le forum ASP
    Réponses: 12
    Dernier message: 28/04/2005, 11h22
  5. mise à jour de champs time (interbase)
    Par pram dans le forum XMLRAD
    Réponses: 6
    Dernier message: 04/03/2003, 10h25

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