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
    Membre habitu�
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    9
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 9
    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 tr�s actif
    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
    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 chevronn�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Janvier 2005
    Messages
    357
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 63
    Localisation : Belgique

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 357
    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