Enregistrer formulaires dans 2 tables mysql

Enregistrer formulaires dans 2 tables mysql - PHP - Programmation

Marsh Posté le 30-04-2012 à 12:16:21    

Bonjour à tous,
 
Je souhaite utiliser un formulaire pour enregistrer des infos dans 2 tables différentes. A l'heure actuelle j'ai un page php nommée traitement.php (appelée lors du clique sur "envoyé" ) par la page php qui contient le formulaire) qui me sert à enregistrer mes données dans une des 2 tables mais je voudrais savoir s'il est possible de l'utiliser pour enregistrer dans 2 tables différentes à la fois? la 2 tables reprends juste quelques données de la première et me sert pour un calendrier (jquery-week-calendar)
 
Voici le code de la page traitement.php
 
<?php
// Connexion à la base de donnée pour WAMP
$host = "localhost";  
$user = "root";  
$passwd = "";  
$database = "gestspie";  
$link = @mysql_connect($host, $user,$passwd);
 
if(!$link){
 die('Erreur de connexion au serveur');
}
 
$select_db = @mysql_select_db($database);
if(!$select_db){
 die('Erreur de connexion à la base');
}
// Connexion à la base de donnée
// $base = mysql_connect ('serveur', 'login', 'pass');  
//mysql_select_db ('ma_base', $base) ;  
 
// Déclaration des variables
$msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :<br/><br/>";
$msg_ok = "Enregistrement reussi.";
$message = $msg_erreur;
 
// Enregistrement des champs non remplis
// Utilisation la fonction PHP empty() qui retourne:
//  -> "vrai" si la variable passée en paramètre est vide
//  -> "faux" dans le cas contraire.
if (empty($_POST['num_appelant']))  
$message .= "Le Numéro de l'appelant<br/>";
 
// Si le contenu de la variable $message et plus grand que celui de la variable $msg_erreur,  
// c'est que nous venons d'ajouter des champs non remplis donc on affiche un message d'erreur
if (strlen($message) > strlen($msg_erreur)) {
echo $message;
}
// Si les champs sont bien remplis, on peut insérer leurs valeurs dans la base de données MySQL.
// Utilisation de mysql_real_escape_string() qui protège les données avant insertion et notamment  
// les apostrophes, guillemets, etc... pour protéger des attaques par injection SQL.
// La boucle foreach() va passer toutes la variables $_POST envoyées par le formulaire en revue.  
// Pour chacune d'elle nous allons créer une variable spécifique avec $$index, nettoyer sa valeur avec trim()  
// (en enlevant notamment les espaces de fin) et sécuriser sa valeur avec mysql_real_escape_string().
else{
 foreach($_POST as $index => $valeur){
  $index = mysql_real_escape_string(trim($valeur));
 }
// Insérer les données dans la table "appels" avec une requête sql de type "INSERT" et la fonction mysql_query().
// Vérification que la requête s'est bien effectuée avec la valeur de retour $res
// Si c'est le cas, on affiche $msg_ok, sinon on affiche l'erreur qui a eu lieu dans MySQL
// Le premier "" dans values correspont dans la table à l'ID qui est automatiquement incrémenté
 $sql="INSERT INTO appels(id, num_appelant, date_appel, heure_appel, media, nom_demandeur, batiment, systemes, service, local, type_inter, tps_inter_souhaite, objet_appel, commentaires)  
 VALUES ('','$num_appelant','$date_appel','$heure_appel','$media','$nom_demandeur','$batiment','$systemes','$service','$local','$type_inter','$tps_inter_souhaite','$objet_appel','$commentaires')";
 $res=mysql_query($sql);
 if ($res) {
  echo $msg_ok;
 } else {
  echo mysql_error();
 }
}
?>
 
Est-ce qu'il possible de modifier ce code pour enregistrer mon formulaire comme je veux le faire?
 
merci d'avance
 
maxredphenix

Reply

Marsh Posté le 30-04-2012 à 12:16:21   

Reply

Marsh Posté le 30-04-2012 à 13:13:30    

Bien sûr que c'est possible, suffit de faire un premier enregistrement dans la table 1 en ne prenant que les infos du formulaire pour cette table puis faire un autre enregistrement dans la table 2 en prenant les infos utiles pour cet enregistrement...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 30-04-2012 à 13:58:05    

Merci pour ta réponse.
 
Donc si je fais comme ça:
$sql="INSERT INTO appels(id, num_appelant, date_appel, heure_appel, media, nom_demandeur, batiment, systemes, service, local, type_inter, tps_inter_souhaite, objet_appel, commentaires)  
 VALUES ('','$num_appelant','$date_appel','$heure_appel','$media','$nom_demandeur','$batiment','$systemes','$service','$local','$type_inter','$tps_inter_souhaite','$objet_appel','$commentaires')";
 $res=mysql_query($sql);
 if ($res) {
  echo $msg_ok;
 } else {
  echo mysql_error();
 }
 $sql="INSERT INTO calendrier(id, date_appel, heure_appel, media, nom_demandeur, type_inter)  
 VALUES ('','$date','$heure_debut','$media','$nom_demandeur','$type_inter')";
 $res=mysql_query($sql);
 if ($res) {
  echo $msg_ok;
 } else {
  echo mysql_error();
 }
 
Cela peut fonctionner ou il faut quand même que je même une autre valeur pour le $sql et le $res?

Reply

Marsh Posté le 01-05-2012 à 13:55:21    

Non, c'est bon comme ça.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 01-05-2012 à 14:09:08    

Ok merci bon ba je vais tester tout cela alors.
 
Merci pour ton aide

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed