Comment ajouter des données à la bdd??

Princess -  
twix_et_chocobon Messages postés 190 Statut Membre -
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
 
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 190 Statut Membre 665
 
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
Princess
 
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 190 Statut Membre 665
 
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
Princess
 
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 190 Statut Membre 665
 
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
 
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 190 Statut Membre 665
 
Bonjour,

juste une question, c'est quoi le now() dansta requète sql ?
0
Princess
 
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 190 Statut Membre 665
 
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 297 Statut Membre 36
 
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
 
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
Princess
 
C'est fait merci..Mais toujours rien ne s'ajoute à la BDD !
0
Utilisateur anonyme
 
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
Princess
 
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 190 Statut Membre 665
 
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
 
Fais un print_r($_POST); au tout début du script.
0
Princess
 
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
 
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
Princess
 
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
 
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
Princess
 
<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
 
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
Princess
 
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 190 Statut Membre 665
 
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
 
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 190 Statut Membre 665
 
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 190 Statut Membre 665
 
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
 
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 190 Statut Membre 665
 
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 190 Statut Membre 665
 
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
Princess
 
Je veux récupérer le No_immatriculation qu'il va saisir dans le formulaire..
0
twix_et_chocobon Messages postés 190 Statut Membre 665
 
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
 
Relis ce que j'ai écrit dans un message précédent sur le <input type=text name="$_POST['No_Moteur']">
0
Princess
 
J'ai modifié merci mais on m'affiche une erreu tel que le No_immatriculation n'est pas définit!
0