vue Traitement d'un formulaire avec affichage de fieldsets en fonction d'un select - Page 3
Kommunauty
Connexion
Inscription

Traitement d'un formulaire avec affichage de fieldsets en fonction d'un select


Mizur Messages : 6615

Quoi? Les balises code ça existe et c'est dans l'éditeur de texte, là t'as tout fait bugger

mardi 15 mai 2012

maxredphenix Messages : 60

oups désolé, j'avais pas fait gaffe que j'avais pas mis les balises. Juste comme ça le faite qu'il y ai la même variable : $sql pour chaque INSERT INTO, ça fait pas un enregistrement sur le dernier INSERT INTO? ça expliquerai pourquoi l’enregistrement se fait que dans la table correspondante à mon select.

Si c'est ça, est ce qu'il y a un moyen d'enregistrer avec un truc du style $res=mysql_query($sql,$sql1); avec $sql pour la table appels et $sql1 pour chaque INSERT INTO des autres tables ???

Merci

mardi 15 mai 2012

Vanyali Messages : 1298

en effet, rajoute ton code que tu avais fait juste après le sql de la table appel et il fera les deux insert !

$res=mysql_query($sql);
if ($res) {
echo $msg_ok;
// Redirection vers la page appels_tableau
header('Location: ../formulaires_tableau/gest_appels_tableau.php');
} else {
echo mysql_error();
}
mercredi 16 mai 2012

maxredphenix Messages : 60

J'ai tenter mais cela ne fonctionne pas. Du coup j'ai tenter autre chose après quelques recherches:

$res=mysql_query($sql);
$res1=mysql_query($sql1);
if($res && $res1) {
echo $msg_ok;
// Redirection vers la page appels_tableau
header('Location: ../formulaires_tableau/gest_appels_tableau.php');
} else {
echo mysql_error();
}

Avec le premier : $sql pour la table appel et l'autre $sql1 pour les autres tables mais idem cela ne fonctionne pas.

je suis revenu à une erreur au premier else if: ( ! ) Parse error: syntax error, unexpected T_ELSE in C:\wamp\www\Monsite\php\formulaires_traitement\traitement_appels.php on line 94

Entre temps il y a eu quelques changement (j'ai fait une demo à mes collègues et le type d'inter assistance audio à été supprimer) mais le test a été fait sur l'ancien fichier php.

Voila le code actuel avec la modif sur le mysql_query (et il n'y a pas d'erreur sur la déclaration dans les $sql, j'ai tout relu ligne par ligne , donc pas de fautes d'orthographe, de lettres oubliées etc...)

<?php 
// Connexion à la base de donnée pour WAMP
$host = "localhost";
$user = "root";
$passwd = "";
$database = "gestspie";
$link = @mysql_connect($host, $user,$passwd);

// Code de debbugage --> affichage des erreurs
error_reporting(E_ALL);

