[PHP] enregistrer table

Fermé
pschit - 27 mars 2009 à 11:05
 pschit - 1 avril 2009 à 13:56
Bonjour à tous,

J'ai créer une page web sur laquel j'ai mis un formulaire et un lien vers une autre page web. Je souhaiterais executer une fonction en PHP (qui sauvegarde les données de mon formulaire dans ma base de données) avant que l'utilisateur ne change de page web et je ne sais pas comment faire.

Est-ce que quelqu'un aurait une solution s'il vous plait ?

Merci d'avance.
A voir également:

7 réponses

Utilisateur anonyme
27 mars 2009 à 11:47
Tu dois appeler un script PHP sur soumission du formulaire si tu souhaite exécuter une commande SQL.

Pour cela il te faut ajouter dans ta balise <form> html l'attribut "action" et lui donner comme valeur le nom du fichier PHP appelé sur soumission du formulaire, exemple :

<form name="formulaire" method="post" onSubmit="return verification()" action="traitement.php">
...
</form>

Rien ne t'empèche de garder ta fonction javascript qui envoie un message de confirmation.

Un petit truc au passage :
<input style="visibility:hidden" type="text" id="modif_faite" name="modif_faite" />
Peut être remplacé par :
<input type="hidden" id="modif_faite" name="modif_faite" />

C'est plus propre (-;
1
Merci emmanuel pour ton aide et ta solution.

Je vais essayé ça mais du coup je vais afficher une page traitement.php et du coup le liens sur lequel l'utilisateur aura cliquer ne va pas fonctionner ? Comment puis-je faire pour que celà fonctionne quand même ?
0
Utilisateur anonyme
27 mars 2009 à 11:09
Peux tu décrire ce que fait le code de tes 2 pages précisément. Je serais mieux te dire comment tu dois t'y prendre.
0
arsenal_fc Messages postés 125 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 19 juin 2010 9
27 mars 2009 à 11:11
tu veux retenir par exemple le pseudo du visiteur ???
0
En faite, j'affiche des données de ma base de données dans une table. Et lorsque l'utilisateur clic sur une ligne je met une zone à 1 pour dire qu'il a modifier quelque chose. Ensuite si l'utilisateur clic sur le liens vers une autre page (peut importe la page) je souhaiterais enregistrer les modifications que l'utilisateur à fait avant de renvoyer vers la page. Voici mon code :

<html>
<head>
<script type="text/javascript" language="Javascript" >
function verification() {
     if (document.formulaire.modif_faite.value == "1") {
          if (confirm("Voulez-vous enregistrer vos modifications ?")) {
               // Ici je voudrais executer une sauvegarde des données de tout le formulaire et donc executer du code PHP du style : $g_Commande = "SELECT * FROM client"; ou  $reponse = mysql_query($g_Commande);
               document.formulaire.modif_faite.value = "0"; }
          else
          {   document.formulaire.modif_faite.value = "0"; }
     }
     return true;
}
function change() {
     document.formulaire.modif_faite.value = 1;
     return true;
}
</script>
</head>
<body>
     <div><a href="page2.php" onclick="return verification()">Pages 2</a></div>
     <form name="formulaire" method="post" onSubmit="return verification()">
     <?php
          // Connexion à MySQL
          mysql_connect("XXX.XXX.XXX.XXX", "XXX", "XXX");
          // Sélection de la base
          mysql_select_db("XXX");
          // Requete
          $g_Commande = "SELECT * FROM client";
          $reponse = mysql_query($g_Commande);
          ?>
          <table>
          $n = 0;
          while ($donnees = mysql_fetch_array($reponse)) {
               $n++;
               ?> <tr><td><input style="text-align:center" type="text" name="<?php echo "nom".strval($n) ?>" id="<?php echo "nom".strval($n) ?>" size="5" value="0" onchange="return change()" /></td></tr> <?php 
          }
          </table>
          <input style="visibility:hidden" type="text" id="modif_faite" name="modif_faite" size="5" value="0"/>
          <input type="submit" name="sauver" value="Enregistrer les modifications" />
          </form>
</body>
</html>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Re, j'ai oublié de mettre les données dans mon exemple, ce qui donnerait ça :

