Formulaire avec champs dynamiques JS + PHP

Fermé
ZooBoole - 25 janv. 2009 à 18:20
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 - 25 janv. 2009 à 23:35
Bonjour,
Ben, ma préocupation est la suivant: j'ai un petit programme "maison" que je fais en php. Le programme me permet de vendre des produits que j'airais enregistré comme stock.

A la vente, je doit fournir le :
* nom du client:
* le produit à vendre:
*la quantité:

Seulement, je voudraire vendre plusieurs produits à la fois. c'est-à-dire faire kelke chose du genre:
* nom du client:
* le produit à vendre1 / quantité1:
* le produit à vendre2 / quantité2:
* le produit à vendre3 / quantité3:
----------------infiniment--------------

J'ai donc chercher sur le net un script qui me permet de générer dynamiquement les champs (produit à vendre1 / quantité1)

Mais je n'arrive pas pas maintenant à récupérer les données de ces champs qui sont en javascript alors ke je veux le récupérer en php, faire des calculs et les enregistrer dans la base de données.

Voici le code de ma page:


<?php
if(isset($_POST['ok']) and $_POST['ok']="ok"){
if(isset($_POST["np"])){
if(isset($_POST["classe"])){
if(isset($_POST["prod[0]"]) and isset($_POST["qte[0]"])){
if(isset($_POST["sta"])){
//error_reporting(E_NOTICE ^ E_ALL);

$np=htmlentities(addslashes($_POST["np"]), ENT_QUOTES);
if($np==" "){$np="Inconnu";}
$classe=htmlentities(addslashes($_POST["classe"]), ENT_QUOTES);
$qte=addslashes($_POST["qte"]);
$status=addslashes($_POST["sta"]);
$date=time();

include"param.php";
$rq=mysql_query("SELECT * FROM stkm_restes WHERE classe='$classe'") or die(mysql_error());
$nbre=mysql_num_rows($rq);
$don=mysql_fetch_array($rq);
mysql_free_result($rq);
$pri=$don["prix"];
$qreste=$don["reste"];

if($nbre!="" and $qreste>=$qte){
mysql_query("INSERT INTO stkm_ventes VALUES ('','$classe', '$qte', '$np', '$status', '$pri', '$date')") or die(mysql_error());
$rq=mysql_query("SELECT * FROM stkm_restes WHERE classe='$classe'") or die(mysql_error());

while($o=mysql_fetch_array($rq)){
$vendu=$o["vendu"];
$reste=$o["reste"];
$vendu_f=$vendu+$qte;
$reste_f=$reste-$qte;
//$pu=$o["prix"];
//$prix_total=$qte*$pu;
mysql_query("UPDATE stkm_restes SET vendu='$vendu_f', reste='$reste_f' WHERE classe='$classe'") or die(mysql_error());
}mysql_close();

}else{$e="Le stock de ce document est insuffisant ou est terminé vous ne pouvez vendre.";}

$c="<div align='left' style=='width:200px; border:1px solid green'>
<u>Bilant de la vente:</u> <br>
Client: $np <br>
$classe: $qte | $pu | $prix_total fcfa<br>
[ <a href='javascript:history.back()' style='background-color:lightyellow; text-decoration:none'>Vendre un autre ?</a> ]";

}
}else{$e="Précisez la quantité svp.";}
}
}else{$e="Problème avec le champ 'nom client'.";}
}
?>
<head>
<script language="javascript1.4" type="text/javascript">

function ajoutTemplate(idTemplate)
{
var tableau = document.getElementById('templates');
var newRow = tableau.insertRow(tableau.rows.length-1);
var newCell = newRow.insertCell(0);
tableau.rows[(tableau.rows.length-2)].cells[0].align='left';
newCell.style.visibility="hidden";
newCell = newRow.insertCell(1);
newCell.innerHTML = '<tr><td><select name="prod['+(idTemplate-1)+']"><?php
include"param.php";
$red=mysql_query("select classe from stkm_stock ") or die(mysql_error());
while($da=mysql_fetch_array($red)){
print"<option>".$da[classe]."</option>";
}mysql_close();
?></select>  <input type="text" name="qte['+(idTemplate-1)+']]" size="1" style="height:20px; border:1px solid #cccccc; color:#990000" onkeyup="verif_nombre(this);"></td></tr>';
}
</script>
<script language="javascript1.4" type="text/javascript">

/* Pour faire une vérification sans autoriser le point ("."), suivez les instructions qui sont écrites en commentaire */

function verif_nombre(champ)
{
var chiffres = new RegExp("[0-9\.]"); /* Modifier pour : var chiffres = new RegExp("[0-9]"); */
var verif;
var points = 0; /* Supprimer cette ligne */

for(x = 0; x < champ.value.length; x++)
{
verif = chiffres.test(champ.value.charAt(x));
if(champ.value.charAt(x) == "."){points++;} /* Supprimer cette ligne */
if(points > 1){verif = false; points = 1;} /* Supprimer cette ligne */
if(verif == false){champ.value = champ.value.substr(0,x) + champ.value.substr(x+1,champ.value.length-x+1); x--;}
}

}
</script>
<style type="text/css">
select{
width:300px;
border:1px solid #cccccc;
color: #000099;
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size:10px;
}
.Style2 {
color: #0000FF;
font-size: 11px;
font-weight: bold;
}
.Style3 {
font-size: 12px;
font-weight: bold;
}
.input{
width:300px;
border:1px solid #cccccc;
color: #000099;
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size:10px;
}
.Style2 {
color: #0000FF;
font-size: 11px;
font-weight: bold;
}
.Style5 {font-size: 11px}

