bonjour je souhaiterais inserer le contenu de plusieurs formulaires dans ma table. la table est: bon(code, Numbon,client,date)
le traitement de la page:

<?php
//require_once('connexion.php');

try{
$bdd=new pdo('mysql: host=localhost;dbname=escfinal;charset=uft8', 'root','');

}
catch(Exception $e)
{
die ('Erreur:'. $e->getMessage());
}
$prod=$_POST['ch0'];
$prix=$_POST['bh1'];
$quant=$_POST['dh2'];
$date=$_POST['date'];
$bon=$_POST['bonre'];
 $cli=$_POST['client'];
 //$bdd->exec('INSERT INTO bon(codebon,Numbon,client, date) VALUES(' ','$bon','$cli','$date')';
 //for($i=1;$i<11;$i++) 
//{
  //  if($i!=1){$rq.=",";}
  //  $rq.="(".$value[$i][1].",".$value[$i][2].",".$value[$i][3].")";
//echo 'Le jeu a bien été ajouté !';

 $req = $bdd->prepare('INSERT INTO produit(codebonrecus,libelleProduit, pu, qtecom,date,qtestock,codeprofoerma) VALUES(:codebon, :produit, :pu, :qteco, :date, :qtesto,:codepro)');
  $req->execute(array(
    'codebon' => $bon,
    'produit' => $prod,
    'pu' => $prix,
    'qteco' => $quant,
    'date' => $date,
    'qtesto' => '',
      'codepro' => ''
    ));

$req->closeCursor();

// $req="insert into bon values ('','$bon','$cli','$date')";
 //$test=mysql_query($req) or die(mysql_error());
//$sql='insert into produit (code_produit,codebonrecus,libelleProduit,pu,qtecom,date,qtestock,codeprofoerma)
//VALUES';

 //echo $pro="insert into produit (code_produit,codebonrecus,libelleProduit,pu,qtecom,date,qtestock,codeprofoerma)
//  values('','$bon','$prod','$prix','$quant','$date','','')";
// mysql_query($pro) or die (mysql_error());

header('location:index.php?page=page_comRecu_test');

?>

8 réponses


Bonjour,

OLALA attends on reprend les bases édite ton post met :

  • tes formulaires
  • ta table
  • ton code bien coloriser

et après on va pouvoir t'aider la y a rien pour bosser

bon courage à toi

Bonjour.

bonjour je souhaiterais inserer le contenu de plusieurs formulaires dans ma table

Pour commencer, tu ne peux soumettre qu''un seul formulaire à la fois et non plusieurs, il te faut donc soit faire un formulaire global pour toutes les données à soumettre, soit faire tes différents formulaires et les traiter séparément.
Ensuite, comme il te l'a été dit précédemment, corriges le contenu de ton sujet en mettant la balise de code à la ligne suivante et non sur la même ligne que ta phrase, car tu ne sembles même pas avoir vérifié ce que tu avais posté et ajoutes les autres codes comme il t'a également été dit précédemment.

Legeek
Auteur

voici la page

<html>
<head>
<link href="bootstrap-3.3.2-dist/css/bootstrap-theme.min.css" rel="stylesheet" type="text/css">
<link href="bootstrap-3.3.2-dist/css/bootstrap-theme.css" rel="stylesheet" type="text/css">
<link href="bootstrap-3.3.2-dist/js/bootstrap.js" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.Style1 {
    font-family: Geneva, Arial, Helvetica, sans-serif;
    font-style: italic;
    font-weight: bold;
}
.Style2 {font-size: large}
-->
</style>
<link href="bootstrap-3.3.2-dist/css/bootstrap.css" rel="stylesheet" type="text/css">
<p>&nbsp;</p>
<p> <span style="font-style: italic">
  <marquee style="color:#FF0000">
  <span class="Style2">      BIENVENUE CHEZ ESC TECHNOLOGY  </span>
  </marquee>
</span>  </p>

<script type="text/javascript">

var c,c2, ch, b,b2,bh,d,d2,dh,ch0, ch1, ch2;

// ajouter un champ avec son "name" 
function plus(){

c=document.getElementById('cadre');
c2=c.getElementsByTagName('input');
ch=document.createElement('input');

ch.setAttribute('type','text');
ch.setAttribute('name','ch'+c2.length);
ch.setAttribute('placeholder','produit');
ch.setAttribute('required','required');
ch.setAttribute('size','25');
c.appendChild(ch);
document.getElementById('sup').style.display='inline';

 b=document.getElementById('cadre');
b2=b.getElementsByTagName('input');
bh=document.createElement('input');

bh.setAttribute('type','text');
bh.setAttribute('name','bh'+b2.length);
bh.setAttribute('placeholder','prix');
bh.setAttribute('required','required');
bh.setAttribute('size','25');

b.appendChild(bh);
document.getElementById('sup').style.display='inline';

d=document.getElementById('cadre');
d2=d.getElementsByTagName('input');
dh=document.createElement('input');

dh.setAttribute('type','text');
dh.setAttribute('name','dh'+d2.length);
dh.setAttribute('placeholder','quantité');
dh.setAttribute('required','required');
dh.setAttribute('size','25');

d.appendChild(dh);
document.getElementById('sup').style.display='inline';
}