<html>
<head>
<script type="text/javascript" language="Javascript" >
function verification() {
     if (document.formulaire.modif_faite.value == "1") {
          if (confirm("Voulez-vous enregistrer vos modifications ?")) {
               // Ici je voudrais executer une sauvegarde des données de tout le formulaire et donc executer du code PHP du style : $g_Commande = "SELECT * FROM client"; ou  $reponse = mysql_query($g_Commande);
               document.formulaire.modif_faite.value = "0"; }
          else
          {   document.formulaire.modif_faite.value = "0"; }
     }
     return true;
}
function change() {
     document.formulaire.modif_faite.value = 1;
     return true;
}
</script>
</head>
<body>
     <div><a href="page2.php" onclick="return verification()">Pages 2</a></div>
     <form name="formulaire" method="post" onSubmit="return verification()">
     <?php
          // Connexion à MySQL
          mysql_connect("XXX.XXX.XXX.XXX", "XXX", "XXX");
          // Sélection de la base
          mysql_select_db("XXX");
          // Requete
          $g_Commande = "SELECT * FROM client";
          $reponse = mysql_query($g_Commande);
          ?>
          <table>
          $n = 0;
          while ($donnees = mysql_fetch_array($reponse)) {
               $n++;
               ?> <tr><td><input style="text-align:center" type="text" name="<?php echo "nom".strval($n) ?>" id="<?php echo "nom".strval($n) ?>" size="5" value="<?php $donnees['nom']; ?>" onchange="return change()" /></td></tr> <?php 
          }
     ?>
     </table>
     <input style="visibility:hidden" type="text" id="modif_faite" name="modif_faite" size="5" value="0"/>
     <input type="submit" name="sauver" value="Enregistrer les modifications" />
     </form>
</body>
</html>
0
Utilisateur anonyme
27 mars 2009 à 12:00
Dans ta page traitement.php, rien ne t'empêche, à la fin de ton traitement, d'afficher la page de ton choix.
Pour cela tu peux utiliser la fonction suivante :

include(page_php_a_afficher.php);
0
Ah merci beaucoup emmanuel,

Tu me sauve la vie. C'est génial ça fonctionne sans problème.

Encore merci.
0
Désolé de t'embeter mais je viens de tester et j'ai quand même un soucis.

Ta solution fonction très bien dès l'instant que je clic sur le bouton "Sauver" mais si je clic sur mon lien qui change de page (page5 par exemple), je ne vais pas executer le code du bouton "Sauver", ni charger la page "traitement.php".

Comment puis-je faire pour faire soit l'un, soit l'autre car le liens ne fait pas de POST ?

Merci de votre aide à tous.
0
Utilisateur anonyme
27 mars 2009 à 12:30
En javascript, tu peux "forcer" la soumission d'un formulaire en appelant la méthode suivante :

document.formulaire.submit()
0
Bonjour Emmanuel,

Dans ma page web j'ai un formulaire voici le code du formulaire :

<form name="formulaire" method="post" onSubmit="return verification()" action="sauve.php">


La page "sauve.php" enregistre mes modifications dans la base de données.

Ma page dispose également d'un bouton "Enregistrer" dont voici le code :

<input type="submit" name="sauveri" value="Enregistrer les modifications" />


Enfin, j'ai deux liens qui redirige vers deux autres pages dont voici le code :

<div id="header">
<ul>
<li><a href="commandes.php" onclick="return verif_saisie()">Commandes</a></li>
<li><a href="ordinateurs.php" onclick="return verif_saisie()">Liste des ordinateurs</a></li>
<li id="current"><a href="imprimantes.php" onclick="return verif_saisie()">Liste des imprimantes</a></li>
</ul>
</div>


Le fonction "verif_saisie()" est une fonction javascript qui me dit si quelque chose à été modifié ou pas. Et je souhaiterais que si quelque chose à été modifié j'enregistre dans ma base les modifications, puis j'affiche la page web du lien. Voici le code de la fonction :

<script type="text/javascript" language="Javascript" >
function verif_saisie() {
if (document.formulaire.modif_faite.value == "1") {
    if (confirm("Voulez-vous enregistrer vos modifications ?")) {
      document.formulaire.modif_faite.value = "0";
      document.formulaire.submit();
    }
    else
    {
      document.formulaire.modif_faite.value = "0";
    }
  }
  else
  {
    //alert("pas de modifs");
  }
  return true;
}
</script>


Mais il ne fait pas le submit que tu m'as dit d'ajouter, il fait uniquement le lien. De quoi celà pourrait venir ?
0
pschit > pschit
1 avril 2009 à 13:56
Bonjour tout le monde,

Je me permet de relancer mon sujet car je suis toujours coincé.

Merci à tous pour votre aide.
0