Comment ajouter des données à la bdd??

Fermé
Signaler
-
Messages postés
181
Date d'inscription
mardi 24 juillet 2012
Statut
Membre
Dernière intervention
21 août 2012
-
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();
?>

19 réponses


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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

Messages postés
181
Date d'inscription
mardi 24 juillet 2012
Statut
Membre
Dernière intervention
21 août 2012
656
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

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

Messages postés
181
Date d'inscription
mardi 24 juillet 2012
Statut
Membre
Dernière intervention
21 août 2012
656
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
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???
Messages postés
181
Date d'inscription
mardi 24 juillet 2012
Statut
Membre
Dernière intervention
21 août 2012
656
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
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.
Messages postés
181
Date d'inscription
mardi 24 juillet 2012
Statut
Membre
Dernière intervention
21 août 2012
656
+1 pour le père.

je savais que c'etait un probleme de immatriculation mais je lmes trouvais identique.. j'arrivais pas à voir la différence entre les deux ^^

donc la oui c'est normal ci rien n'etait retourné pour immatriculation. La ça marchera maintenant :)
Messages postés
181
Date d'inscription
mardi 24 juillet 2012
Statut
Membre
Dernière intervention
21 août 2012
656
Bonjour,

juste une question, c'est quoi le now() dansta requète sql ?
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())");
Messages postés
181
Date d'inscription
mardi 24 juillet 2012
Statut
Membre
Dernière intervention
21 août 2012
656
et donc ta requète est bien de la forme suivante ?? si non essais de retester comme cela .
Messages postés
284
Date d'inscription
dimanche 6 décembre 2009
Statut
Membre
Dernière intervention
6 décembre 2013
35
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

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())");
C'est fait merci..Mais toujours rien ne s'ajoute à la BDD !

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());
Toujours rien ! L'erreur est bien avant ..Et pourtant je crois que ma condition IF est bien écrite non?!
Messages postés
181
Date d'inscription
mardi 24 juillet 2012
Statut
Membre
Dernière intervention
21 août 2012
656
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' ].


Fais un print_r($_POST); au tout début du script.
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

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.
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..

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 ?
<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!!!!

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.
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 )
Messages postés
181
Date d'inscription
mardi 24 juillet 2012
Statut
Membre
Dernière intervention
21 août 2012
656
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; ?> />

Messages postés
181
Date d'inscription
mardi 24 juillet 2012
Statut
Membre
Dernière intervention
21 août 2012
656
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"
Utilisateur anonyme
pas obligatoire donc pas une erreur.
le " ; " n'est pas pour la fermeture de sa balise "?>" mais plutot pour l'insturction "echo"
1 - Je n'ai jamais dit qu'il était POUR la balise ?>
2 - il N'EST PAS non plus pour l'instruction echo.
Le ";" sert à séparer deux instructions. Comme justement, il n'y a plus d'autre instruction quand on arrive à la balise ?>, il n'y a pas besoin de séparer.
Messages postés
181
Date d'inscription
mardi 24 juillet 2012
Statut
Membre
Dernière intervention
21 août 2012
656
le " ; " set à dire au programme "fin de l'instruction" donc il est quand même bien de mettre ce ";" .

Dans les manuels de php , cette instruction ( meme non suivi d'autre instruction) est noté comme ceci ..
Messages postés
181
Date d'inscription
mardi 24 juillet 2012
Statut
Membre
Dernière intervention
21 août 2012
656
je connais d'autre site qui ne donne pas la même version ..
mais pour ne pas prendre de mauvaise habitude ou tout simplement oublier ce point virgule, il vaut mieux le mettre apres une instructions
Messages postés
181
Date d'inscription
mardi 24 juillet 2012
Statut
Membre
Dernière intervention
21 août 2012
656
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 ?


Je veux récupérer le No_immatriculation qu'il va saisir dans le formulaire..
Messages postés
181
Date d'inscription
mardi 24 juillet 2012
Statut
Membre
Dernière intervention
21 août 2012
656
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

Relis ce que j'ai écrit dans un message précédent sur le <input type=text name="$_POST['No_Moteur']">
J'ai modifié merci mais on m'affiche une erreu tel que le No_immatriculation n'est pas définit!