Comment ajouter des données à la bdd??

Fermé
Princess - 3 août 2012 à 14:21
twix_et_chocobon Messages postés 181 Date d'inscription mardi 24 juillet 2012 Statut Membre Dernière intervention 21 août 2012 - 9 août 2012 à 08:49
Bonjour tout le monde
Alors voila je suis novice en programmation php et on m'a demander d'ajouter des données à ma bdd
J'ai essayer d'eci un code mais ça ne marche pas :((
I need you help !!
Je vous remercie en avance :)))

Voila mon code

<?php include("menu.php");
include("connexion.php");
if(isset($_POST['No_Immatriculation']) && $_POST['No_Immatriculation']!='')
{
$No_Immatriculation = intval(mysql_real_escape_string($_POST['No_Immatriculation']));
$No_Moteur = intval(mysql_real_escape_string($_POST['No_Moteur']));
$Puissance = intval(mysql_real_escape_string($_POST['Puissance']));
$Dimension = intval(mysql_real_escape_string($_POST['Dimension']));
$Marque = (mysql_real_escape_string($_POST['Marque']));
$Genre = (mysql_real_escape_string($_POST['Genre']));
$No_Immatriculation = $_POST['No_Moteur'];
$Puissance = $_POST['Puissance'];
$Dimension = $_POST['Dimension'];
$Marque = $_POST['Marque'];
$Genre = $_POST['Genre'];
mysql_query("INSERT INTO Vehicule(No_Immatriculation, No_Moteur, Puissance, Dimension, Marque, Genre ) VALUES('','$No_Immatriculation','$No_Moteur','$Puissance', NOW(), '$Dimension', '$Marque', '$Genre')");
}

echo ' Le Vehicule a bien été enregistrée.';
mysql_close();
?>
A voir également:

19 réponses

Utilisateur anonyme
7 août 2012 à 14:27
Donc effectivement, tout est bien dans une seule et même FORM. Pas de problème de ce côté.

Par contre, il ne devrait pas y avoir deux fois include "connexion.php". Et que fait la balise <HTML> à cet endroit ?

Et relis ce que j'ai écrit dans mon message précédent sur le <input type=text name="$_POST['No_Moteur']">
1
twix_et_chocobon Messages postés 181 Date d'inscription mardi 24 juillet 2012 Statut Membre Dernière intervention 21 août 2012 665
7 août 2012 à 15:28
je te conseille donc de mettre les deux fichier en .php

le premier qui contient ton formulaire :
<?php 

include("menu.php");  
include("connexion.php"); 

?>


<HTML> 
	<div align="center">
		<form action="ajouter2.php" method="post"> 
	
			<label for="No_Immatriculation"><strong>No_Immatriculation</strong></label>
			<input type="text" name="No_Immatriculation" id="No_Immatriculation"/> 
			<BR> <BR> 

			<label for="No_Moteur"><strong>No_Moteur</strong></label>
			<input type="text" name="No_Moteur" id="No_Moteur"/> 
			<BR> <BR> 
			
			<label for="Puissance"><strong>Puissance</strong></label>
			<input type="text" name="Puissance" id="Puissance"/> 
			<BR> <BR> 
			
			<label for="Dimension"><strong>Dimension</strong></label>
			<input type="text" name="Dimension" id="Dimension"/> 
			<BR> <BR> 

			<?php 
			$rq = "Select Marque From vehicule"; 
			$result = mysql_query($rq) 
			or die ("Exécution de la requête impossible" ); 
			echo"Marque"; 
			echo "<select name='Marque' id='Marque'>"; 
			while ($liste=mysql_fetch_array($result)) 
			{ 
				extract($liste); 
				echo "<option value='$Marque'>$Marque</option>"; 
			} 
			echo " </select>"; 
			echo " <BR>"; 


			$rq = "Select Genre From vehicule"; 
			$result = mysql_query($rq) 
			or die ("Exécution de la requête impossible" ); 
			echo"Genre"; 
			echo "<select name='Genre' id='Genre'>"; 
			while ($liste=mysql_fetch_array($result)) 
			{ 
				extract($liste); 
				echo "<option value='$Genre'>$Genre</option>"; 
			} 
			echo " </select>"; 
			echo " <BR><BR>"; 


			$rq = "SELECT distinct Id_Type FROM vehicule"; 
			$result = mysql_query($rq) 
			or die ("Exécution de la requête impossible" ); 
			echo"Id_Type"; 
			echo "<select name='Id_Type' id='Id_Type>"; 
			while ($liste=mysql_fetch_array($result)) 
			{ 
				extract($liste); 
				echo "<option value='$Id_Type'>$Id_Type</option>"; 
			} 
			echo " </select>"; 
			echo " <BR><BR>"; 
			?> 

			<input type="submit" value="Ok"> 

		</form> 
	</div>