body{
background-image:;
background-repeat:no-repeat;
}

</style></head>

<body onLoad="ajoutTemplate()">
<?php
if(isset($c) and $e ==""){echo"
<table width='200' style='border:1px solid lightblue; margin-bottom:1px;' align='center'><tr><td>
<font color='green' size='2'>$c</font></td></tr></table>";}
if(isset($e)){echo"<b>/!\</b> <font color='red' size='2'>$e</font> <a href='javascript:history.back()'>Rectifier</a>";}
?>
<table width="100%" border="0">
<tr valign="top">
<td width="66%">
<form action="indexcon.php" method="post" enctype="multipart/form-data" name="ctrl_acc" id="ctrl_acc" target="con">
<table width="99%" border="0" table id="templates">
<tr>
<td colspan="2" style="border:0px; border-bottom:1px solid #cccccc; color:#999999"><span class="Style3">VENDRE UN LIVRE </span></td>
</tr>
<tr bgcolor="#FFFFFF" class="ven">
<td height="22"> <span class="Style2">Nom & prénom du client : </span></td>
<td width="75%">
<input type="text" name="np" size="45" class="input"/></td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><span class="Style2">Statut de la vente :</span> </td>
<td bgcolor="#FFFFFF"><input type="radio" name="sta" value="1" checked/>
<span class="Style5">Soldé</span>             
<input type="radio" name="sta" value="-1" />
<span class="Style5">Non soldé </span></td>
</tr>
<tr bgcolor="#FFFFFF" class="ven">
<td><span class="Style2">Produit / quantité: </span></td>
<td><select name="prod[0]" class="input">
<?php
include"param.php";
$red=mysql_query("select classe from stkm_stock ") or die(mysql_error());
while($da=mysql_fetch_array($red)){
print"<option>".$da[classe]."</option>";
}mysql_close();
?>
</select>
 
<input type="text" name="qte[0]" size="1" style="height:20px; border:1px solid #cccccc; color:#990000" onkeyup="verif_nombre(this);">
<input name="button" type="button" onClick="ajoutTemplate(3)" value="+"></td>
</tr>
<tr >
<td width="25%" style="border:0px; border-bottom:1px solid #cccccc; color:#999999"> </td>
<td width="75%" style="border:0px; border-bottom:1px solid #cccccc; color:#999999">
<a href="javascript:document.f.submit()">
<input type="image" name="ok" value="ok" src="img/vendre.gif" onclick="javascript:confirm('Voulez-vraiment vendre cet article ?');"/></a></td>
</tr>
</table>
</form>
<br>
<fieldset style="height:10px; border:1px solid rgb(0,435,98); color:#0000FF; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; width:96% ">
<img src="img/question.gif" width="14" height="18" align="texttop" />  <strong><u>I</u></strong>nformation sur le stock disponible
</fieldset>

<table width="99%" border="0" style="color:#000000; font-family: Geneva, Arial, Helvetica, sans-serif; font-size:10px; ">
<?php
include"param.php";
$my=mysql_query("select reste, classe, prix from stkm_restes ") or die(mysql_error());
while($nbre=mysql_fetch_array($my)){
$reste=$nbre["reste"];
$prixu=$nbre["prix"];
if($reste==1) {print("<tr bgcolor='#FFFFFF' class='evene'><td width='37%' height='22'>".$nbre["classe"]." </td><td width='44%'> $reste </td><td width='19%'>PU = $prixu</td></tr>");}
elseif($reste==""){print("<tr bgcolor='#FFFFFF' class='evene'><td width='37%' height='22'>".$nbre["classe"]."</td><td width='44%'>Aucun</td><td>PU = $prixu</td></tr>");}
else{print("<tr bgcolor='#FFFFFF' class='evene'><td width='37%' height='22'>".$nbre["classe"]."</td><td width='44%'> $reste </td><td>PU = $prixu</td></tr>"); }
}mysql_close();
?>

</table>
</form>
</tr>
</table>
</body>
</html>

1 réponse

zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 199
25 janv. 2009 à 23:35
Salut, c'est un système de panier que tu veux faire en fait. Pour ca, le mieux, c'est d'utiliser des session, genre :
$_SESSION['panier'][1]['produit'] = 'produit1';
$_SESSION['panier'][2]['produit'] = 'produit2';


et tu récupère les infos :

$x = count($_SESSION['panier']);
for ($p = 0; $p < $x; $p++)
{
    echo $_SESSION['panier'][$p]['produit'];
}

Et par pitié, utilise les balises "code" dans le forum, ça a l'avantage de garder l'indentation de ton code, honnêtement, je n'ai pas eu le courage de lire tout ton script, mais je pense que ce que je viens de te dire devrais t'aider. Et n'oublie pas de mettre
session_start(); 

au début de chaque page qui utilise les sessions.
0