// Affichage de l'erreur en cas d'erreur de connexion à la bdd
if(!$link){die('Erreur de connexion au serveur');}
$select_db = @mysql_select_db($database);
if(!$select_db){die('Erreur de connexion à la 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";

// 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){
        $valeur = mysql_real_escape_string(trim($valeur));
}
//Déclaration date_appel + Regex qui permet d'inverser l'année avec le jour pour un enregistrement correct dans mysql
if(isset($_POST['date_appel'])) $date_appel = $_POST['date_appel'];
$Newdate_appel = ereg_replace('^([0-9]{1,2})-([0-9]{1,2})-([0-9]{2,4})$', '\\3-\\2-\\1', $date_appel);
// Verif de l'existance de $_POST['xxx']
if (isset($_POST[''])){
//Déclaration des variables pour les fieldsets de base pour la table "appels"
$_POST['num_appelant'];
$_POST['heure_appel'];
$_POST['num_appelant'];
$_POST['heure_appel'];
$_POST['media'];
$_POST['nom_demandeur'];
$_POST['batiment'];
$_POST['systeme'];
$_POST['service'];
$_POST['local'];
$_POST['type_inter'];
$_POST['tps_inter_souhaite'];
$_POST['objet_appel'];
$_POST['objet'];

//Déclaration des variables pour les autres fieldsets
//On ne reprend pas les variables appels car déjà créer au-dessus
$_POST['ensemble'];
$_POST['element'];
$_POST['sous_element'];
$_POST['surete'];
$_POST['debut_inter'];
$_POST['fin_inter'];
$_POST['debut_impo_acces'];
$_POST['fin_impo_acces'];
$_POST['tps_acces_signature'];
$_POST['intervenant1'];
$_POST['intervenant2'];
$_POST['intervenant_autre'];
$_POST['entreprise'];
$_POST['prestation_effectuee'];
$_POST['num_fim'];
$_POST['type_inter_correctif'];
$_POST['dysfonctionnement'];
$_POST['parametre_bf'];
$_POST['consignes_inter'];
$_POST['type_operation'];
}
// 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, systeme, service, local, type_inter, tps_inter_souhaite, objet_appel, commentaires)
VALUES ('','".$_POST['num_appelant']."','$Newdate_appel','".$_POST['heure_appel']."','".$_POST['media']."','".$_POST['nom_demandeur']."','".$_POST['batiment']."','".$_POST['systeme']."','".$_POST['service']."','".$_POST['local']."','".$_POST['type_inter']."','".$_POST['tps_inter_souhaite']."', '".$_POST['objet_appel']."', '".$_POST['objet']."')";

//On enregistre les champs des fieldsets correspondant au choix 1 : Fieldset correctif
else if($_POST["type_inter"] == '1'){
$sql1="INSERT INTO correctif(id, id_appel, num_fim, date_appel, heure_appel, nom_demandeur, service, batiment, local, type_inter_correctif, systeme, ensemble, element, sous_element, surete, debut_inter, tps_acces_signature, debut_impo_acces, fin_impo_acces, fin_inter, tps_inter_souhaite, intervenant1, intervenant2, intervenant_autre, dysfonctionnement, parametre_bf, consignes_inter, commentaires)
VALUES ('','".$_POST['id_appel']."', '".$_POST['num_fim']."', '$Newdate_appel', '".$_POST['heure_appel']."', '".$_POST['nom_demandeur']."', '".$_POST['service']."', '".$_POST['batiment']."', '".$_POST['local']."', '".$_POST['type_inter_correctif']."', '".$_POST['systeme']."', '".$_POST['ensemble']."', '".$_POST['element']."', '".$_POST['sous_element']."', '".$_POST['surete']."', '".$_POST['debut_inter']."', '".$_POST['tps_acces_signature']."', '".$_POST['debut_impo_acces']."', '".$_POST['fin_impo_acces']."', '".$_POST['fin_inter']."', '".$_POST['tps_inter_souhaite']."', '".$_POST['intervenant1']."', '".$_POST['intervenant2']."', '".$_POST['intervenant_autre']."', '".$_POST['dysfonctionnement']."', '".$_POST['parametre_bf']."', '".$_POST['consignes_inter']."', '".$_POST['objet']."')";
}
//On enregistre les champs des fieldsets correspondant au choix 2 : Fieldset exploitation
else if($_POST["type_inter"] == '2'){
$sql1="INSERT INTO exploitation(id, id_appel, type_exploitation, nom_demandeur, service, batiment, local, debut_inter, tps_acces_signature, debut_impo_acces, fin_impo_acces, fin_inter, tps_inter_souhaite, intervenant1, intervenant2, intervenant_autre, type_operation, objet, prestation_effectuee)
VALUES ('','".$_POST['id_appel']."', '".$_POST['type_exploitation']."', '".$_POST['nom_demandeur']."', '".$_POST['service']."', '".$_POST['batiment']."', '".$_POST['local']."', '".$_POST['debut_inter']."', '".$_POST['tps_acces_signature']."', '".$_POST['debut_impo_acces']."', '".$_POST['fin_impo_acces']."', '".$_POST['fin_inter']."', '".$_POST['tps_inter_souhaite']."', '".$_POST['intervenant1']."', '".$_POST['intervenant2']."','".$_POST['intervenant_autre']."', '".$_POST['type_operation']."', '".$_POST['objet']."', '".$_POST['prestation_effectuee']."')";
}
//On enregistre les champs des fieldsets correspondant au choix 3 : Fieldset devis
//else if($_POST["type_inter"] == '3'){
//$sql1="INSERT INTO devis(id, id_appel, commentaires)
//VALUES ('','".$_POST['id_appel']."', '".$_POST['objet']."')";
//}

$res=mysql_query($sql);
$res1=mysql_query($sql1);
if($res && $res1) {
echo $msg_ok;
// Redirection vers la page appels_tableau
header('Location: ../formulaires_tableau/gest_appels_tableau.php');
} else {
echo mysql_error();
}
}
?>

Encore merci de ton aide

mercredi 16 mai 2012

maxredphenix Messages : 60

Bonsoir,

Bon je viens de tester en changeant le premier else if par un if suite à une re-lecture entière du code en le comparant à l'ancien et c'est tout bon, j'ai supprimer la première ligne qui correspondait à l'assistance audio et j'ai pas fait attention que cette dernière commencait par un IF. Maintenant j'ai bien un enregistrement dans les 2 tables.

Encore merci pour ton aide durant ces dernières semaines.

Peut être à bientôt

maxredphenix

dimanche 20 mai 2012

Répondre Pour répondre, tu dois d'abord t'inscrire rapidement sur Kommunauty. Rejoins-nous vite !