</HTML> 



et le deuxieme qui est le fichier .php ou tu es rediriger quand tu clique sur submit ( ici tu as choisis ajouter2.php )


<html> 
	<head>
	</head>
</html>

<?php 

if (isset ($_POST['No_Immatriculation']))
{
	$No_Immatriculation=$_POST['No_Immatriculation'];
}

if (isset ($_POST['No_Moteur']))
{
	$No_Moteur=$_POST['No_Moteur'];
}

if (isset ($_POST['Puissance']))
{
	$Puissance=$_POST['Puissance'];
}

if (isset ($_POST['Dimension']))
{
	$Dimension=$_POST['Dimension'];
}

if (isset ($_POST['Marque']))
{
	$Marque=$_POST['Marque'];
}

if (isset ($_POST['Genre']))
{
	$Genre=$_POST['Genre'];
}

if (isset ($_POST['Id_Type']))
{
	$Id_Type=$_POST['Id_Type'];
}


// et la ensuite tu peux faire tes requetes d'ajout a la base de données avec les valeur ci dessus
?>


tu peux toujours tester ça si ça marche
1
Merci Twix pour le code mais ça ne marche pas n'en plus!!
On m'affiche tjrs une erreur au niveau de la requête


mysql_query("INSERT INTO vehicule(No_immatriculation, No_Moteur, Puissance, Dimension, Marque, Genre,Id_Type ) VALUES('$No_immatriculation','$No_Moteur,$Puissance', '$Dimension', '$Marque', '$Genre','$Id_Type')");



L'erreur: Notice: Undefined variable: No_immatriculation
0
twix_et_chocobon Messages postés 181 Date d'inscription mardi 24 juillet 2012 Statut Membre Dernière intervention 21 août 2012 665
7 août 2012 à 15:49
mais pour les autres aucun message d'erreur?

regarde dans ta base de données le nom exacte que tu as donné

peux tu copier la structure de ta table stp
0
Aucun message d'erreur pour les autres

vehicule
Colonne Type Null Défaut Commentaires MIME
No_immatriculation varchar(20) Non
No_Moteur int(20) Non
Puissance int(20) Non
Dimension int(20) Non
Marque varchar(20) Non
Genre varchar(20) Non
Id_Type int(20) Non


Est ce que le fait que No_immatriculation est une clé primaire peut causer cette erreur???
0
twix_et_chocobon Messages postés 181 Date d'inscription mardi 24 juillet 2012 Statut Membre Dernière intervention 21 août 2012 665
7 août 2012 à 16:59
c'est bizarre franchement que ce soit juste au niveau de immatriculation.
teste une echo dans le isset pour voir si il le récupere bien et enleve la clé primaire sur immatriculation pour voir
0
Utilisateur anonyme
8 août 2012 à 22:39
Aucun rapport avec la bdd, cela n'empêcherait pas la définition de la variable $No_immatriculation.
Le problème, c'est tout simplement comme le dit le message, que cette variable n'est pas définie.
C'est $No_Immatriculation qui est défini.
La différence, c'est le i majuscule / minuscule de immatriculation.
PHP est sensible à la casse dans les noms de variables.
0
twix_et_chocobon Messages postés 181 Date d'inscription mardi 24 juillet 2012 Statut Membre Dernière intervention 21 août 2012 665
3 août 2012 à 14:29
Bonjour,

juste une question, c'est quoi le now() dansta requète sql ?
0
c'est pour afficher la date de l'ajout j'ai oublié de la mentionner dans la requête dsl

mysql_query("INSERT INTO Vehicule(No_Immatriculation, No_Moteur, Puissance, Dimension, Marque, Genre ,Date) VALUES('','$No_Immatriculation','$No_Moteur','$Puissance', '$Dimension', '$Marque', '$Genre', NOW())");
0
twix_et_chocobon Messages postés 181 Date d'inscription mardi 24 juillet 2012 Statut Membre Dernière intervention 21 août 2012 665
3 août 2012 à 15:09
et donc ta requète est bien de la forme suivante ?? si non essais de retester comme cela .
0

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

