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

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


maxredphenix Messages : 60

Bonsoir,

Je viens de rajouter ta première ligne et pour les variable j'ai changer le code entre temps j'ai mis:

$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 ('','".$_POST['num_appelant']."','$Newdate_appel','".$_POST['heure_appel']."','".$_POST['media']."','".$_POST['nom_demandeur']."','".$_POST['batiment']."','".$_POST['systemes']."','".$_POST['service']."','".$_POST['local']."','".$_POST['type_inter']."','".$_POST['tps_inter_souhaite']."', '".$_POST['objet_appel']."', '".$_POST['objet']."')";

Par contre, je suis désolé mais ça change pas. Tu penses qu'il faudrait que je remette les variables comme avant?

Merci

vendredi 11 mai 2012

Vanyali Messages : 1298

ben après, je vois pas vraiment ce qui pourrais ne pas fonctionner...

dimanche 13 mai 2012

maxredphenix Messages : 60

Je viens de relire tout mon formulaire et je me suis rendu compte qu'il y avait un autre champ qui se trouve dans un des fieldsets correctif (qui apparaissent lors de la selection "correctif" dans le select). J'ai donc renommé cet input et son champ correspondant dans la bdd.

Maintenant lorsque je selectionne "correctif" Chrome me dit qu'il y a des erreurs sur la ligne 108 et 118, ce qui correspondant au 2 else if "assistance audio et exploitation" (il y a pas le else if du devis puisque j'ai mis les lignes en commentaires vu que la table n'est pas créer dans la bdd)

Voila un exemple d'une des phrase: ( ! ) Notice: Undefined index: tps_inter_souhaite in C:\wamp\www\Monsite\php\formulaires_traitement\traitement_appels.php on line 118

