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();
?>

19 réponses

Résumé de la discussion

Le problème central porte sur l'insertion de données dans une base MySQL via PHP, le code fourni comportant plusieurs incohérences qui empêchent l'enregistrement des véhicules. Des erreurs majeures apparaissent dans la requête INSERT, avec un décalage entre les champs et les valeurs, l'usage concurrent de NOW() et des variables mal affectées. Des réponses suggèrent d'isoler le formulaire et le traitement dans deux fichiers PHP distincts, de vérifier l'existence des données POST et d'utiliser mysql_error() pour déboguer. D'autres conseils évoquent aussi d'éviter les doubles includes de connexion, de corriger la récupération des champs (No_Immatriculation, No_Moteur, Puissance, Dimension, Marque, Genre) et de vérifier la cohérence entre les colonnes et les valeurs.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. 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
  2. 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
    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
    2. 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
    3. 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
    4. 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
    5. 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
  3. twix_et_chocobon Messages postés 190 Statut Membre 665
     
    Bonjour,

    juste une question, c'est quoi le now() dansta requète sql ?
    0
  4. 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
    1. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. 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
  8. Princess
     
    C'est fait merci..Mais toujours rien ne s'ajoute à la BDD !
    0
  9. 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
    1. Princess
       
      Toujours rien ! L'erreur est bien avant ..Et pourtant je crois que ma condition IF est bien écrite non?!
      0
  10. 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
  11. Utilisateur anonyme
     
    Fais un print_r($_POST); au tout début du script.
    0
  12. 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
  13. 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
    1. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
    1. 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
    2. 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
    3. 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
    4. 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
    5. 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
  19. 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
    1. Princess
       
      Je veux récupérer le No_immatriculation qu'il va saisir dans le formulaire..
      0
    2. 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
  20. Utilisateur anonyme
     
    Relis ce que j'ai écrit dans un message précédent sur le <input type=text name="$_POST['No_Moteur']">
    0
    1. Princess
       
      J'ai modifié merci mais on m'affiche une erreu tel que le No_immatriculation n'est pas définit!
      0