Problème formulaire html avec lien SQL

Résolu/Fermé
kronos12 - 5 nov. 2010 à 09:20
 Profil bloqué - 24 avril 2011 à 01:56
Bonjour, j'ai un petit soucis
voila mon problème, je suis en alternance en informatique et à mon travail on m'a demandé de créer une base de données "parc informatique" recensant tous les postes de l'entreprise et leurs caractéristiques. Aucun problème pour ça, la base de données a été créée sous easyphp 5.3.
Maintenant on m'a demandé de créer un formulaire où l'utilsateur pourra indiquer certaines informations et rajouter une ligne au parc informatique.

La plupart des champs du fonctionnaire fonctionne très bien et s'insère bien dans ma base de données, deux champs du formulaire ne marche pas : j'ai créé une liste déroulante avec tous les modèles PC et l'utilisateur aura juste à choisir celui correspondant mais le choix de l'utilisateur ne s'insère pas dans la base de données, j'ai beaucoup cherché sur internet mais sans résultat ...
Deuxième problème : l'un des champs permet de choisir une date grace a un calendrier pour la date de mise en application du PC mais là encore rien ne s'insère dans ma base de données ...

Je débute dans tout ce qui est programmation et suis un peu perdu ...
si quelqu'un peut me donner un petit coup de main ... je pense que mon code est à modifier une aide serait très précieuse :)

le code du formulaire :

<html>
	<head>
	<title>Essai de formulaire</title>
	</head>
	<body>
	<form method=post action="verif.php">
	<table align="center" border="3" cols="8">
	<tr>
	<td>Nom : <input type="text" name="nom"></td>
	<td>Prénom : <input type="text" name="prenom"></td>
	<td>Nom Calife : <input type="text" name="NomCalife"></td>
	<td>Service : <br>
		<input type="checkbox" name="Service" value="UOW">UOW<br>
		<input type="checkbox" name="Service" value="UOPRM">UOPRM<br>
		<input type="checkbox" name="Service" value="UOLI">UOLI<br>
		<input type="checkbox" name="Service" value="Communication">Communication<br>
		<input type="checkbox" name="Service" value="QSE">QSE<br>
		<input type="checkbox" name="Service" value="Methodes">Methodes<br>
		<input type="checkbox" name="Service" value="GF">GF<br>
		<input type="checkbox" name="Service" value="RH">RH<br>
		<input type="checkbox" name="Service" value="GI">GI<br>
		<input type="checkbox" name="Service" value="Direction">Direction<br>
		<input type="checkbox" name="Service" value="Ingenierie">Ingenierie<br>
	</td>
	</tr>
	<tr>
	<td><?php include ("exemple.php"); ?></td>
	
	<td>Constructeur : <input type="text" name="Constructeur"></td>
	<td>NumSérie : <input type="text" name="NumSérie"></td>
	<td>Date_Application : <INPUT id=datepicker></P></DIV>
	<DIV class=demo-description style="DISPLAY: none">
	<P>

	<!DOCTYPE html>
	<html>
	<head>
	<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
	<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
  
	<script>
	$(document).ready(function() {
    $("#datepicker").datepicker();
	});
	</script>
	</head>
	<body style="font-size:62.5%;">
  
	<div type="text" id="datepicker"></div>

	</td>
	</tr>
	</table>
	<input type="submit" value="Valider">
	<input type="reset" value="Effacer">
	</form>
	</body>
</html>



Voici le code PHP pour créer la liste déroulante qui fait appel à ma base de données :

<?php
	$connexion=mysql_connect('localhost','root',"") or die ("connexion impossible.");
	$db=mysql_select_db('csv_db',$connexion) or die ("base de données non accessible");
?>
	<p>Choisissez un modèle: </p>
	<select name="id_Modele" id="id_Modele">
<?php
	$Libelle=mysql_query("select id_Modele , Libelle from modele order by id_Modele") or die ("requète non executée");
	if (! $Libelle) { echo "Erreur requete"; exit;} 
	while ($ligne=mysql_fetch_array($Libelle))
{
?>
	<option><?php echo ''.$ligne['Libelle'].'';?> </option>
	
<?php
		
}
	
	mysql_close($connexion);
?>



Et pour finir le code PHP où il y a la connection à la base de données et les requêtes :

<?php 
	$connexion=mysql_connect('localhost','root',"") or die ("connexion impossible.");
	$db=mysql_select_db('csv_db',$connexion) or die ("base de données non accessible");