et la dernière phrase est [#red]Column count doesn't match value count at row 1[/#]

Sinon au cas ou, voila une copie du site avec seulement les pages en cause si tu penses que se sera plus facile pour toi:

http://dl.dropbox.com/u/31901874/Copie%20site%20pour%20forum/Monsite.rar

Merci

dimanche 13 mai 2012

maxredphenix Messages : 60

Salut,

j'ai placé un echo dans la boucle suivante et que j'ai choisi correctif comme choix de select pour transmettre le formulaire:

else{
foreach($_POST as $index => $valeur){
        $valeur = mysql_real_escape_string(trim($valeur));
echo $_POST["type_inter"];
}

Et une fois que j'envoie le formulaire, j'ai ceci qui apparaît à l'écran :22222222222222222222222 (j'ai fait une copie exacte du nbre de 2). C'est assez bizarre comme valeur du select type_inter!!

lundi 14 mai 2012

maxredphenix Messages : 60

Sinon j'ai aussi regarder pour la dernière phrase: Column count doesn't match value count at row.

J'ai regarder sur ce site: http://www.vulgarisation-informatique.com/faq-419--column-count-doesnt-match-value-at-row-1.php

Je comprends pas pour l'erreur, je fais bien comme il faut vu ce qu'ils expliquent. ils disent qu'il faut preciser les champs à enregistrer dans le INSERT INTO et VALUES, le reste prendra la valeur par défaut.

Moi j'ai ceci:

if($_POST["type_inter"] == '1'){
$sql="INSERT INTO assistance_audio(id_audio, id_appel, type_inter_assistaudio, etc....)
VALUES ('','".$_POST['id_appel']."', '".$_POST['type_inter_assistaudio']."'  etc....)";
}

Donc logiquement ça devrait être bon non?

lundi 14 mai 2012

Vanyali Messages : 1298

pour le 22222222... c'est normal, vu que tu l'a mis dans le foreach donc il affiche 2 autant de fois que tu a d'index dans $_POST

ensuite, les ligne que tu m'a communiqué pour les erreur ne correspondent pas à celles dans le fichier (ligne 108 c'est un commentaire et ligne 118 c'est vide)

ensuite, dans le insert into correctif, il y a le '', du début qui est en trop du coup, tout est décalé d'un champ

lundi 14 mai 2012

maxredphenix Messages : 60

Je viens de corriger mon erreur pour l'insertion dans la table correctif, j'avais pas vu que je l'avais mis en double, merci.

Pour le 22222 c'est déjà bon signe, il me détecte bien la valeur de mon select vu que le 2 c'est la valeur de correctif. Les lignes 108 et 118 sont exactement comme toi: commentaire et vide mais je me suis dit que ca allait directement aux lignes que je t'ai noter ci-dessus.

J'ai vérifié au cas ou si cela ne venait pas de la config de ma bdd pour les erreurs mais toutes mes tables sont à null=non donc logiquement même s'il n'y a rien le php peut envoyer une requete pour enregistrer dans la bdd

lundi 14 mai 2012

Vanyali Messages : 1298

je suis pas sûr que ce soit vraiment utile, mais tu déclare deux fois

$_POST['tps_inter_souhaite']

lundi 14 mai 2012

maxredphenix Messages : 60

Merci, je viens de l'enlever. J'ai aussi corrigé une erreur dans ma bdd, j'avais nommé ma table assitance_audio au lieu de assistance_audio.

J'ai toujours des erreurs qui apparaissent lors de l'enregistrement, j'ai toujours cette ligne:( ! ) Notice: Undefined index: media in C:\wamp\www\Monsite\php\formulaires_traitement\traitement_appels.php on line 53 mais pour chaque variable défini par $_POST['xxxx'] mais j'ai aussi ceci: Unknown column 'type_inter' in 'field list'. J'ai envoie le echo pour tester la valeur du select et j'ai bien "2" donc mon fichier de traitement me détecte bien la value de mon select

Tu me conseille de mettre quoi dans le post à la place ds xxxx? est ce que l'affichage des erreurs ne viendrait pas de la?

// Verif de l'existance de $_POST['xxxx']
if (isset($_POST['[color=#9e141c]xxxx[/color]'])){
//Déclaration des variables pour les fieldsets de base pour la table "appels"
$_POST['num_appelant'];
$_POST['heure_appel'];
$_POST['num_appelant']; etc.....

Sinon juste comme ça:

Dans les fieldset qui dépendent du select "type_inter" de mon formulaire il y a plusieurs input qui se répète (comme intervenant1, intervenant2 etc...) du faite que la gestion des correctifs et des exploitations doivent avoir ces champs pour avoir un logiciel qui permet de remplir toutes les infos nécessaire. Est ce que le faite de nommée les inputs avec un name identique ne dérange pas pour l'enregistrement dans les différentes table de la bdd??

Encore merci

mardi 15 mai 2012

maxredphenix Messages : 60

Je viens de changer quelques petit trucs dans la page de traitement, il y avait des erreurs de variables et de même dans la bdd.

Donc maintenant j'ai plus d'erreurs qui s'affichent, une fois que je clique sur enregistrement, le logiciel revient bien à la page gest_appel_tableau par contre rien n'est enregistré dans la table appel mais maintenant les enregistrement sont ok dans la table correctif ou autre table qui correspondent au select......

<?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));
}
echo $_POST["type_inter"];
//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['systemes'];
$_POST['service'];
$_POST['local'];
$_POST['type_inter'];
$_POST['tps_inter_souhaite'];
$_POST['objet_appel'];
$_POST['objet'];

//Déclaration des variables pour les fieldsets assistance_audio pour la table "assistance_audio"
//On ne reprend pas les variables appels car déjà créer au-dessus
//$_POST['type_inter_assistaudio'];
$_POST['date_debut_inter'];
$_POST['heure_debut_inter'];
$_POST['date_fin_inter'];
$_POST['heure_fin_inter'];
$_POST['intervenant1'];
$_POST['intervenant2'];
$_POST['intervenant_autre'];
$_POST['entreprise'];
$_POST['prestation_effectuee'];

//Déclaration des variables pour les fieldsets correctif pour la table "correctif"
//Idem: on reprend que les valeurs non crée au-dessus
$_POST['num_fim'];
$_POST['type_inter_correctif'];
$_POST['ensemble'];
$_POST['element'];
$_POST['sous_element'];
$_POST['surete'];
$_POST['duree_inter'];
$_POST['tps_acces_signature'];
$_POST['heure_cloture_panne'];
$_POST['dysfonctionnement'];
$_POST['parametre_bf'];
$_POST['consignes_inter'];