Posez votre question
KiKiLeMMerDeuR Messages postés 284 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 6 décembre 2013 36
Modifié par KiKiLeMMerDeuR le 3/08/2012 à 15:29
La requête est mauvaise : le nombre de champs dans lesquels vous faites votre INSERT est de 6 alors que vous voulez insérer 8 valeurs.
Si vous voulez insérer une valeur pour tous les champs de la table, ce qui semble etre votre cas, il n'y a pas besoin de préciser leur nom. Il suffit de faire :
mysql_query("INSERT INTO Vehicule VALUES('','".$No_Immatriculation."','".$No_Moteur."','".$Puissance."','".now()."','".$Dimension."','".$Marque."','".$Genre."')");

Attention bien sûr à respecter l'ordre des champs
0
Utilisateur anonyme
3 août 2012 à 16:39
Bonjour

Tu as un '' en trop au début de tes VALUES.
Soit tu ajoutes le nom du champ correspondant (un autoincrément) au début de la liste de tes champs, soit tu enlèves ce ''. Car actuellement, tu donnes 7 champs et 8 valeurs
mysql_query("INSERT INTO Vehicule(No_Immatriculation, No_Moteur, Puissance, Dimension, Marque, Genre ,Date) VALUES('$No_Immatriculation','$No_Moteur','$Puissance', '$Dimension', '$Marque', '$Genre', NOW())");
0
C'est fait merci..Mais toujours rien ne s'ajoute à la BDD !
0
Utilisateur anonyme
6 août 2012 à 13:46
Pour voir si tu y passes bien, et s'il y a une erreur :

echo 'oui je passe bien ici';
mysql_query("INSERT INTO Vehicule(No_Immatriculation, No_Moteur, Puissance, Dimension, Marque, Genre ,Date) VALUES('$No_Immatriculation','$No_Moteur','$Puissance', '$Dimension', '$Marque', '$Genre', NOW())") or die(mysql_error());
0
Toujours rien ! L'erreur est bien avant ..Et pourtant je crois que ma condition IF est bien écrite non?!
0
twix_et_chocobon Messages postés 181 Date d'inscription mardi 24 juillet 2012 Statut Membre Dernière intervention 21 août 2012 665
6 août 2012 à 14:22
Bonjour,

essaie de faire des echo de chacune de tes valeurs pour voir si il les récupere bien . et meme avant ta boucle if, teste $_POST['No_Immatriculation']) et $_POST['No_Immatriculation' ].