?>
<?php

	$prenom = $_POST['prenom']; 
	$nom = $_POST['nom']; 
	$NomCalife = $_POST['NomCalife'];
	$Service = $_POST['Service'];
	$Libelle = $_POST['Libelle'];	
	$Constructeur = $_POST['Constructeur'];
	$NumSérie = $_POST['NumSérie'];
	$Date_Application = $_POST ['Date_Application'];
	$req = "INSERT INTO test (prenom , nom , NomCalife , Service , Libelle , Constructeur , NumSérie , Date_Application) 
	VALUES ('$prenom','$nom','$NomCalife','$Service','$Libelle','$Constructeur','$NumSérie', '$Date_Application')"  ;
	mysql_query($req);
?>	
<?php
	$req = "UPDATE test SET nom='' WHERE prenom=''";
	mysql_query($req); 

?> 
<?php
	mysql_close($connexion);
?>



Voila si quelqu'un a un peu de temps à me consacrer , je pense qu'il ne me manque pas grand chose
un grand merci d'avance !
A voir également:

11 réponses

mario002e Messages postés 82 Date d'inscription samedi 29 septembre 2007 Statut Membre Dernière intervention 8 mai 2012 6
5 nov. 2010 à 10:17
Essaye de voir si ce sont les mêmes noms dans les balises sont utilisés dans la page verif.php. Car je constate que tu as utilisé id_Modele dans
<select name="id_Modele" id="id_Modele">
mais dans le traitement, tu fais appel à Libele ($_POST['Libelle']
2
mario002e Messages postés 82 Date d'inscription samedi 29 septembre 2007 Statut Membre Dernière intervention 8 mai 2012 6
5 nov. 2010 à 13:02
Dans le fichier verif.php (ou la page de traitement)
mets:
$Date_Application = date('Y-m-d', strtotime($_POST ['Date_Application']));
au lieu de:
$Date_Application = $_POST ['Date_Application'];
1
Profil bloqué
24 avril 2011 à 01:56
cette vidéo peux vous idée pour Formulaire HTML 5

http://course-education.blogspot.com/2011/04/formulaire-html-5.html
1
Bonjour,

Tu récupères les valeurs des champs id_Modele et Libelle dans une table nommée 'modele' pour l'affichage dans une liste déroulante 'id_Modele', pense à mettre un value dans l'option :
<option value="<?php echo $ligne['Libelle']; ?>"><?php echo $ligne['Libelle']; ?></option>

Mais je ne vois nulle part dans ton script PHP la variable $_POST['id_modele'] ?
Autre chose, tu insères les infos dans une table nommée 'test' mais il manque le nom du champ id_Modele, je suppose que tu ne l'as pas créé dans la table ?

<?php
$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
$NomCalife = $_POST['NomCalife'];
$Service = $_POST['Service'];
$Libelle = $_POST['Libelle'];
$Constructeur = $_POST['Constructeur'];
$NumSérie = $_POST['NumSérie'];
$Date_Application = $_POST ['Date_Application'];

$idModele = $_POST['id_Modele']; // Absent ???

$req = "INSERT INTO test (prenom , nom , NomCalife , Service , Libelle , Constructeur , NumSérie , Date_Application) 
VALUES ('$prenom','$nom','$NomCalife','$Service','$Libelle','$Constructeur','$NumSérie', '$Date_Application')";
mysql_query($req);
?>

PS : évite les accents dans les name du formulaire (NumSérie), dans les variables ($NumSérie) ainsi que dans les noms de champ (NumSérie), c'est souvent la cause de souci qui ne saute pas aux yeux mais qui peut faire planter un script.
C'est tout ce que je vois pour l'instant...

---------------------------------------------------------------------------------------------------------------------------------------------
<* Suivez-moi sur FesseS-BouC *>
0

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

Posez votre question
Ah yes ! j'ai changé id_Modele par Libelle et j'obtiens ce que je selectionne dans ma liste déroulante dans ma base de données =)
merci !

bon maintenant me reste plus qu'à régler le probléme du calendrier ...
en faisant appel à un calendrier afin d'insérer une date dans la base de données, que faut il mettre comme type pour le champ Date_Application ?
j'ai essayé date et varchar je n'obtiens rien ...

Je vais re-vérifier que tous les noms de variable soient concordants en espérant que ce soit juste ça ...

Encore merci mario002e j'ai fait la moitié du chemin grâce à toi !
0
mario002e Messages postés 82 Date d'inscription samedi 29 septembre 2007 Statut Membre Dernière intervention 8 mai 2012 6
5 nov. 2010 à 12:11
En ce qui concerne le calendrier, tu peux utiliser le tyde de donnée Date qui respecte le format yyyy-mm-dd [1].
1. Ton champ Date_Application dans le formululaire n'a pas de nom (name='Date_Application' dans <INPUT id=datepicker>)

