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 :

traitement formulaire javascript/php


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 9
    Points : 5
    Points
    5
    Par défaut traitement formulaire javascript/php
    Bonjour tout le monde !

    Donc j'ai un problème depuis plusieurs jours concernant la création d'un formulaire pour laisser des commentaire et une notation après validation du psedo et de l'email de l'utilisateur.

    Donc dans une première partie j'avais réaliser le formulaire tout fonctionnai parfaitement, jusqu'à se que j'insère une notification par étoile en javascript.

    De cela je m'égard totalement ! Mon formulaire de saisi se valide via un simple form envoyant alors les variables en post afin de les traiter. Problème mon système de notification par étoile traite en javascript via un onload sur mon body et un "document.location.href=...." dans mon javascript.

    J'ai donc réfléchi la dessus et me suis dis que la solution qui me paraissait la plus simple était simplement de recharger la même page quand la personne coche les étoiles et ainsi d'envoyer cette variable, de cela je peut bloquer le nombré d'étoiles cochés et récupérer la variable par la même.

    Problème qui se pause est, quand je recharge cette page après avoir cliqué sur un nombré d'étoile mais variable initial envoyé lors de l'ouverture de la page (refdoc ...) sont perdu ! La notification prenant en compte le onload sur body et non le form. J'ai donc essayé de faire passer plusieurs variables dans le code javascript mais rien n'y fait je suis malheureusement perdu mais connaissance en javascript sont plus que limité.

    C'est d'ailler pour cela que je viens vous demander conseils. Je souhaite juste récupérer mais 3 variables ($refdoc / $reftype / $note) dans ma seconde partie afin de les traiter.

    Voici le code 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
    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
    StarOutUrl=		'StarOut.gif';		//image par défaut
    StarOverUrl=	'StarOver.gif';		//image d'une étoile sélectionnée
    StarBaseId=		'Star';				//id de base des étoiles
    NbStar=			10;					//nombre d'étoiles
     
    LgtStarBaseId=StarBaseId.lastIndexOf('');
     
    function NotationSystem()  
    { 
    	for (i=1;i<NbStar+1;i++)  
    	{ 
    		var img	= document.getElementById('Star'+i); 
     
    		img.onclick = function(){ 
    								//alert(Name2Nb(this.id)); 
    								document.location.href="coment.php?note="+Name2Nb(this.id);
    								}; 
     
     
     
    		//Réaction lors du clic sur une étoile 
    		//Evidemment, il faudrait compléter cette fonction pour la rendre vraiment utile. 
    		//Par exemple, envoyer la note dans une base de donnée via un XMLHttpRequest. 
     
    		img.alt			='Donner la note de '+i; 
    		//Texte au survol 
     
    		img.src			=StarOutUrl; 
    		img.onmouseover	=function() {StarOver(this.id);}; 
    		img.onmouseout	=function() {StarOut(this.id);}; 
    	} 
    } 
     
    function StarOver(Star) {
    	StarNb=Name2Nb(Star);
    	for (i=1;i<(StarNb*1)+1;i++) {
    		document.getElementById('Star'+i).src=StarOverUrl;
    	}
    }
     
    function StarOut(Star) {
    	StarNb=Name2Nb(Star);
    	for (i=1;i<(StarNb*1)+1;i++) {
    		document.getElementById('Star'+i).src=StarOutUrl;
    	}
    }
     
    function Name2Nb(Star) {
    	//Le survol d'une étoile ne nous permet pas de connaître directement son numéro
    	//Cette fonction extrait donc ce numéro à partir de l'Id
    	StarNb=Star.slice(LgtStarBaseId);
    	return(StarNb);
    } 
    -->
    Et voici le code php de ma 1er partie, une fois la page recharger avec la variable note, les 2 erreurs se produisent sur mais deux première requêtes (Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\Siteperso\coment.php on line ...), refdoc et reftype ne sont pas envoyé le traitement ne peut donc être réalisé :

    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
     
     
    <body onload="NotationSystem()" style="margin: 0px; padding: 0px;">
    <div id="comment" >
    <?php
    if(!isset($test)) $test = 0;
     
     
    if($_POST['test'] == 0)
    {
     
    $refdoc=$_GET['refdoc'];
    $reftype=$_GET['reftype'];
    $cit=$_GET['cit'];
    $note=$_GET['note'];
    if ($note=="")
    {
    $note=$_POST['note'];
    }
     
    if ($refdoc=="")
    {
    	$refdoc=$_POST['refdoc'];
    	$reftype=$_POST['reftype'];
    }
     
    $connexion= mysql_connect($MyServeur,$MyLogin,$MyPass) or die ("Erreur, connexion à la base de données impossible");
    mysql_select_db($MyBase,$connexion);
     
     
    $reqtitre="SELECT * FROM news WHERE ref=".$refdoc;
    $resultitre=mysql_query($reqtitre);
    $reference=mysql_fetch_array($resultitre);
     
    $titretype="SELECT * FROM type WHERE reftype=".$reftype;
    $resulttype=mysql_query($titretype, $connexion);
    $rtype=mysql_fetch_array($resulttype);
     
    ...
    </div>
    echo "<br><div id='cadre2comm' >";
    	echo "<table>";
    	echo "<tr><td>";
    	echo '<form name="form1" method="POST" action="coment.php" >';
    	echo '<input type="hidden" name ="test" value="1" />';
     
    	$connexion= mysql_connect($MyServeur,$MyLogin,$MyPass) or die ("Erreur, connexion à la base de données impossible");
    	mysql_select_db($MyBase,$connexion);
     
    	echo '<input type="hidden" name="refdoc" value="'.$refdoc.'" ></input>';
    	echo '<input type="hidden" name="typedoc" value="'.$reftype.'" ></input>';
     
    	echo '<b>Vote (Nom et adresse mail obligatoire pour valider le vote) :</b><br/>';
    	if ($note!="")
    	{
    $i = 1;
     
    while ($i<=$note)
    {
    	$i++;
    	echo '<img  width="20px" src="StarOver.gif" />';
    }
    $meno=10-$note;
     
    $a = 1;
    while ($a<=$meno)
    {
    	$a++;
    	echo '<img width="20px" src="StarOut.gif" />';
    }
     
    	}
    	else
    	{
    	echo '<img id="Star1" width="20px" src="StarOut.gif" /><img id="Star2" width="20px" src="StarOut.gif" />';
    	echo '<img id="Star3" width="20px" src="StarOut.gif" /><img id="Star4" width="20px" src="StarOut.gif" />';
    	echo '<img id="Star5" width="20px" src="StarOut.gif" /><img id="Star6" width="20px" src="StarOut.gif" />';
    	echo '<img id="Star7" width="20px" src="StarOut.gif" /><img id="Star8" width="20px" src="StarOut.gif" />';
    	echo '<img id="Star9" width="20px" src="StarOut.gif" /><img id="Star10" width="20px" src="StarOut.gif" />';
    	}
     
    	echo '<br><br><b>Nom (obligatoire) :</b><br/>';
    	echo '<input type="text" size="50" name="nom" value='.$psedo.' ><br/></td>';
     
    	echo '<tr><td><b>Adresse e-mail (ne sera pas publié) (obligatoire)</b><br/>';
    	echo '<input type="text" size="50" name="mail" value='.$mail.' ><br/></td>';
     
    	echo '<tr><td><b>Site Web </b><br/>';
    	echo '<input type="text" size="50" name="site" value='.$siteperso.' ><br/></td></tr>';
     
    	echo '<tr><td><b>Votre commentaire :</b><br/>';
    	echo '<textarea rows=7" cols="55" name="comment" value='.$commentaires.' ></textarea><br/></td></tr>';
     
    	echo '<tr><td>';
    	echo '<input type="submit" value="Valider" name="btvalider"/>';
    	echo '</td></tr></table></form></div><br><br>';
     
     
    }
    Afin de les récupérer dans ma seconde partie pour les traiter ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     <?php
     //echo '<pre>', print_r($GLOBALS), '</pre>'; 
    if($_POST['test'] == "1")
    {
    	$nom=$_POST['nom'];
    	$site=$_POST['site'];
    	$mail=$_POST['mail'];
    	$comment=$_POST['comment'];;
    	$ref=$_POST['refdoc'];
    	$type=$_POST['typedoc'];
    	$note=$_POST['note'];
    	$note=$_GET['note'];
    	......
    J attend vos réponses, conseils, solutions sur se problème et vous remercie d'avance, le code n'est pas très propre pour le moment vu que rien n'est terminé. Je voudrais simplement trouvé une solution pour récupérer ces 3 variables $refdoc / $reftype / $note et réussir a mes traiter dans mon $_POST['test'] == "1".

    Merci d'avance.
    Cordialement.

    Benorito

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    Bonjour,

    Je travaille aussi sur un formulaire, que je réappelle pour vérification de la saisie avant de le soumettre :

    J'utilise cette méthode pour le réappeller au submit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    echo '
    <form method="post" name="form_saisie_demandeur" action=';
     
    $_SERVER["PHP_SELF"]; 
     
    echo '>    <br />';
    Je sais pas si il existe une différence entre cette méthode et le fait de faire un submit sur la même page.

    Je ne sais pas si c le cas mais je pense que tu vérifie si tu as déjà à faire à un formulaire remplit avec :

    if(!isset($test))
    $test = 0;

    dans ce cas il faut que tu vérifie la présence de $_POST['test'] et non de la variable $test

    Personnellement je n'ai pas créer de champs hidden.
    En effet lors du premier chargement d'un formulaire aucune variable $_POST n'est créée. Pour savoir si le formulaire viens d'être soumis et qu'il faut effectuer les vérification je regarde si au moins une des variables $_POST de mon formulaire existe.
    Si c'est le cas le formulaire vient d'etre validé par l'utilisateur et toutes les autres variables ont été créé

    Ensuite tu mélange des variable $_GET alors qu'il semble que tu utilise la method POST dans ton formulaire :

    echo '<form name="form1" method="POST" action="coment.php" >';

    donc pour récupérer les valeur de tes champs du formulaire il faut utiliser $_POST['nom_du_champs']

    Je ne sais pas si cela va t'aider.

    En attendant d'avoir l'avis des pros

    ++

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2005
    Messages : 357
    Points : 537
    Points
    537
    Par défaut
    Salut,
    C'est assez embrouillé, ton affaire, (tes explications et ton code). Toutefois, j'ai plusieurs remarques.
    1. Essaie d'être cohérent dans la façon dont tu traites les données : une fois tu passes les arguments en GET, une autre fois en POST.
    2. Assure-toi que que tes variables sont bien initialisées :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
       
      if (isset($_GET['toto'])) $toto = $_GET['toto']; elseif (isset($_POST['toto'])) $toto = $_POST['toto']; else $toto = '';
      Comme cela tu éviteras déjà pas mal d'erreurs de type "supplied argument is not a valid MySQL result resource".
    3. Utilise une indentation cohérente de ton code, tu amélioreras ainsi la lisibilité de celui-ci.

Discussions similaires

  1. [PHP-JS] Validation d'un formulaire Javascript - PHP
    Par lothar59 dans le forum Langage
    Réponses: 8
    Dernier message: 01/03/2007, 16h50
  2. Réponses: 3
    Dernier message: 18/08/2006, 15h31
  3. traitement formulaire par php
    Par loudv dans le forum Langage
    Réponses: 2
    Dernier message: 11/07/2006, 19h12
  4. [PHP-JS] [javascrip + php] traitement formulaire
    Par Invité dans le forum Langage
    Réponses: 4
    Dernier message: 24/04/2006, 13h13
  5. Réponses: 5
    Dernier message: 13/04/2006, 19h51

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