//Déclaration des variables pour les fieldsets devis pour la table "devis"
//idem
//Pour le moment la table n'est pas défini, en attente des type de champs à mettre dans le formulaire
//$_POST[''];

//Déclaration des variables pour les fieldsets exploitation pour la table "exploitation"
//idem
$_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, systemes, 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['systemes']."','".$_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 audio
if($_POST["type_inter"] == '1'){
$sql="INSERT INTO assistance_audio(id, id_appel, type_inter_assistaudio, date_debut_inter, heure_debut_inter, date_fin_inter, heure_fin_inter, intervenant1, intervenant2, intervenant_autre, entreprise, prestation_effectuer, commentaires)
VALUES ('','".$_POST['id_appel']."', '".$_POST['type_inter_assistaudio']."', '".$_POST['date_debut_inter']."', '".$_POST['heure_debut_inter']."', '".$_POST['date_fin_inter']."', '".$_POST['heure_fin_inter']."', '".$_POST['intervenant1']."', '".$_POST['intervenant2']."', '".$_POST['intervenant_autre']."', '".$_POST['entreprise']."', '".$_POST['prestation_effectuee']."', '".$_POST['objet']."')";
}
//On enregistre les champs des fieldsets correspondant au choix 2 : Fieldset correctif
else if($_POST["type_inter"] == '2'){
$sql="INSERT INTO correctif(id, id_appel, num_fim, type_inter_correctif, date_appel, heure_appel, nom_demandeur, service, batiment, local, systemes, ensemble, element, sous_element, surete, date_debut_inter, duree_inter, tps_acces_signature, date_fin_inter, heure_fin_inter, heure_cloture_panne, tps_inter_souhaite, intervenant1, intervenant2, intervenant_autre, dysfonctionnement, parametre_bf, consignes_inter, commentaires)
VALUES ('','".$_POST['id_appel']."', '".$_POST['num_fim']."', '".$_POST['type_inter_correctif']."', '$Newdate_appel', '".$_POST['heure_appel']."', '".$_POST['nom_demandeur']."', '".$_POST['service']."', '".$_POST['batiment']."', '".$_POST['local']."', '".$_POST['systemes']."', '".$_POST['ensemble']."', '".$_POST['element']."', '".$_POST['sous_element']."', '".$_POST['surete']."', '".$_POST['date_debut_inter']."', '".$_POST['duree_inter']."', '".$_POST['tps_acces_signature']."', '".$_POST['date_fin_appel']."', '".$_POST['heure_fin_inter']."', '".$_POST['heure_cloture_panne']."', '".$_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 3 : Fieldset devis
//else if($_POST["type_inter"] == '3'){
//echo "entre dans la condition 3";
//$sql="INSERT INTO devis(id, id_appel, commentaires)
//VALUES ('','".$_POST['id_appel']."', '".$_POST['objet']."')";
//}
//On enregistre les champs des fieldsets correspondant au choix 4 : Fieldset exploitation
else if($_POST["type_inter"] == '4'){
$sql="INSERT INTO exploitation(id, id_appel, type_exploitation, nom_demandeur, service, batiment, local, date_debut_inter, duree_inter, tps_acces_signature, date_fin_inter, heure_fin_inter, heure_cloture_panne, 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['date_debut_inter']."', '".$_POST['duree_inter']."', '".$_POST['tps_acces_signature']."', '".$_POST['date_fin_inter']."', '".$_POST['heure_fin_inter']."', '".$_POST['heure_cloture_panne']."', '".$_POST['tps_inter_souhaite']."', '".$_POST['intervenant1']."', '".$_POST['intervenant2']."','".$_POST['intervenant_autre']."', '".$_POST['type_operation']."', '".$_POST['objet']."', '".$_POST['prestation_effectuee']."')";
}
$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();
}
}
?>

il y a quand même du mieux mais bon c'est pas encore ça

mardi 15 mai 2012 (Dernière édition mardi 15 mai 2012)

Page suivante »