2. Comment est affiché dans ton champ une date sélectionnée? 2010-11-05 ou 05-11-2010?
Si c'est le second cas, essaye de le convertir en format [1] avant l'insertion.
Tu pourrais utiliser date('Y-m-d', strtotime(Date_Application)). strtotime est prévue normalement pour les dates en anglais mais marche à posteriori pour les dates francaises
0
Alors, le calendrier spécifique à easyphp est de la forme yyyy/mm/jj
Le calendrier que j'avais ci-dessus était de la forme mm/jj/yyyy mais j'ai changé et suis maintenant de la forme jj/mm/yyyy

A quel endroit du code dois-je mettre l'instruction du changement de format de date ?

Comme j'ai changé de calendrier a changé j'ai voulu mettre name='Date_Application' comme tu me l'as dit or avec le nouveau code la date n'est plus validée quand je clique dessus dans mon calendrier ...

Je mets mon nouveau code pour y voir plus clair :

<html>
	<head>
	<title>Essai de formulaire</title>
	</head>
	<body>
	<form method=post action="verif.php">
	<script language="JavaScript" src="calendrier.js"></script>
	<table align="center" border="3" cols="8">
	<tr>
	<td>Nom : <input type="text" name="nom"></td>
	<td>Prénom : <input type="text" name="prenom"></td>
	<td>Nom Calife : <input type="text" name="NomCalife"></td>
	<td>Service : <br>
		<input type="checkbox" name="Service" value="UOW">UOW<br>
		<input type="checkbox" name="Service" value="UOPRM">UOPRM<br>
		<input type="checkbox" name="Service" value="UOLI">UOLI<br>
		<input type="checkbox" name="Service" value="Communication">Communication<br>
		<input type="checkbox" name="Service" value="QSE">QSE<br>
		<input type="checkbox" name="Service" value="Methodes">Methodes<br>
		<input type="checkbox" name="Service" value="GF">GF<br>
		<input type="checkbox" name="Service" value="RH">RH<br>
		<input type="checkbox" name="Service" value="GI">GI<br>
		<input type="checkbox" name="Service" value="Direction">Direction<br>
		<input type="checkbox" name="Service" value="Ingenierie">Ingenierie<br>
	</td>
	</tr>
	<tr>
	<td><?php include ("exemple.php"); ?></td>
	
	<td>Constructeur : <input type="text" name="Constructeur"></td>
	<td>NumSérie : <input type="text" name="NumSérie"></td>
	<td>Date_Application : 	
	<input type=text name="ldate" value="" size=10 READONLY>
	<input type=button value="¤" onclick="pop('ldate','fr');this.style.cursor='hand'">

	</td>
	</tr>
	</table>
	<input type="submit" value="Valider">
	<input type="reset" value="Effacer">
	</form>
	</body>
</html>


sinon effectivement je pense que c'est comme pour la liste déroulante, Date_Application ne doit pas etre défini, d'ailleurs easyphp me donne ce message d'erreur :
Notice: Undefined index: Date_Application in D:\Program Files\EasyPHP-5.3.3\www\verif.php on line 14

Désolé je débute même si je pense ne plus être très loin du but !
merci encore à toi de te pencher sur mon cas !
0
mario002e Messages postés 82 Date d'inscription samedi 29 septembre 2007 Statut Membre Dernière intervention 8 mai 2012 6
5 nov. 2010 à 12:51
Ces librairies que tu utilises pour le calendrier se bases sur les id et non les noms des champs.
Essaye <input type=text name="ldate" id="ldate" value="" size=10 READONLY>
0
Je suis allé un peu vite, j'ai remplacé "ldate" par "Date_Application" (mon calendrier ne marchait plus je ne sais pas pourquoi)
et la aucun message d'erreur à l'envoi du formulaire !

Cependant toujours rien ne s'affiche dans le champ Date_Application de ma base de données, surement à cause des formats qui sont différents, je pense et j'espère que ça marchera en changeant, peux tu donc m'indiquer la marche à suivre pour insérer strtotime ?

Je vais essayer de trouver sur google à côté ;)
0
Génial ! ça marche !

Un grand merci à toi tu m'enleves une belle épine du pied !
juste avant le weekend, d'ailleurs je te souhaite un bon weekend !
0
mario002e Messages postés 82 Date d'inscription samedi 29 septembre 2007 Statut Membre Dernière intervention 8 mai 2012 6
5 nov. 2010 à 13:17
Merci
0