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 :

test sur champs formulaire !


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de undercrash
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Par défaut test sur champs formulaire !
    Bonjour à tous,
    je suis entrain de développé une petite application en HTML/PHP/Javascript et je me heurte à un problème que je n'arrive pas à résoudre.

    J'ai fais une page master.php qui contient le style par défaut de toutes mes pages. J'insère celle-ci dans une autre page php afin d'y appliquer mon thème.
    Dans cette nouvelle page, j'insère un formulaire HTML qui apellera ensuite une fonction Javascript pour récupérer les données de mon formulaire.

    Ma page où se trouve le formulaire :
    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
     
    $role_query = Sql::SqlInstance()->getRoles();
    		$genre_query = Sql::SqlInstance()->getGenres();
     
    		$genre_list = "<select name='genre' id='genre'>"; 
    			while ($row = mysql_fetch_array($genre_query)) {
    				$genre_list .= "<option id='txt' value='".$row['id']."'>".$row["name"]."</option>";
    			}
    		$genre_list .= "</select>";
     
    		$role_list = "<select name='role' id='role'>"; 
    			while ($row = mysql_fetch_array($role_query)) {
    				$role_list .= "<option id ='txt' value ='".$row['id']."'>".$row['name']."</option>";
    			}
    		$role_list .= "</select>";
     
    		$toto = "<div><form id='plop' method='get' action='javascript:perform_ajax(\"create_member.php\", 
    				Array(\"lastname\")
    				, \"Erreur lors de la creation du nouveau membre\")'>
    					<table>
    						<tr>
    							<td>Genre :</td>
    							<td>".$genre_list."</td>
    						</tr>
    						<tr>
    							<td>Nom :</td>
    							<td><input type=\"text\" name='lastname' id=\"lastname\"/></td>
    						</tr>
    						<tr>
    							<td>Prenom :</td>
    							<td><input type='text' name='firstname' id='firstname'/></td>
    						</tr>
    						<tr>
    							<td>Role :</td>
    							<td>".$role_list."</td>
    						</tr>
    						<tr>
    							<td>Login :</td>
    							<td><input type='text' name='login' id='login'/></td>
    						</tr>
    						<tr>
    							<td>Mot de Passe :</td>
    							<td><input type='password' name='password' id='password'/></td>
    						</tr>
    						<tr>
    							<td>Telephone fixe :</td>
    							<td><input type='text' name='phone' id='phone'/></td>
    						</tr>
    						<tr>
    							<td>Telephone mobile :</td>
    							<td><input type='text' name='mobile' id='mobile'/></td>
    						</tr>
    						<tr>
    							<td>Photo :</td>
    							<td><input type='text' name='picture' id='picture'/></td>
    						</tr>
    						<tr>
    							<td></td>
    							<td style='float:right'><input type='submit' value='Ajouter&raquo;'></td>
    						</tr>
    					</table>
    				</form></div>";	
     
    		$content = $toto;
    		$title="Administrateur";
    		$member_informations = include("member_informations.php");
    		$master = "../gui/master.css";
    		$menu = file_get_contents("../gui/admin/menu.php");
    		include ("../gui/master.php");
    Note : les variables $content,.. sont des variables déclarées dans master.php

    Mon problème c'est que lorsque j'appel ma fonction perform_ajax à partir du formulaire ci-dessus, je n'arrive pas à récupérer le contenu de mon tableau, à chaque fois mes champs sont undefined !

    Fonction Javascript :
    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
     
    function perform_ajax(scriptName, parameters, errorMessage) {
    	/* initialize params string */
    	var params = "";
    	alert(parameters[0].type);
    	for(cpt = 0; cpt < parameters.length; cpt++){
    		if(document.getElementById(parameters[cpt])){
    			alert(document.getElementById(parameters[cpt]).value);
    			params += "&"+parameters[cpt]+"="+document.getElementById(parameters[cpt]).value;
    		}			
    	}	
    	/* Call php script */
    	http.open("get", scriptName + "?sessionId=" + guid() + params + "&perform=true", true);
    	/* Function to call when server reply */
    	http.onreadystatechange = function () {
    		if (http.readyState == 4) {
    			Reply(scriptName, errorMessage);
    		}
    	}
    	http.send(null);
    }
    Si quelqu'un peut m'aider à m'en sortir car je bloque

    Bonne journée

  2. #2
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Tout marche très bien mais trois remarques:

    1. cette forme d'écriture de ton action ne fonctionnera pas avec tous les navigateurs. Je crois d'ailleurs qu'elle ne fonctionne pas avec IE6
    2. ton code
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      alert(parameters[0].type);
      te renverra toujours undefined étant donné que parameters[0] est une chaine de caractère et non pas la balise input comme tu le penses
    3. par souci de cohérence remplace
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      <input type=\"text\" name='lastname' id=\"lastname\"/></td>
      par
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      <input type='text' name='lastname' id='lastname'/></td>


    ERE

  3. #3
    Membre confirmé Avatar de undercrash
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Par défaut
    Bizzar, ce code ne fonctionne pas chez moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for(cpt = 0; cpt < parameters.length; cpt++){
    		if(document.getElementById(parameters[cpt])){
    			alert(document.getElementById(parameters[cpt]).value);
    			params += "&"+parameters[cpt]+"="+document.getElementById(parameters[cpt]).value;
    		}			
    	}
    Il ne rentre pas dans ma condition if car il ne trouve pas l'élément portant le nom parameters[cpt].

    Logiquement ça correspondrait à document.getElementById("lastname").value mais il ne me trouve pas le champs.

    J'ai essayé sous FF, IE8 et Chrome

    cette forme d'écriture de ton action ne fonctionnera pas avec tous les navigateurs. Je crois d'ailleurs qu'elle ne fonctionne pas avec IE6
    C'est à dire ?

    Merci

  4. #4
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Bonjour,

    Citation Envoyé par undercrash Voir le message
    Logiquement ça correspondrait à document.getElementById("lastname").value mais il ne me trouve pas le champs.
    Faites l'alert sur parameters[cpt] avant le if pour voir ce qu'il contient vraiment.

  5. #5
    Membre confirmé Avatar de undercrash
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Par défaut
    Citation Envoyé par vermine Voir le message
    Faites l'alert sur parameters[cpt] avant le if pour voir ce qu'il contient vraiment.
    parameters[cpt] contient bien la chaine de caractère lastname

  6. #6
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut C'est triste :(
    Et:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alert(document.getElementById(parameters[cpt]));
    Donne quoi ? Ce serait bien qu'il donne [Object].
    Ajoutez aussi un else pour voir si il passe dedans ou bien si il plante complètement.

  7. #7
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    De retour.

    Je ne comprends pas où est le problème: voilà une page PHP qui marche parfaitement.
    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
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <meta http-equiv="content-type" content="text/html; charset=windows-1250">
      <script type="text/javascript">
    function perform_ajax(scriptName, parameters, errorMessage) {
    	var params = "";
    	alert(parameters[0]);
    	for(cpt = 0; cpt < parameters.length; cpt++){
    		if(document.getElementById(parameters[cpt])){
    			alert(document.getElementById(parameters[cpt]).value);
    			params += "&"+parameters[cpt]+"="+document.getElementById(parameters[cpt]).value;
    		}			
    	}	
    }
     
      </script>
      </head>
      <body>
    <?php
     
           $genre_list="Ma Liste";
           $role_list="Mes roles";
                    $toto = "<div><form id='plop' method='get' action='javascript:perform_ajax(\"create_member.php\", 
                                    Array(\"lastname\")
                                    , \"Erreur lors de la creation du nouveau membre\")'>
                                            <table>
                                                    <tr>
                                                            <td>Genre :</td>
                                                            <td>".$genre_list."</td>
                                                    </tr>
                                                    <tr>
                                                            <td>Nom :</td>
                                                            <td><input type=\"text\" name='lastname' id=\"lastname\"/></td>
                                                    </tr>
                                                    <tr>
                                                            <td>Prenom :</td>
                                                            <td><input type='text' name='firstname' id='firstname'/></td>
                                                    </tr>
                                                    <tr>
                                                            <td>Role :</td>
                                                            <td>".$role_list."</td>
                                                    </tr>
                                                    <tr>
                                                            <td>Login :</td>
                                                            <td><input type='text' name='login' id='login'/></td>
                                                    </tr>
                                                    <tr>
                                                            <td>Mot de Passe :</td>
                                                            <td><input type='password' name='password' id='password'/></td>
                                                    </tr>
                                                    <tr>
                                                            <td>Telephone fixe :</td>              
                                                            <td><input type='text' name='phone' id='phone'/></td>
                                                    </tr>
                                                    <tr>
                                                            <td>Telephone mobile :</td>
                                                            <td><input type='text' name='mobile' id='mobile'/></td>
                                                    </tr>
                                                    <tr>
                                                            <td>Photo :</td>
                                                            <td><input type='text' name='picture' id='picture'/></td>
                                                    </tr>
                                                    <tr>
                                                            <td></td>
                                                            <td style='float:right'><input type='submit' value='Ajouter&raquo;'></td>
                                                    </tr>
                                            </table>
                                    </form></div>"; 
            
                    $content = $toto;
    echo ($content);
    ?> 
     
      </body>
    </html>


    Et sauf à remettre en question bons nombres de choses,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo " \"hello" ?>;
    écrira bien "hello en sortie.

    La seule option de configuration PHP qui ajoute des guillemets est magic_quotes_runtime et je ne pense pas qu'elle soit activée dans ce cas. Logiquement, le souci doit venir d'une config quelconque ou alors on n'a pas toutes les infos.

    ERE

  8. #8
    Membre confirmé Avatar de undercrash
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Par défaut
    Citation Envoyé par emmanuel.remy Voir le message
    De retour.

    Je ne comprends pas où est le problème: voilà une page PHP qui marche parfaitement.
    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
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <meta http-equiv="content-type" content="text/html; charset=windows-1250">
      <script type="text/javascript">
    function perform_ajax(scriptName, parameters, errorMessage) {
    	var params = "";
    	alert(parameters[0]);
    	for(cpt = 0; cpt < parameters.length; cpt++){
    		if(document.getElementById(parameters[cpt])){
    			alert(document.getElementById(parameters[cpt]).value);
    			params += "&"+parameters[cpt]+"="+document.getElementById(parameters[cpt]).value;
    		}			
    	}	
    }
     
      </script>
      </head>
      <body>
    <?php
     
           $genre_list="Ma Liste";
           $role_list="Mes roles";
                    $toto = "<div><form id='plop' method='get' action='javascript:perform_ajax(\"create_member.php\", 
                                    Array(\"lastname\")
                                    , \"Erreur lors de la creation du nouveau membre\")'>
                                            <table>
                                                    <tr>
                                                            <td>Genre :</td>
                                                            <td>".$genre_list."</td>
                                                    </tr>
                                                    <tr>
                                                            <td>Nom :</td>
                                                            <td><input type=\"text\" name='lastname' id=\"lastname\"/></td>
                                                    </tr>
                                                    <tr>
                                                            <td>Prenom :</td>
                                                            <td><input type='text' name='firstname' id='firstname'/></td>
                                                    </tr>
                                                    <tr>
                                                            <td>Role :</td>
                                                            <td>".$role_list."</td>
                                                    </tr>
                                                    <tr>
                                                            <td>Login :</td>
                                                            <td><input type='text' name='login' id='login'/></td>
                                                    </tr>
                                                    <tr>
                                                            <td>Mot de Passe :</td>
                                                            <td><input type='password' name='password' id='password'/></td>
                                                    </tr>
                                                    <tr>
                                                            <td>Telephone fixe :</td>              
                                                            <td><input type='text' name='phone' id='phone'/></td>
                                                    </tr>
                                                    <tr>
                                                            <td>Telephone mobile :</td>
                                                            <td><input type='text' name='mobile' id='mobile'/></td>
                                                    </tr>
                                                    <tr>
                                                            <td>Photo :</td>
                                                            <td><input type='text' name='picture' id='picture'/></td>
                                                    </tr>
                                                    <tr>
                                                            <td></td>
                                                            <td style='float:right'><input type='submit' value='Ajouter&raquo;'></td>
                                                    </tr>
                                            </table>
                                    </form></div>"; 
            
                    $content = $toto;
    echo ($content);
    ?> 
     
      </body>
    </html>


    ERE
    Chez moi aussi se code fonctionne mais dès que je souhaite insérer ma page modèle avec un include, ça ne fonctionne pas

  9. #9
    Membre confirmé Avatar de undercrash
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Par défaut
    j'ai trouvé, il faut faire un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo include("mapagemaitre.php")


    Si quelqu'un connait une méthode plus propre

    Bonne soirée à tous et encore merci

  10. #10
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Re,

    Je persiste: nous n'avons pas eu toutes les infos. Non seulement tes includes renvoient des valeurs (au passage c'est assez bancal si tu fais un include à distance), mais en plus il doit y avoir quelque chose d'autre car ton simple echo ne devrait pas règler pour autant les soucis.

    Enfin, le principal c'est que cela fonctionne

    Si quelqu'un connait une méthode plus propre
    Quitte à jouer avec des templates et autres, utilise un VRAI système de template type Smarty, et pourquoi pas un petit framework MVC qui s'occupera de cette cuisine.

    Enfin pour mon info que fais tu de cette instruction ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $menu = file_get_contents("../gui/admin/menu.php");
    Bon dev,

    ERE

  11. #11
    Membre confirmé Avatar de undercrash
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Par défaut
    Enfin pour mon info que fais tu de cette instruction ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $menu = file_get_contents("../gui/admin/menu.php");
    je récupère le code HTML d'un menu

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

Discussions similaires

  1. Tmap et test sur champ des tables en entrées
    Par Rgent dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 09/03/2009, 13h18
  2. test si champ formulaire est un int
    Par maxeur dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 30/01/2008, 16h28
  3. Test sur contrôle formulaire
    Par gentoo dans le forum IHM
    Réponses: 4
    Dernier message: 20/02/2007, 19h41
  4. [debutant] test sur champ de formulaire vide
    Par eyango dans le forum Access
    Réponses: 1
    Dernier message: 25/08/2006, 18h17
  5. un if en sql (Test sur champ NULL)
    Par vince_grenoblois dans le forum Langage SQL
    Réponses: 6
    Dernier message: 24/07/2006, 13h53

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