// supprimer le dernier champ;
function moins(){
if(c2.length>0){c.removeChild(c2[c2.length-1])}
if(c2.length==0){document.getElementById('sup').style.display='none'};

if(b2.length>0){c.removeChild(b2[b2.length-1])}
if(b2.length==0){document.getElementById('sup').style.display='none'};

if(d2.length>0){c.removeChild(d2[d2.length-1])}
if(d2.length==0){document.getElementById('sup').style.display='none'};
}

</script>
</head>
 <fieldset style=" height:250px;">
 <h1>
   <legend><em>Enregistrement des bons de commandes re&ccedil;us </em></legend>
 </h1>
 <form id="frm" method="post" action="traitement_commande.php" >

             <table width="324" border="0">
               <tr>
                 <td width="80"><span class="Style1">N&deg;bon</span></td>
                 <td width="234"><label>
                   <input type="text" name="bonre">
                 </label></td>
               </tr>
               <tr>
                 <td><span class="Style1">Client</span>: </td>
                 <td><select name="client" id="client" required="required">
                   <?php
         echo "<option></option> ";
         require_once('connexion.php');
         $afichcli=mysql_query("select DISTINCT raison_sociale from client") or die (mysql_error());
         while($row=mysql_fetch_array($afichcli))
         {
           echo"<option>$row[0]</option>";

         }
         echo"</select>";
         ?>
                 </select></td>
               </tr>
               <tr>
                 <td><span class="Style1">Date Reception </span></td>
                 <td><label>
                   <input type="text" name="date" required="required" value="<?php
            $datetime=date("d-m-Y");
            echo $datetime;
            ?>"/>
                 </label></td>
               </tr>
             </table>

   <div id="cadre" style="margin-left:1px;width:1px; margin-right:1px; background-position:center; display:inline"></div>

<p>
<input type= "button"  name="=ajout" value="ajouter produit" onClick="plus()" class="btn-success"/> 
<input type="submit" value="valider" class="btn-primary"/>
<input type="button" style="display:none" id="sup" value="supprimer" onClick="moins()" class="btn-danger" />
</p>
</form>
</fieldset>
</html>

Alors, il y a plusieurs choses qui ne vont pas.

  1. tu devrais éviter d'utiliser mysql, mais plutôt soit utiliser mysqli ou alors PDO, d'ailleurs ce que je ne comprends pas, c'est pourquoi tu utilises deux types de méthodes pour le SQL au lieu de n'en utiliser qu'une seule ?
  2. tu devrais peut-être revoir la conception de certains éléments d'un formulaire, car pour rappel, si tu ne spécifies pas de valeur à tes options, ton select ne risque pas d'être bien utile.
  3. tu parles de plusieurs formulaires, mais personnellement, je n'en voit qu'un seul sur la page.
  4. tu ne devrais pas avoir de balise du genre <p> ou autre dans le <head> surtout que si tu veux définir un titre à ta page pour qu'elle soit affiché dans l'onglet du navigateur par exemple, il te faut utiliser la balise <title> et ne pas utiliser de balise de formatage, car de toute manière même si tu mets des balises de type <strong> par exemple (donc de formatage) elles ne seront pas interprété par les navigateurs.
  5. tu n'as pas de balise <body> dans ta page.

Conclusion, je te recommande fortement de revoir comment utiliser le HTML.

Legeek
Auteur

j'utilise PDO
en fait a chaque clic de mon bouton ajouter il y'a des champs qui sont crées automatiquement que je dois renseigner et après quoi les enregistrer dans ma base de donnée avec le bouton validé mais le souci est que quand je valide c'est les enregistrements du 1er clic seulement qui s'enregistre en tant je veux tous les enregistrer. Merci et concernant le côté html je vais revoir

j'utilise PDO

Excuses moi, mais pour moi, ceci :

$afichcli=mysql_query("select DISTINCT raison_sociale from client") or die (mysql_error());

Puis :

$test=mysql_query($req) or die(mysql_error());

Et :

mysql_query($pro) or die (mysql_error());

Ce ne sont pas des requêtes SQL faîtes avec PDO.

Legeek
Auteur

oui oui je le sais mais le côté que je veux gerer c'est le pdo j'utilise j'avais commencer le projet avec mysql

Legeek
Auteur

pouvez me donner une idée