0
Utilisateur anonyme
6 août 2012 à 14:38
Fais un print_r($_POST); au tout début du script.
0
Merci à vous..
Le problème se posait au niveau du script ajouter1 et pas à celui que j'ai posté!!
Alors voila ma question comment peut on envoyer les données de 2 formulaires différents (php et html) avec un seul submit
0
Utilisateur anonyme
6 août 2012 à 15:15
envoyer les données de 2 formulaires différents (php et html) avec un seul submit
Que veux-tu dire ? Si tu as deux formulaires, tu as bien deux boutons submit, non ?
En tant qu'utilisateur, j'ai du mal à imaginer que quand je clique sur le bouton d'un formulaire, les données de l'autre formulaire soient envoyées aussi. Si c'est ce que tu veux, tu aurais dû rassembler tes formulaires en un seul.
0
Pour insérer les nouvelles données dans ma BDD je dois entrer un no d'immatriculation,no de moteur ect..(pour cela j'ai utilisé le html ) et sélectionner une marque et un genre qui existait déjà dans la BDD (j'ai utilisé le php pour importer mes données de la BDD)
C'est pour ça que j'aurais besoin d'un seul submit pour valider les champs entrés(no immatriculation ect..) et les champs sélectionnés(la Marque et le Gzenre)
J'espère que j'ai été claire..
0
Utilisateur anonyme
6 août 2012 à 16:46
Non, pas clair du tout. Je ne vois pas l'intérêt d'avoir deux formulaires séparés, s'ils concernent une seule et même demande. Qu'est-ce qui t'empêche de mettre tous tes champs de saisie, que ce soit ton numéro d'immatriculation, de moteur, etc... et ta sélection de marque et de genre dans un seul et même formulaire ?
0
<HTML>
<body>
<form action='ajouter2.php' method='POST'>
Dimension  
<input type=text name="$_POST['No_Moteur']"> <BR>

<?php
$rq = "SELECT distinct Marque FROM vehicule";
$result = mysql_query($rq)
or die ("Exécution de la requête impossible" );
echo"Marque 
echo "<select name='Marque'>";
while ($liste=mysql_fetch_array($result))
{
extract($liste);
echo "<option value='$Marque'>$Marque</option>";
}
echo " </select>";
echo " <BR>";



Voila un extrait de mon code..Réunir le menu déroulant et le champs texte sous une seule balise <FORM> ne fonctionne pas!!!!
0
Utilisateur anonyme
7 août 2012 à 13:57
Est-ce un seul extrait ou deux extraits de ton code ?

On ne voit pas la balise </form>. En supposant qu'elle se situe plus loin, tout est donc dans une seule et même balise form.

Par contre, ton code est très bizarre..
<input type=text name="$_POST['No_Moteur']"> <BR> Si tu veux vraiment donner au champ le numéro de moteur comme nom (je ne vois pas l'intérêt) tu aurais dû écrire :
<input type=text name="<?php echo $_POST['No_Moteur'] ?>"> <BR> 

Mais je pense plutôt que tu voulais faire :

<input type=text name="No_Moteur" value = "<?php echo isset($_POST['No_Moteur']? $_POST['No_Moteur']:''?>"> <BR> 

Pour afficher le numéro de moteur déjà saisi dans un champ qui s'appelle No_Moteur
echo"Marque Cette ligne est incomplète, il manque au moins "; à la fin. Si elle est incomplète, c'est que tu n'as pas fait un copier-coller, et que tu fais des erreurs en recopiant ton code. Il est difficile de t'aider si le code que tu donnes ne correspond pas à celui que tu as réellement.
0
Voila un copier coller de tout mon code avec qlq modifications





<?php include("menu.php"); ?>
<?php include("connexion.php"); ?>
<div align="center"><HTML>
<form action='ajouter2.php' method='post'>
No_Immatriculation
<input type=text name="<?php echo $_POST['No_Immatriculation'] ?>"> <BR> <BR>

No_Moteur
<input type=text name="<?php echo $_POST['No_Moteur'] ?>"> <BR> <BR>

Puissance
<input type=text name="<?php echo $_POST['Puissance'] ?>"> <BR> <BR>

Dimension
<input type=text name="<?php echo $_POST['Dimension'] ?>"> <BR> <BR>


<?php
include("connexion.php");
$rq = "Select Marque From vehicule";
$result = mysql_query($rq)
or die ("Exécution de la requête impossible" );
echo"Marque";
echo "<select name='Marque'>";
while ($liste=mysql_fetch_array($result))
{
extract($liste);
echo "<option value='$Marque'>$Marque</option>";
}
echo " </select>";
echo " <BR>";


$rq = "Select Genre From vehicule";
$result = mysql_query($rq)
or die ("Exécution de la requête impossible" );
echo"Genre";
echo "<select name='Genre'>";
while ($liste=mysql_fetch_array($result))
{
extract($liste);
echo "<option value='$Genre'>$Genre</option>";
}
echo " </select>";
echo " <BR><BR>";


$rq = "SELECT distinct Id_Type FROM vehicule";
$result = mysql_query($rq)
or die ("Exécution de la requête impossible" );
echo"Id_Type";
echo "<select name='Id_Type'>";
while ($liste=mysql_fetch_array($result))
{
extract($liste);
echo "<option value='$Id_Type'>$Id_Type</option>";
}
echo " </select>";
echo " <BR><BR>";
?>

<input type="submit" value="Ok">
</div>
</form>
</HTML>











Et cette fois ci quand je clique sur ok on m'affiche


Array ( [ Notice:__Undefined_index:_No_Immatriculation_in_C:\Program_Files\EasyPHP-5_3_8_0\www\formulaireajout_php_on_line_6 ] => [ Notice:__Undefined_index:_No_Moteur_in_C:\Program_Files\EasyPHP-5_3_8_0\www\formulaireajout_php_on_line_9 ] => [ Notice:__Undefined_index:_Puissance_in_C:\Program_Files\EasyPHP-5_3_8_0\www\formulaireajout_php_on_line_12 ] => [ Notice:__Undefined_index:_Dimension_in_C:\Program_Files\EasyPHP-5_3_8_0\www\formulaireajout_php_on_line_15 ] => [Marque] => Peugeot [Genre] => VU [Id_Type] => 2 )
0
twix_et_chocobon Messages postés 181 Date d'inscription mardi 24 juillet 2012 Statut Membre Dernière intervention 21 août 2012 665
7 août 2012 à 14:36
la syntaxe de tes input est mauvaise :

essaie de remplacer ca :

<input type=text name="<?php echo $_POST['No_Immatriculation'] ?>">

par ça :

<?php $No_Immatriculation = $_POST['No_Immatriculation']; ?>
<input type=text name= <?php echo $No_Immatriculation; ?> />

0
Utilisateur anonyme
7 août 2012 à 14:40
La syntaxe était correcte. Ou alors, précise ce qu'il y a d'incorrect, car je ne le vois pas.
Ce qui n'est pas correct, c'est que $_POST['No_Immatriculation'] n'est pas défini, mais ta modification n'y changera rien.
0
twix_et_chocobon Messages postés 181 Date d'inscription mardi 24 juillet 2012 Statut Membre Dernière intervention 21 août 2012 665
7 août 2012 à 14:46
ce qu'il y a de non correct correct selon moi :

- elle ne ferme pas sa balise input : a la fin au lieu de seulement " > "elle devrait mettre " />"

- il manque un "; " après son instruction en php dans le input

- pas besoin de mettre l'instruction php entre " "

- on devrait plutot marquer type="text" au lieu de type=text ( j'ai oublié de corriger )

mais après c'est juste mon avis...
0
twix_et_chocobon Messages postés 181 Date d'inscription mardi 24 juillet 2012 Statut Membre Dernière intervention 21 août 2012 665
7 août 2012 à 14:49
après c'est vrai que l'on peut mettre directement le echo dans le input, c'est juste une histoire de syntaxe ça c'est une détail.
0
Utilisateur anonyme
7 août 2012 à 15:13
La fermeture de la balise par /> n'est pas obligatoire en html simple. Pas plus que les " autour de type = "text".
- il manque un "; " après son instruction en php dans le input Le point virgule n'est pas et n'a jamais été nécessaire avant la balise de fermeture ?>
- pas besoin de mettre l'instruction php entre " " : Ce n'est pas l'instruction php qui est entre ", c'est la valeur du name=""
Bref, il n'a avait aucune erreur de syntaxe
0
twix_et_chocobon Messages postés 181 Date d'inscription mardi 24 juillet 2012 Statut Membre Dernière intervention 21 août 2012 665
7 août 2012 à 15:38
pas obligatoire mais tellement mieux quand on met une syntaxe correcte..

le " ; " n'est pas pour la fermeture de sa balise "?>" mais plutot pour l'insturction "echo"
0
twix_et_chocobon Messages postés 181 Date d'inscription mardi 24 juillet 2012 Statut Membre Dernière intervention 21 août 2012 665
7 août 2012 à 15:02
Je voudrais une petite precision de ta part princess :

lorsque tu écris :

<input type=text name="<?php echo $_POST['No_Immatriculation'] ?>"> <BR> <BR> 

No_Moteur 
<input type=text name="<?php echo $_POST['No_Moteur'] ?>"> <BR> <BR> 

Puissance 
<input type=text name="<?php echo $_POST['Puissance'] ?>"> <BR> <BR> 

Dimension 
<input type=text name="<?php echo $_POST['Dimension'] ?>"> <BR> <BR> 



que veut tu afficher en fait ? tu veux quil affiche ce que l'utilisateur a deja saisi ??

ou récupère t'il echo $_POST['No_Immatriculation'] ??

ce que tu veux faire c'est en fait afficher le numero d'immatriculation qui est deja saisie dans le formulaire ? dans la base de donnée ? ou recuperer justement le no_immatriculatiuon qu'il va saisir dans le formulaire ?


0
Je veux récupérer le No_immatriculation qu'il va saisir dans le formulaire..
0
twix_et_chocobon Messages postés 181 Date d'inscription mardi 24 juillet 2012 Statut Membre Dernière intervention 21 août 2012 665
7 août 2012 à 15:06
ok je regarde ça , je te poste un formulaire un peu plus tard que tu pourras tester si ça marche ..
mais je te rpomet rien :s
0
Utilisateur anonyme
7 août 2012 à 15:15
Relis ce que j'ai écrit dans un message précédent sur le <input type=text name="$_POST['No_Moteur']">
0
J'ai modifié merci mais on m'affiche une erreu tel que le No_immatriculation n'est pas définit!
0