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 :

Soumission de formulaire avec JS + PHP


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 4
    Par défaut Soumission de formulaire avec JS + PHP
    Bonjour à tous,

    j'ai un tableau dont les lignes sont générées via un script PHP et qui contiennent les données issues d'une requête MySQL, jusqu'ici, rien d'extraordinaire.
    Pour alléger le code dans ma page, j'ai entrepris de donner la possibilité de modifier les données directement dans les cellules avec le paramètre contentEditable : je fais passer le contenu des cellules dans des hidden de mon formulaire avec Javascript
    Mais mon affaire ne fonctionne pas bien, malgré la simplicité du code.
    Quelqu'un saurait-il me dire à côté de quoi je passe svp ?

    Voici les portions de code correspondant à la fonction, dans l'ordre d'exécution.

    HTML (via PHP) :
    Code php : 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
    echo'
    <tr id="ligne',$data[0],'">
    	<td style="width:16px; cursor:pointer;" onclick="modif_vlan(\'ligne',$data[0],'\',\'valid',$data[0],'\',\'annul',$data[0],'\')">
    		<img src="pics/b_editer.png" title="Modifier vlan ',$data[2],'">
    	</td>
    <form method=post style="display:inline;" onsubmit="return conf_modif()">
    	<td style="width:352px;">
    		',$data[1],'
    	</td>
    	<td>
    		',$data[2],'
    	</td>
    	<td style="width:20px;">&nbsp;</td>
    	<td style="width:16px;">
    		<input style="display:none;" type=image src="pics/b_valider1.png" id="valid',$data[0],'" title="Valider la modification" onmouseover="copie_valeurs(\'ligne',$data[0],'\',\'vid',$data[0],'\',\'vname',$data[0],'\')">
    		<input type=hidden name="h_mvlan" value=',$data[0],'>
    		<input type=hidden id="vid',$data[0],'" name="mod_vid" value="',isset($mod_vid)?$mod_vid:null,'">
    		<input type=hidden id="vname',$data[0],'" name="mod_vname" value="',isset($mod_vname)?$mod_vname:null,'">
    	</td>
    </form>
    	<td style="width:20px;">&nbsp;</td>
    	<td style="width:16px;">
    		<a href=vlans.php id="annul',$data[0],'" style="display:none;"><img src="pics/b_annuler.png" title="Annuler la modification"></a>
    	</td>
    	<td style="width:20px;">&nbsp;</td>
    	<td style="width:16px;">
    		<form method=post style="display:inline;" onsubmit="return conf_supp(\'vlan ',$data[2],'\')">
    			<input type=hidden name=delvlan value=',$data[0],'>
    			<input type=image src="pics/b_supprimer.png" title="Supprimer vlan ',$data[2],'">
    		</form>
    	</td>
    </tr>';

    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
    <script language=javascript>
    	function modif_vlan(ligne,valid,annul){
    		var cellule = document.getElementById(ligne).getElementsByTagName('td');
    		for(var i = 1; i < 3; i++){
    			cellule[i].contentEditable = "true";
    			cellule[i].title = "Cliquer pour modifier cette donnée";
    		}
    		document.getElementById(valid).style.display = "block";
    		document.getElementById(annul).style.display = "inline-block";
    	}
    	function copie_valeurs(ligne,hiden1,hiden2){
    		var hid1 = document.getElementById(hiden1).value;
    		var hid2 = document.getElementById(hiden2).value;
    		var cellule1 = document.getElementById(ligne).getElementsByTagName('td')[1].innerHTML.trim();
    		var cellule2 = document.getElementById(ligne).getElementsByTagName('td')[2].innerHTML.trim();
    		hid1 = cellule1;
    		hid2 = cellule2;
    		//alert(hid1+' '+hid2);
    	}
    </script>
    PHP :
    Code php : 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
    $h_mvlan = $_POST['h_mvlan']?$_POST['h_mvlan']:null;
    $mod_vid = trim(str_replace('<br>','',$_POST['mod_vid']));
    $mod_vname = strtoupper(trim($_POST['mod_vname']));
    if($h_mvlan){
    	//$mod_vid = $_POST['mod_vid']?str_replace('<br>','',$_POST['mod_vid']):null;
    	//$mod_vname = $_POST['mod_vname']?strtoupper($_POST['mod_vname']):null;
    	if($mod_vid){
    		// On recherche dans la table si le couple VID / nom de VLAN n'existe pas déjà
    		$sql = "select vid, nom_vlan from t_vlan where (vid = $mod_vid and nom_vlan = \"$mod_vname\")";
    		$req = mysql_query($sql) or die('Erreur SQL !<br/>'.$sql.'<br/>'.mysql_error().'<br/><a href=vlans.php>Retour</a>');
    		$data = mysql_fetch_array($req);
    		// si la recherche est positive, message d'erreur
    		if($data[0] == $mod_vid and $data[1] == $mod_vname){
    			echo'<script>alert("ERREUR !\nLes VID et nom de VLAN renseignés existent déjà.");</script>';
    		}else{
    			// sinon, modification de la table
    			$sql = "update t_vlan set vid = $mod_vid, nom_vlan = \"$mod_vname\" where id_vlan = $h_mvlan";
    			$req = mysql_query($sql) or die('Erreur SQL !<br/>'.$sql.'<br/>'.mysql_error().'<br/><a href=vlans.php>Retour</a>');
    			echo'<script>alert(\'Vlan modifié avec succès !\');</script>';
    		}
    	}
    }

    Merci à vous

    ed54

  2. #2
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Merci de lire la charte du forum
    Pas de PHP dans le forum JS seul le code HTML généré et le JS doit être posté car lui seul est exécuté côté client.


    ensuite explique quel est le problème.

    donner une portion de code en disant ça marche pas ça ne permet pas de te fournir de l'aide.
    A+JYT

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 4
    Par défaut
    Bonjour,

    le souci étant que je ne sais pas vraiment si mon pb se situe plus au niveau javascript ou au niveau php ; comme je n'allais pas posté deux fois le même sujet sur le forum, j'ai du trancher. Je suppose que j'aurais eu le même genre de réponse si j'avais posté dans la partie php :/
    Mais merci quand même pour l'info.

    Voici la situation :
    chaque ligne de donnée contient dans l'ordre une image (invitant à l'édition des données), deux cellules de donnée, une cellule contenant 3 hidden et un submit sous forme d'image, un lien sous forme d'image qui rappelle la page (annulation des modifications) et un submit sous forme d'image pour supprimer la ligne de donnée, mais qui ne nous intéresse pas dans cette affaire. En outre, le submit du form de modification et le lien ne sont pas visibles à l'ouverture de la page (display:none)
    1. lorsque je clique sur l'image pour l'édition (évènement onclick), les deux cellules de donnée suivantes deviennent modifiable (contentEditable = "true") et faire apparaître le submit pour la modification ainsi que le lien d'annulation
    2. une fois les modifications voulues effectuées, en passant le curseur sur le submit de modification (onmouseover), les données contenues dans les 2 cellules sont transmises dans 2 hidden du form de modification (script javascript).
    3. on valide le form avec les valeurs des hidden fraichement récupérées.

    Sauf que les données ne sont pas prises en compte par le script PHP.
    Je sais que les valeurs des cellules sont en principe bien transmises grâce à des tests effectués avec des alert ; idem avec un champ text d'un autre form : en passant sur le submit de modification, on voit bien apparaître les valeurs des cellules dans le champ text.
    Je sais néanmoins que mon script php est fonctionnel donc je cherche juste quelqu'un qui saurait me dire si quelque chose à un endroit ne peut pas fonctionner pour que je cherche une alternative (dont j'ai déjà une petite idée).

    Merci

    ed54.

  4. #4
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    comme je dis plus haut

    si tu veux de l'aide sur le forum javascript Poste le HTML et le Javascript présent dans le navigateur
    pas les php qui génère le html.

    ainsi on saura de quoi il s'agit.
    déjà on peut dire que la fonction ne place aucune valeur dans les input hiden
    elle ne fais que lire des valeurs. position 4 variable et change la valeur de deux de ces variable mais à aucun moment elle modifie quoi que ce soit dans la page.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	function copie_valeurs(ligne,hiden1,hiden2){
    		var hid1 = document.getElementById(hiden1).value;
    		var hid2 = document.getElementById(hiden2).value;
    		var cellule1 = document.getElementById(ligne).getElementsByTagName('td')[1].innerHTML.trim();
    		var cellule2 = document.getElementById(ligne).getElementsByTagName('td')[2].innerHTML.trim();
    		hid1 = cellule1;
    		hid2 = cellule2;
    		//alert(hid1+' '+hid2);
    	}
    A+JYT

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 4
    Par défaut
    Il m'avait pourtant semblé que l'envoi des valeurs contenues dans les cellules était assuré par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    hid1 = cellule1; // valeur du hidden 1 reçoit le contenu de la cellule 1
    hid2 = cellule2; // valeur du hidden 2 reçoit le contenu de la cellule 2
    ce qui avait fonctionné pour un input text comme mentionné dans mon précédent post.

    Merci

    ed54

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 4
    Par défaut
    Bonjour,

    la nuit portant conseil, elle m'a surtout conseillé d'arrêter de scripter n'importe quoi !
    Bref je me suis rendu compte de mon énormité... et pardon pour avoir posté cette ânerie.

    Encore merci

    ed54

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

Discussions similaires

  1. [POO] Formulaire avec du php et du javascript HTTPXmlR
    Par drwriggles dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/08/2008, 14h19
  2. Réponses: 1
    Dernier message: 04/12/2007, 14h21
  3. [XSLT] soumission de formulaire avec Opera
    Par Xunil dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 24/08/2007, 18h48
  4. Formulaire avec du PHP qui ne marche pas !
    Par Sandara dans le forum Langage
    Réponses: 19
    Dernier message: 02/06/2006, 18h26
  5. VALUE d'un champ de formulaire avec variable php
    Par shub dans le forum Langage
    Réponses: 5
    Dernier message: 04/04/2006, 12h13

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