Enregistrement d' un tableau d' un formulaire

Fermé
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013 - 27 avril 2010 à 09:43
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 - 3 août 2010 à 03:58
Je suis entrain de créer un site avec php, j' ai un probleme d' enregistrer un tableau qui se trouve sur un formulaire dans un base de données. En effet , j' ai fait un formulaire Appel d' Offre, et je voulais que l' internaute puisse decrire son appel d'offre avec comme champ :

produit : qté : description du prouit :

et avec bouton ajouter un produit qui crée une nouvelle ligne avec comme champ :

produit : qté : description du prouit : donc les meme champ que le premier!!

Alors comment créer ca avec javascript ?! et comment inserer les lignes de la description appel doffre dans une table description appel doffre avec comme champ produit,qte et descri-produit?
donc les $_POST["produit"] , $_POST["qte"] et $_POST["descr-produit"] sont des tableaux?!!
merci beaucoup!!
A voir également:

11 réponses

thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
29 avril 2010 à 10:31
voila pour toi une solution toute fraiche
<html >
<head>

<title>Untitled Document</title>
<script type="text/javascript">
function creerInput()
{
    //Création des éléments input
    var inputProduit = document.createElement("input");
        inputProduit.type = "text";
		inputProduit.name = "produit[]";
	var inputQte = document.createElement("input");
        inputQte.type = "text";
		inputQte.name = "qte[]";
    var inputDesc = document.createElement("input");
        inputDesc.type = "text";
		inputDesc.name = "desc[]";
 
    //Ajout de l'input au document
    document.getElementById("spanProduit").appendChild(inputProduit);
	document.getElementById("spanQte").appendChild(inputQte);
	document.getElementById("spanDesc").appendChild(inputDesc);
}

</script>
</head>

<body>
<form name="formOffre" id="formOffre" action="" method="post">
<span id="spanProduit">
Produit :
</span>
<span id="spanDesc">
Description :
</span>
<span id="spanQte">
Produit :
</span>
<br />
<input type="button" name="add" value="Ajouter" onClick="creerInput()" />
<input type="submit" name="envoyer" value="Valider" />
</form>
</body>
</html>
<?php
if (isset($_POST) ) {

    //c'est toi d'appliquer tes option d securité
	
	//tu ouvre la connexion et tu selection ta base
	mysql_connect('localhost','root','');
	mysql_select_db('ta_base');
	
	//on compte le nombre de produit saisie
	$nbProduit = count($_POST['produit']);
	
	// t'a du remarque qu'en creant les input j'ai definit les nom comme si je declarer une
	// variable de type tableau en effet c'est sa $_POST['produit'] contient un tableau de tous les produit saisie ainsi l'est qte et desc
    
	//on prepare la requete
	for ($i = 0; $i <$mnbProduit;$i++) {
	
	     $produit = $_POST['produit'][$i];
	     $desc = $_POST['desc'][$i];
		 $qte = $_POST['qte'][$i];
	     $sql = "INSERT INTO ta_table(produit,desc,qte) values ('$produit','$desc','$qte')";
		 mysql_query ($sql);
   }
}
// maintenant a toi de jouer pour la mise en forme et la securite
// encore deux ptite chose essaie de gerer les transaction dans tes requetes sql puisque c'est plusieur requete qui se succede
?>

previent moi si t'a besoin d'aide
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
30 avril 2010 à 12:51
merci bcp thunder413 je ne serai te remercier assez!! g v te mettre o courant encore une fois merci
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
30 avril 2010 à 13:34
g compri pour le coté serveur donc le script php et je t'en remercie mais sur coté html ca s'affiche pas bien!! oft je veux que la description appel d'offre soit comme un tableau, donc comme ca :

description de votre Appel d'offre
<html>
<body>
<form id="form1" name="form1" method="post" action="">
  <table width="57%" border="0">
    <tr>
      <td width="28%"><label for="textfield">Produit</label></td>
      <td width="34%"><label for="label">Qté</label></td>
      <td width="38%"><label for="label2">Description produit</label></td>
      <td width="38%">&nbsp;</td>
    </tr>
    <tr>
      <td><input type="text" name="textfield" id="textfield" /></td>
      <td><input type="text" name="textfield2" id="label" /></td>
      <td><input type="text" name="textfield3" id="label2" /></td>
      <td>ajouter un prouduit </td>
    </tr>
  </table>
</form>
</body>
</html>


et si il click sur ajouter produit je vois des inputs en bas de la première ligne du tableau ou il complete un nouveau produit!! en plus je voulais que le champs produit soit une liste donc s'il click sur le champs produit il selectionne un produit de la liste qui est (laptop, desktop, imprimante). Merci de votre aide car j'y tiens bcp!!
j'ai fait une table produit qui a comme champ id_produit et le nom_produit pour que les produits il les trouves dans la base de donnée!!
si c'est possible pourriez-vous me faire aussi un bouton supprimer où il supprimera une ligne quelconque du tableau (donc quelque soit le produit qu'il veut il click sur le bouton et puis le produit s'efface)
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
1 mai 2010 à 06:42
salut stivijulien
bon voila ton code il ma fait arracher quelque cheveux mais c'est bon elle repousse
je te passe le code complet j'ai essayer de le commenté le plus possible mais si il y'a une partie que t'a pas saisie tu peut toujours m'en faire part je l'ai tester chez moi et sa marche a merveille la liste de produit l'ajout de ligne la suppression de ligne et enfin la validation pour l'insertion mais la securité et le contole je te laisse cette partie a ta guise c'est un peut long mais j'espere que sa resoud ton probleme fait moi signe quand tu l'aura testet chez toi
<?php

$id = mysql_connect('localhost','root','');

if( $id ) {

    mysql_select_db("test",$id);
}

//la partie affichage
$sql = "select * from produit";
$result = mysql_query($sql) or die(mysql_error());

$option = "<select name=\"prd[]\">";

while ($row = mysql_fetch_assoc($result) ) {

        $option .= "<option value=\"".$row['nom_produit']."\">".$row['nom_produit']."</option>";
} 
mysql_free_result($result);//on librere les ressources
mysql_close($id); // et on ferme la connexion
$option.="</select>";

//cette partie tu poura  l'utiliser pour inserer dans ton autre table
// que j'ai nommer offre elle a comme champs (id_offre,produit,qte,desc)

// on recupere les valeurs
if (isset($_GET['action']) && $_GET['action']=="enregOffre") {

    echo "<pre>";
	print_r($_POST);
	echo "<pre>";
	//c'est toi d'appliquer tes option d securité
	
	//tu ouvre la connexion et tu selection ta base
	mysql_connect('localhost','root','');
	mysql_select_db('ta_base');
	
	//on compte le nombre de produit saisie
	$nbProduit = count($_POST['prd']);
	
	// t'a du remarque qu'en creant les input j'ai definit les nom comme si je declarer une
	// variable de type tableau en effet c'est sa $_POST['produit'] contient un tableau de tous les produit saisie ainsi l'est qte et desc
    
	//on prepare la requete
	for ($i = 0; $i < $nbProduit; $i++) {
	
	     $prd = $_POST['prd'][$i];
	     $desc = $_POST['desc'][$i];
		 $qte = $_POST['qte'][$i];
	     $sql = "INSERT INTO ta_table(produit,desc,qte) values ('$prd','$desc','$qte')";
		 mysql_query ($sql);
   }
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Appel d'offre</title>
<script type="text/javascript">
/**
 * Cette fonction sert a supprimer une  ligne du tableau elle prend en parametre
 * l'id de la ligne
 */
function suppression (ligne) {
  
  // La suppression se fait en recuperent la ligne=noeud courant par son id ensuite on 
  //recupere le noeud parent avec parentNode et enfin on supprime avec removeChild  
  if( document.getElementById(ligne) ) {
      
	  document.getElementById(ligne).parentNode.removeChild(document.getElementById(ligne));
  }

}
/**
 * Cette fonction va servir pour la creation des inputs independament du navigateur
 * cette ca que j'avez oublier de preciser pour la premier fois
 */
function creerInput(name) {

   if( document.all){ // pour IE
   
       input = document.createElement("<input name='"+name+"'>");
   
   } else { // pour FF et autres navigateurs
       
	   input = document.createElement("input");
       input.name = name;
   }

   input.type = "text";
   
   return input;

}
/**
 * Cette fonction est appeler par le bouton ajouter elle place directement une ligne
 * comportant tous les input necessaire
 */ 
function AjouterLigne(){
   
   // On recupere la  tables des inputs 
   var table = document.getElementById('tableInput');
   // recuperation de tous les noeud fils tr
   var trs = table.getElementsByTagName('tr');
   // on crer un nouveau tr
   var newRow = document.getElementById('tableInput').insertRow(-1); 
   // ind va permetre de construire un id propre a chaque ligne sous la form 
   // row_1 row_2 ... row_N 
   
   var ind = trs.length-1;
   
   // si c'est pas la premiere fois qu'on fait appel a ajouterLigne()
   if( ind > 0 ) {
       
	   // Comme dit on se sert de ind pour construire l'id
       newRow.setAttribute("id","row_"+ind);
	   //setAttribute permet de definir un attribut a un element
       
	   //cette variable va contenir l'id elle sera passer en parametre a suppression
	   var idtr = "row_"+ind;
  
  } else {
      
	  // c'est la premiere fois qu'on appele ajouterLigne donc le id c'est row_1
	  newRow.setAttribute("id","row_1");
      var idtr = "row_1";
  }


// insert la cellule du nom_produit 
var newCell = newRow.insertCell(0);
   // on affect le select creer avec le php
   newCell.innerHTML = '<?php echo $option ?>';
//insert la celle quantite
var newCell = newRow.insertCell(1);
//creation du champs input qte
var qteInput = creerInput("qte[]");
//ajoute du champs qte a la cellule
newCell.appendChild(qteInput);
//insert la cellule description
newCell = newRow.insertCell(2);
//creation du champs input desc
var descInput = creerInput("desc[]");
//ajoute du champs desc a la cellule
newCell.appendChild(descInput);
//insert la cellule du bouton supprimer
newCell = newRow.insertCell(3);

//creation du bouton supprimer
if( document.all){ // pour IE
   
       bouton = document.createElement("<input name='sup_"+id_tr+"'>");
   
   } else { // pour FF et autres navigateurs
       
	   bouton = document.createElement("input");
       bouton.name = "sup_"+idtr;
   }

  	bouton.type = "button";
  	bouton.value = "Supprimer";
	bouton.id = 'Supprimer';
	//on lui affect un evenement onclick
  	bouton.onclick = function(){
	                  suppression(idtr);
	};
  	newCell.appendChild(bouton);

}

</script>
</head>

<body>
<form id="form1" name="form1" method="post" action="appeloffre.php?action=enregOffre">
  <table width="57%" border="0" style="border:1px solid #336699" id="tableProduit">
    <tr>
      <th width="20%"><label for="prd">Produit</label></th>
      <th width="31%"><label for="qte">Qté</label></th>
      <th width="35%"><label for="desc">Description produit</label></th>
      <th width="14%">&nbsp;</th>
    </tr>
	<tr>
	  <td colspan="4">
	    <table border="0" id="tableInput">
	    
         <tr id="row_0">
         <td>
		 <?php echo $option?>
		 </td>
          <td><input type="text" name="qte[]"  /></td>
           <td><input type="text" name="desc[]" /></td>
           <td><input type="button"  id="sup_1"  value=" supprimer" disabled="disabled"/></td>
         </tr>
	    </table>
	</td>
	</tr>
	<tr>
	<td colspan="4">
	<div align="center">
	<input type="button" name="addfields" value="Ajouter" onClick="AjouterLigne()"> 
	<input type="submit" name="valider" value="valider"> 
	</div>
	</td>
	</tr>
  </table>
</form>
</body>
</html>

0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
5 mai 2010 à 12:52
merci beaucoup thunder413 je vais l'essayer si j'ai un problème je te fait signe :-) et le controle des données la il ya aucun problème!! thxx
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
12 mai 2010 à 10:16
salut thunder413 ; vraiment le code marche très bien; je suis reconnaissant, mais j'ai tjrs des problèmes :

1. j' ai trouvé que le champ description_produit ne peut pas être un champ input text car je veux que ce champ comporte au moins 300 caractères donc qu' il devienne un textarea

2. Je veux que le champ quantité ne reçoive que des chiffres.

3. Comme le formulaire a d autres champs; je veux si il y a des erreurs lors de l' envoi (enregistrement) je puisse retrouver les valeurs de champs du tableau (produit;quantite et description_produit ) au moyen des $_POST donc value= $_POST...;
En résumé, je veux récupérer les données du tableau envoyé

Merci d'avance ; je sais que c est difficile et que tu vas réussir
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
12 mai 2010 à 19:45
salut stibijulien j'espere que je n'aurai pas a code tous tes scripts pour toi :) nan c'est une blague j'suis content de t'aporter mon aide
desoler pour ma reponse tardive bon de nouveau je te reposte le code qui repond a tes exigence j'ai juste utiliser une solution basic mais qui fonctionne tu pourra la perfectionner apres aussi cette fois j'ai diviser le code en deux page la premiere s'occupe de l'affichage l'autre de l'insertion
//offre.php
<?php
$id = mysql_connect('localhost','root','');

if( $id ) {

    mysql_select_db("test",$id)or die (mysql_error());
}

//la partie affichage
$sql = "select * from produit";
$result = mysql_query($sql) or die(mysql_error());

$option = "<select name=\"prd[]\">";

while ($row = mysql_fetch_assoc($result) ) {

        $option .= "<option value=\"".$row['nom_produit']."\">".$row['nom_produit']."</option>";
} 
mysql_free_result($result);//on librere les ressources
mysql_close($id); // et on ferme la connexion
$option.="</select>";

//cette partie tu poura  l'utiliser pour inserer dans ton autre table
// que j'ai nommer offre elle a comme champs (id_offre,produit,qte,desc)
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Appel d'offre</title>
<script type="text/javascript">
/**
 * Cette fonction sert a supprimer une  ligne du tableau elle prend en parametre
 * l'id de la ligne
 */
function suppression (ligne) {
  
  // La suppression se fait en recuperent la ligne=noeud courant par son id ensuite on 
  //recupere le noeud parent avec parentNode et enfin on supprime avec removeChild  
  if( document.getElementById(ligne) ) {
      
	  document.getElementById(ligne).parentNode.removeChild(document.getElementById(ligne));
  }

}
/**
 * Cette fonction va servir pour la creation des inputs independament du navigateur
 * cette ca que j'avez oublier de preciser pour la premier fois
 */
function creerInput(name) {

   if( document.all){ // pour IE
   
       input = document.createElement("<input name='"+name+"'>");
   
   } else { // pour FF et autres navigateurs
       
	   input = document.createElement("input");
       input.name = name;
   }

   input.type = "text";
   
   return input;

}
/**
 * Cette fonction est appeler par le bouton ajouter elle place directement une ligne
 * comportant tous les input necessaire
 */ 
function AjouterLigne(){
   
   // On recupere la  tables des inputs 
   var table = document.getElementById('tableInput');
   // recuperation de tous les noeud fils tr
   var trs = table.getElementsByTagName('tr');
   // on crer un nouveau tr
   var newRow = document.getElementById('tableInput').insertRow(-1); 
   // ind va permetre de construire un id propre a chaque ligne sous la form 
   // row_1 row_2 ... row_N 
   
   var ind = trs.length-1;
   
   // si c'est pas la premiere fois qu'on fait appel a ajouterLigne()
   if( ind > 0 ) {
       
	   // Comme dit on se sert de ind pour construire l'id
       newRow.setAttribute("id","row_"+ind);
	   //setAttribute permet de definir un attribut a un element
       
	   //cette variable va contenir l'id elle sera passer en parametre a suppression
	   var idtr = "row_"+ind;
  
  } else {
      
	  // c'est la premiere fois qu'on appele ajouterLigne donc le id c'est row_1
	  newRow.setAttribute("id","row_1");
      var idtr = "row_1";
  }

// insert la cellule du numero 
var newCell = newRow.insertCell(0);
newCell.innerHTML = "<b style='color:#009900'>"+ind+"<b>";
// insert la cellule du nom_produit 
var newCell = newRow.insertCell(1);
   // on affect le select creer avec le php
   newCell.innerHTML = '<?php echo $option ?>';
//insert la celle quantite
var newCell = newRow.insertCell(2);
//creation du champs input qte
var qteInput = creerInput("qte[]");
//ajoute du champs qte a la cellule
newCell.appendChild(qteInput);
//insert la cellule description
newCell = newRow.insertCell(3);

//creation du textarea  desc


if( document.all){ // pour IE
   
       descInput = document.createElement("<textarea name='desc[]'>");
   
   } else { // pour FF et autres navigateurs
       
	   descInput = document.createElement("textarea");
       descInput.name = "desc[]";
   }
   descInput.cols='20';
   descInput.rows='5';
//ajoute du champs desc a la cellule
newCell.appendChild(descInput);


//insert la cellule du bouton supprimer
newCell = newRow.insertCell(4);

//creation du bouton supprimer
if( document.all){ // pour IE
   
       bouton = document.createElement("<input name='sup_"+id_tr+"'>");
   
   } else { // pour FF et autres navigateurs
       
	   bouton = document.createElement("input");
       bouton.name = "sup_"+idtr;
   }

  	bouton.type = "button";
  	bouton.value = "Supprimer";
	bouton.id = 'Supprimer';
	//on lui affect un evenement onclick
  	bouton.onclick = function(){
	                  suppression(idtr);
	};
  	newCell.appendChild(bouton);

}

</script>
</head>

<body>
<form id="form1" name="form1" method="post" action="addoffre.php">
  <table width="65%" border="0" style="border:1px solid #336699" id="tableProduit">
    <tr>
      <th width="4%"></th>
      <th width="17%"><label for="prd">Produit</label></th>
      <th width="31%"><label for="qte">Qté</label></th>
      <th width="29%"><label for="desc">Description produit</label></th>
      <th width="19%">&nbsp;</th>
    </tr>
	<tr>
	  <td colspan="5">
	    <table width="478" border="0" id="tableInput">
	    
         <tr id="row_0">
         <td width="10"><b style="color:#009900">0</b></td>
         <td width="74"> <?php echo $option?>		 </td>
          <td width="144"><input type="text" name="qte[]"  /></td>
           <td width="136"><textarea name="desc[]" cols="20" rows="5"></textarea></td>
           <td width="78"><input type="button"  id="sup_1"  value=" supprimer" disabled="disabled"/></td>
         </tr>
	    </table>
	</td>
	</tr>
	<tr>
	<td colspan="5">
	<div align="center">
	<input type="button" name="addfields" value="Ajouter" onClick="AjouterLigne()"> 
	<input type="submit" name="valider" value="valider"> 
	</div>
	</td>
	</tr>
  </table>
</form>
</body>
</html>



// addoffre.php
<?php
$id = mysql_connect('localhost','root','');

if( $id ) {

    mysql_select_db("test",$id)or die (mysql_error());
}
//on compte le nombre de produit saisie
$nbProduit = count($_POST['prd']);
	
//on initialise une variable pour deboguage et une variable error 
//qui va contenir le message d'erreur
$debug = TRUE;
$error='';
//debut des controles
 echo "<pre>";
	print_r($_POST);
	echo "<pre>";
for ($i = 0; $i < $nbProduit; $i++) {
     $prd = $_POST['prd'][$i];
	 $desc = $_POST['desc'][$i];
	 $qte = $_POST['qte'][$i];
	 //dabord si l'un des champs est vide
	 if (empty($prd) || empty($desc) || empty($qte)) {
	 
	     //on met debug a false
		 $debug = FALSE;
		 $error = "Erreur : ligne ".$i."\\n l\'un des champs requit est vide";
		 //on force l'arret de la boucle
		 break;
	   	 //j'utilise ici la fonction intval qui retourne en cas de succes pour convertir une chaine
	     // en chiffre la chaine saisie sinon elle renvoi 0
	 } elseif (intval($qte) == 0) {
	     //on met debug a false
		 $debug = FALSE;
		 $error = "Erreur : ligne ".$i."\\n la quantité doit être un chiffre";
		 //on force l'arret de la boucle
		 break;
	     //si la taille de la description est moins de 300 caractere
	 } elseif (strlen($desc) < 300 ) {
	     //on met debug a false
		 $debug = FALSE;
		 $error = "Erreur :ligne ".$i."\\n la description doit au moins comporter 300 caractere";
		 //on force l'arret de la boucle
		 break;
	 }
}
// a a la sortie de la boucle si debug == FALSE
if (!$debug) {

   echo "<script type='text/javascript'>
        alert('".html_entity_decode($error)."');
        window.history.go(-1);
   </script>
   ";

} else {
echo "tou";
    for ($i = 0; $i < $nbProduit; $i++) {
	     $prd = $_POST['prd'][$i];
	 	 $desc = $_POST['desc'][$i];
	 	 $qte = $_POST['qte'][$i];
	 	 $sql = "INSERT INTO 'offre'('produit','desc','qte') VALUES ('$prd','$desc','$qte');";
	 	 mysql_query ($sql)or die (mysql_error().$sql);
    }

}

CORDIALLEMENT
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
26 mai 2010 à 11:36
slt est ce que quelqu'un peut m'aider?!! thunder413 ta trouvé comment peut on recuperer le tableau après envoi s'il ya erreur?!!
oft moi j'ai fait des recherches sur le DOM on dit que le champ input on peut lui créer son types et sa value? voila l'instruction

var contenu_champ = input.value;
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
1 juin 2010 à 11:10
salut thunder je m'excuse du retard et veuillez aussi accepter mes excuses car je n'avais pas encore testé le script que vous m'avez donné!! le script coté serveur fonctionne très bien et j'ai vu que après envoi s'il ya une erreur la page renvient à l'état précedent grâce à l'instruction window.history.go(-1) c'est vraiment génial c'est un coup de génie car value=$_POST n'est plus necessaire!!

Mais je vous avais dit que la page appeldoffre avait d'autres champs et que c'est seulement le champ description appel d'offre qui m'avait été difficile à faire!! je vousdrais que vous essayer le script que je vous envoie moi j'ai des problèmes coté serveur mais ca fonctionne très bien mais si j'essaie d'envoyer ca dans la base de donnée le script se plante!!
je voulais que vous l'essayer sur internet explorer et mozilla le bouton supprimer n'apparait sur internet explorer et lorsque j'essaie de supprimer un produit que ca soit en mozilla ou internet explorer j'ai un problème sur un produit qui le meme numero!!
et le champ quantité on ne pourait pas le vérifier avec une regex car si je donne le champ quantité la valeur -8 il ne signale pas une erreur bizzard!!

Merci beaucoup thunder de votre aide je vais vous envoyer le code et m'aider surtout sur le coté serveur que j'ai déjà fait !! just un copier/coller je sais c'est un peut long le script!!


<?php
    include("haut.php");
    ?>
<?php
$n = mysql_connect("localhost", "root", '');
        mysql_select_db("marketplace");
		
	/*   ici on le fait pour qu'on ait toutes les données du membre  car il est en session et puis il reste à afficher ces données   */	
		
		$id=$_SESSION['id_membres'];
		
		$sql = "SELECT * FROM membres WHERE id_membres='$id'";
		$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

       $data = mysql_fetch_array($req);
      
	  //on va cherche la liste des produits dans la base de données
$sq2 = "select * from produit";
$result = mysql_query($sq2) or die(mysql_error());

$option = "<select name=\"prd[]\">";

while ($row = mysql_fetch_assoc($result) ) {

        $option .= "<option value=\"".$row['nom_produit']."\">".$row['nom_produit']."</option>";
} 
mysql_free_result($result);//on librere les ressources
mysql_close($n); // et on ferme la connexion
$option.="</select>";
?>

<script language="javascript">
/**
 * Cette fonction sert a supprimer une  ligne du tableau elle prend en parametre
 * l'id de la ligne
 */
function suppression (ligne) {
  
  // La suppression se fait en recuperent la ligne=noeud courant par son id ensuite on 
  //recupere le noeud parent avec parentNode et enfin on supprime avec removeChild  
  if( document.getElementById(ligne) ) {
      
	  document.getElementById(ligne).parentNode.removeChild(document.getElementById(ligne));
  }

}
/**
 * Cette fonction va servir pour la creation des inputs independament du navigateur
 * cette ca que j'avez oublier de preciser pour la premier fois
 */
function creerInput(name) {

   if( document.all){ // pour IE
   
       input = document.createElement("<input name='"+name+"'>");
   
   } else { // pour FF et autres navigateurs
       
	   input = document.createElement("input");
       input.name = name;
   }

   input.type = "text";
   
   return input;

}
/**
 * Cette fonction est appeler par le bouton ajouter elle place directement une ligne
 * comportant tous les input necessaire
 */ 
function AjouterLigne(){
   
   // On recupere la  tables des inputs 
   var table = document.getElementById('tableInput');
   // recuperation de tous les noeud fils tr
   var trs = table.getElementsByTagName('tr');
   // on crer un nouveau tr
   var newRow = document.getElementById('tableInput').insertRow(-1); 
   // ind va permetre de construire un id propre a chaque ligne sous la form 
   // row_1 row_2 ... row_N 
   
   var ind = trs.length-1;
   
   // si c'est pas la premiere fois qu'on fait appel a ajouterLigne()
   if( ind > 0 ) {
       
	   // Comme dit on se sert de ind pour construire l'id
       newRow.setAttribute("id","row_"+ind);
	   //setAttribute permet de definir un attribut a un element
       
	   //cette variable va contenir l'id elle sera passer en parametre a suppression
	   var idtr = "row_"+ind;
  
  } else {
      
	  // c'est la premiere fois qu'on appele ajouterLigne donc le id c'est row_1
	  newRow.setAttribute("id","row_1");
      var idtr = "row_1";
  }

// insert la cellule du numero 
var newCell = newRow.insertCell(0);
newCell.innerHTML = "<b style='color:#009900'>"+ind+"<b>";
// insert la cellule du nom_produit 
var newCell = newRow.insertCell(1);
   // on affect le select creer avec le php
   newCell.innerHTML = '<?php echo $option ?>';
   //on laisse une place donc une colonne vide pour que les colonnes ne se colent pas
   var newCell = newRow.insertCell(2);
newCell.innerHTML = "";
//insert la celle quantite
var newCell = newRow.insertCell(3);
//creation du champs input qte
var qteInput = creerInput("qte[]");
//ajoute du champs qte a la cellule
newCell.appendChild(qteInput);

var newCell = newRow.insertCell(4);
newCell.innerHTML = "";
//insert la cellule description
newCell = newRow.insertCell(5);

//creation du textarea  desc


if( document.all){ // pour IE
   
       descInput = document.createElement("<textarea name='desc[]'>");
   
   } else { // pour FF et autres navigateurs
       
	   descInput = document.createElement("textarea");
       descInput.name = "desc[]";
   }
   descInput.cols='30';
   descInput.rows='5';
//ajoute du champs desc a la cellule
newCell.appendChild(descInput);

 //colonne pour ecrire maximum
   var newCell = newRow.insertCell(6);
newCell.innerHTML = "maximum";

//colonne pour ecrire 300
   var newCell = newRow.insertCell(7);
newCell.innerHTML = "300";

//colonne pour ecrire caractère
   var newCell = newRow.insertCell(8);
newCell.innerHTML = "caractères";

//insert la cellule du bouton supprimer
newCell = newRow.insertCell(9);

//creation du bouton supprimer
if( document.all){ // pour IE
   
       bouton = document.createElement("<input name='sup_"+id_tr+"'>");
   
   } else { // pour FF et autres navigateurs
       
	   bouton = document.createElement("input");
       bouton.name = "sup_"+idtr;
   }

  	bouton.type = "button";
  	bouton.value = "Supprimer";
	bouton.id = 'Supprimer';
	//on lui affect un evenement onclick
  	bouton.onclick = function(){
	                  suppression(idtr);
	};
  	newCell.appendChild(bouton);

}
function verif_formulaire()
{

if(document.form.objet_appeldoffre.value == "")  {
   alert("Veuillez donner l'objet du marché svp!");
   document.form.objet_appeldoffre.focus();
   return false;
  }

  if(document.form.date_limite_depot_offre.value == "")  {
   alert("Veuillez preciser la date limite de depôt des offres svp!");
   document.form.date_limite_depot_offre.focus();
   return false;
  }
  
  if(document.form.modalite_paiement.value == "") {
   alert("Veuillez preciser la modalité de paiement et l'unité monétaire svp!");
   document.form.modalite_paiement.focus();
   return false;
  }
  
   if(document.form.cout_offre.value == "") {
   alert("La pondération du coût de l'offre doit être superieure ou égale à zéro!!");
   document.form.cout_offre.focus();
   return false;
  }
  
  
  if(document.form.delais_livraison.value == "") {
   alert("La pondération du délai de livraison doit être superieure ou égale à zéro!!");
   document.form.delais_livraison.focus();
   return false;
  }
  
  if(document.form.garantie.value == "") {
   alert("La pondération de la garantie doit être superieure ou égale à zéro!!");
   document.form.garantie.focus();
   return false;
  }
  
    if(document.form.experience.value == "") {
   alert("La pondération de l'experience doit être superieure ou égale à zéro!!");
   document.form.experience.focus();
   return false;
  }
  

  
  {
      // Cette fonction vérifie le format JJ/MM/AAAA saisi et la validité de la date.
      // Le séparateur est défini dans la variable separateur
	  var d = document.form.date_limite_depot_offre.value;
	  
      var amin=2010; // année mini
      var separateur="/"; // separateur entre jour/mois/annee
      var j=(d.substring(0,2));
      var m=(d.substring(3,5));
      var a=(d.substring(6));
      
      if ( ((isNaN(j))||(j<1)||(j>31)) ) {
         alert("Le jour n'est pas correct.");
		 document.form.date_limite_depot_offre.focus();
		 return false;
      }
	  
      if ( ((isNaN(m))||(m<1)||(m>12)) ) {
         alert("Le mois n'est pas correct.");
		 document.form.date_limite_depot_offre.focus();
		 return false;
      }
	  
      if ( ((isNaN(a))||(a<amin)) ) {
         alert("L'année n'est pas correcte.");
		 document.form.date_limite_depot_offre.focus();
		 return false;
      }
	  
      if ( ((d.substring(2,3)!=separateur)||(d.substring(5,6)!=separateur)) ) {
         alert("Les séparateurs doivent être des "+separateur);
		 document.form.date_limite_depot_offre.focus();
		 return false;
      }
	    
	  	
         var d2=new Date(a,m-1,j);
         j2=d2.getDate();
         m2=d2.getMonth()+1;
         a2=d2.getFullYear();
         
         if ( (j!=j2)||(m!=m2)||(a!=a2) ) {
            alert("La date "+d+" n'existe pas !");
			document.form.date_limite_depot_offre.focus();
            return false;
         }
			 
			 
			 
			 
	  }

    
  }
</script>

<div>
	  <blockquote>
	    <table width="100%" border="0">
          <tr>
            <td>

<form id="form" name="form" method="post" action="" onSubmit="return verif_formulaire()" >
<fieldset style="margin-left: 40px;"> <legend><em><strong> Vos Informations Personnelles</strong></em></legend>
               <table width="85%" border="0">
               <tr>
    <td width="34%"><label for="textfield">Nom et Prénom de l'Acheteur :</label></td>
    <td width="66%"><input type="text" name="textfield" id="textfield" size="30" readonly="" value="<?php echo $data['nom'].'   '.$data['prenom'];?>"  /></td>
  </tr>
  <tr>
    <td><label for="label">Adresse officielle de l'Entreprise :</label></td>
    <td><input type="text" name="textfield2" id="label" size="30" readonly="" value="<?php echo $data['adresse'];?>" /></td>
  </tr>
  <tr>
    <td><label for="label2">Pays et la ville :</label></td>
    <td><input type="text" name="textfield3" id="label2" size="30"  readonly=""  value="<?php echo $data['pays'].' ' .'-'. ' '.$data['ville'];?>" /></td>
  </tr>
</table> 
 </fieldset>
 <fieldset style="margin-left: 40px;"> <legend><em><strong> Votre Appel d'Offre</strong></em></legend>
     
	 <table width="85%" border="0">
               <tr>
    <td width="34%"><label for="textfield4"><span class="Style2">*</span> Objet du marché :</label></td>
    <td width="66%"><input type="text" name="objet_appeldoffre" id="textfield4" size="50" <?php if (isset($_POST['objet_appeldoffre'])) { echo 'value="' .$_POST['objet_appeldoffre'] .'"'; } ?>/></td>
  </tr>
   </table>
   <p><span class="Style2">*</span>Description de l'Appel d'offres :
		<div style="margin-left: 40px;">		 
    <table width="58%" border="0" style="border:1px solid #336699" id="tableProduit">
    <tr>
      <th width="2%"></th>
      <th width="14%"><label for="prd">Produit</label></th>
      <th width="23%"><label for="qte">Quantité</label></th>
      <th width="29%"><label for="desc">Description produit</label></th>
      <th width="32%">&nbsp;</th>
    </tr>
	<tr>
	  <td colspan="5">
	    <table width="574" border="0" id="tableInput">
	    
         <tr id="row_0">
         <td width="8"><b style="color:#009900">0</b></td>
         <td width="19"> <?php echo $option?>		 </td>
		 <td width="2">&nbsp;</td>
          <td width="144"><input type="text" name="qte[]"  /></td>
		  <td width="3">&nbsp; </td>
           <td width="141"><textarea name="desc[]" cols="30" rows="5"></textarea></td>
		   <td width="60">maximum</td>
		   <td width="24">300</td>
		   <td width="50">caractères</td>
           <td width="81"><input type="button"  id="sup_1"  value=" supprimer" disabled="disabled"/></td>
         </tr>
	    </table>
	</td>
	</tr>
	<tr>
	<td colspan="5">
	<div align="center">
	<input type="button" name="addfields" value="Ajouter un produit" onClick="AjouterLigne()"> 
	</div>
	</td>
	</tr>
  </table>
  </div>
  <p>
  <table width="85%" border="0">
      <tr>
        <td width="34%"><label for="label4"><span class="Style2">*</span> Date limite de depot des Offres :</label></td>
        <td width="24%"><input type="text" name="date_limite_depot_offre" id="label4" <?php if (isset($_POST['date_limite_depot_offre'])) { echo 'value="' .$_POST['date_limite_depot_offre'] .'"'; } ?> /></td>
		<td width="42%"> jj/mm/AAAA</td>
      </tr>
    </table>
	           <table width="85%" border="0">
                 <tr>
                   <td width="34%"><label for="textarea"><span class="Style2">* </span>Modalité de paiement et Unité Monétaire :</label></td>
                   <td width="66%"><textarea name="modalite_paiement" id="textarea" cols="38"><?php if (isset($_POST['modalite_paiement'])) { echo $_POST['modalite_paiement']; } ?></textarea></td>
                 </tr>
                 <tr>
                   <td><label for="label3"><span class="Style2">* </span>Modalité de livraison et d'assurance :</label></td>
                   <td><textarea name="modalite_livraison" id="label3" cols="38"><?php if (isset($_POST['modalite_livraison'])) { echo $_POST['modalite_livraison']; } ?></textarea></td>
                 </tr>
               </table>
  </fieldset>
  <fieldset style="margin-left: 40px;"> <legend><em><strong> Les critères de sélection</strong></em></legend>
              <p>Critère de Selection  et leur pondération : </p>
			  
              <table width="85%" border="0">
                <tr>
                  <td width="35%"><label for="label6"><span class="Style2">*</span> Coût de l'offre :</label></td>
                  <td width="65%"><input type="text" name="cout_offre" id="label6" <?php if (isset($_POST['cout_offre'])) { echo 'value="' .$_POST['cout_offre'] .'"'; } ?> maxlength=2 onKeypress="if((event.keyCode < 45 || event.keyCode > 57) &&  event.keyCode != 32 &&  event.keyCode != 8 &&  event.keyCode != 0) event.returnValue = false; if((event.which < 45 || event.which > 57)  &&  event.which != 32  &&  event.which != 8  &&  event.which != 0 ) return false;" /></td>
                </tr>
                <tr>
                  <td><label for="label7"><span class="Style2">*</span> Délai de livraison :</label></td>
                  <td><input type="text" name="delais_livraison" id="label7" <?php if (isset($_POST['delais_livraison'])) { echo 'value="' .$_POST['delais_livraison'] .'"'; } ?> maxlength=2 onKeypress="if((event.keyCode < 45 || event.keyCode > 57) &&  event.keyCode != 32 &&  event.keyCode != 8 &&  event.keyCode != 0) event.returnValue = false; if((event.which < 45 || event.which > 57)  &&  event.which != 32  &&  event.which != 8  &&  event.which != 0 ) return false;" /></td>
                </tr>
                <tr>
                  <td><label for="label8"><span class="Style2">* </span>Service Après vente et assistance technique :</label></td>
                  <td><input type="text" name="garantie" id="label8" <?php if (isset($_POST['garantie'])) { echo 'value="' .$_POST['garantie'] .'"'; } ?> maxlength=2 onKeypress="if((event.keyCode < 45 || event.keyCode > 57) &&  event.keyCode != 32 &&  event.keyCode != 8 &&  event.keyCode != 0) event.returnValue = false; if((event.which < 45 || event.which > 57)  &&  event.which != 32  &&  event.which != 8  &&  event.which != 0 ) return false;" /></td>
                </tr>
                <tr>
                  <td><label for="label9"><span class="Style2">* </span>Experience :</label></td>
                  <td><input type="text" name="experience" id="label9" <?php if (isset($_POST['experience'])) { echo 'value="' .$_POST['experience'] .'"'; } ?> maxlength=2 onKeypress="if((event.keyCode < 45 || event.keyCode > 57) &&  event.keyCode != 32 &&  event.keyCode != 8 &&  event.keyCode != 0) event.returnValue = false; if((event.which < 45 || event.which > 57)  &&  event.which != 32  &&  event.which != 8  &&  event.which != 0 ) return false;" /></td>
                </tr>
              </table>
			  </fieldset>
			 <p align="center">Tous les champs indiqués par une étoile (<span class="Style2">*</span>) sont   obligatoires.</p>
                  <p align="center">
                    <label for="Submit"></label>
                    <input type="submit" name="Submit" value="Envoyer" id="Submit" />
                  </p>
				 
  </form>

</td>
          </tr>
        </table>
	  </blockquote>
    </div></td>
  </tr>
  <?php
    include("bas.php");
    ?>

	<?php
 
   if (isset($_POST['Submit'])) 
   {
    $n = mysql_connect("localhost", "root", '');
        mysql_select_db("marketplace");
		
	  if (isset($_POST['objet_appeldoffre']) AND isset($_POST['date_limite_depot_offre']) AND isset($_POST['modalite_paiement']) AND isset($_POST['modalite_livraison']) AND isset($_POST['garantie']) AND isset($_POST['experience']) AND isset($_POST['cout_offre']) AND isset($_POST['delais_livraison']) AND isset($_POST['prd']) AND isset ($_POST['qte']) AND isset($_POST['desc']))
{	  
   $id=$_SESSION['id_membres'];
   
   $objet=mysql_real_escape_string(htmlspecialchars($_POST['objet_appeldoffre']));
   $dateDepotOffre=mysql_real_escape_string(htmlspecialchars($_POST['date_limite_depot_offre']));
   $modalitePaiement=mysql_real_escape_string(htmlspecialchars($_POST['modalite_paiement']));
   $modaliteLivraison=mysql_real_escape_string(htmlspecialchars($_POST['modalite_livraison']));
   $cout=mysql_real_escape_string(htmlspecialchars($_POST['cout_offre']));
   $delais=mysql_real_escape_string(htmlspecialchars($_POST['delais_livraison']));
   $garantie=mysql_real_escape_string(htmlspecialchars($_POST['garantie']));
   $experience=mysql_real_escape_string(htmlspecialchars($_POST['experience']));
   
   //on initialise une variable pour deboguage et une variable error 
//qui va contenir le message d'erreur
$debug = TRUE;
$error='';
$x=5;
//debut des controles
   while($x==5) //pour forcer la boucle a etre executer!!
  { 
   //on va vérifier si les champs obligatoires sont vide!!
   if(empty($_POST['objet_appeldoffre']) OR empty($_POST['date_limite_depot_offre']) OR empty($_POST['modalite_paiement']) OR empty($_POST['modalite_livraison']) OR empty($_POST['garantie']) OR empty($_POST['experience']) OR empty($_POST['cout_offre']) OR empty($_POST['delais_livraison']))
   {	
	$debug = FALSE;
    $error='il y a un ou des champs obligatoires vide!!';
	break;
   
   }
   
   // on va vérifier la date de depot des offres si elle est valide
   
    $date = date('d/m/Y'); //fonction pour chercher la date d'aujourd'hui
        
		//on va enlever les slash avec la fonction explode pour la mettre en format numérique 		
		$dateLimite = explode("/", $dateDepotOffre);
		$dateNow = explode("/", $date);
		
		//concaténation pour inverser l'ordre ( pour avoir l'ordre ci : annéemoisjour)
		$dateDepot = $dateLimite[2].$dateLimite[1].$dateLimite[0]; 
		$date = $dateNow[2].$dateNow[1].$dateNow[0];
       		
		// on va comparer les dates
		if ($dateDepot<$date)
       {
	   $debug = FALSE;
    $error='La date limite de dépôt des Offres est invalide!!';
	break;
	   }
   
   $total=$cout + $delais + $garantie + $experience; //on fait le total des pondérations
   
   if (($total > 10) OR ($total < 10))  // on vérifie le total s'il est égale à 10
    {
	$debug = FALSE;
    $error='Le total de votre pondération des critères de sélection doit être égale à 10!';
	break;
    }	

	
   //on  va vériffer le tableau description Appel d'offre
   if($x==5)
  { 
   //on compte le nombre de produit saisie
$nbProduit = count($_POST['prd']);

for ($i = 0; $i < $nbProduit; $i++) {
     $prd = $_POST['prd'][$i];
	 $desc = $_POST['desc'][$i];
	 $qte = $_POST['qte'][$i];
	 //dabord si l'un des champs est vide
	 if (empty($prd) || empty($desc) || empty($qte)) {
	 
	     //on met debug a false
		 $debug = FALSE;
		 $error = "Erreur : ligne ".$i."\\n l\'un des champs requit est vide";
		 //on force l'arret de la boucle
		 break;
	   	 //j'utilise ici la fonction intval qui retourne en cas de succes pour convertir une chaine
	     // en chiffre la chaine saisie sinon elle renvoi 0
	 } 
	 elseif (intval($qte) == 0) {
	     //on met debug a false
		 $debug = FALSE;
		 $error = "Erreur : ligne ".$i."\\n la quantité doit être un chiffre";
		 //on force l'arret de la boucle
		 break;
	     //si la taille de la description depasse 300 caracteres
	 } 
	 elseif (strlen($desc) > 300 ) {
	     //on met debug a false
		 $debug = FALSE;
		 $error = "Erreur :ligne ".$i."\\n la description doit au maximum comporter 300 caracteres";
		 //on force l'arret de la boucle
		 break;
	 }
}
}
}
//  a la sortie de la boucle si debug == FALSE
if (!$debug) {

   echo "<script type='text/javascript'>
        alert('".html_entity_decode($error)."');
        window.history.go(-1);
   </script>
   ";

} 
// maintenant il n'ya aucune erreur on peut enregistrer l'appel d'offre!!!
else {
$relance = 0; // comme c'est la première l'Appel d'offre est fait on lui donne comme valeur 0 pour le champ relance!! 
// on va d'abord enregistrer dans la table Appel d'offre et apreès recuperer l'id Appel d'offre pour l'utiliser dans les tables critères de selection et decription Appeldoffre
mysql_query("INSERT INTO Appeldoffre VALUES('', '" . $id . "', '" . $objet . "', '" . time() . "', '" . $dateDepotOffre . "', '" . $modalitePaiement . "', '" . $modaliteLivraison . "', '" . $relance . "')");
    
   $sql = "SELECT id_Appeldoffre FROM Appeldoffre WHERE objet_appeldoffre='$objet'"; // pour chercher l'id de l'Appel d'offre qu'on vient d'enregistrer!!
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$data = mysql_fetch_array($req);
$idApel_offre=$data['id_Appeldoffre']; // on a trouvé l'id Appel d'offre et on va enregistrer cette fois les critères de selection

mysql_query("INSERT INTO critere_selection VALUES('" . $idApel_offre . "', '" . $cout . "','" . $delais . "', '" . $garantie . "', '" . $experience . "')");

//on va maintenant enregistrer le tableau de la description de l'Appel d'offre dans la table description_appeldoffre
    for ($i = 0; $i < $nbProduit; $i++) {
	     $prd = $_POST['prd'][$i];
	 	 $desc = $_POST['desc'][$i];
	 	 $qte = $_POST['qte'][$i];
	 	 $sql = "INSERT INTO description_appeldoffre(id_Appeldoffre,produit,quantite,description_produit) values ('idApel_offre','$prd','$qte','$desc')";
	 	 mysql_query ($sql)or die (mysql_error().$sql);
    }
	
	
echo '<script language=javascript> alert ("Votre Appel d\'offre a été enregistré!!");</script>';
      echo '<SCRIPT LANGUAGE="JavaScript"> document.location.href="membre.php" </SCRIPT>'; 
}
  
 }  
   
   mysql_close($n);
   }

?>
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
26 mai 2010 à 11:52
bonjour stivi quel est le probleme ?
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
1 juin 2010 à 12:03
j'ai mis le code en haut
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
1 juin 2010 à 12:43
salut stivi le code que t'a poster je ne pourrai le tester a moins que j'ai la base de donner donc tous ce que je peux faire c'est deboguer avec toi ton code pour commencer
mysql_query("INSERT INTO Appeldoffre VALUES('', '" . $id . "', '" . $objet . "', '" . time() . "', '" . $dateDepotOffre . "', '" . $modalitePaiement . "', '" . $modaliteLivraison . "', '" . $relance . "')"); 
remplace ca par
mysql_query("INSERT INTO Appeldoffre VALUES('', '" . $id . "', '" . $objet . "', '" . time() . "', '" . $dateDepotOffre . "', '" . $modalitePaiement . "', '" . $modaliteLivraison . "', '" . $relance . "')") or die(mysql_error()) comme ca si l'erreur viens de la syntaxe de requete tu le remarquera;
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
1 juin 2010 à 13:33
salut thunder merci e ta réponse!! oft j'avais le script qui marchais très bien avant que j'essaie d'inserer le tableau description appeld'offre dans la page!! et le code que je t donné se bloque quand il commence à vérifier le tableau donc quand sur la ligne où l'instruction est
 if($x==5)
  { 
   //on compte le nombre de produit saisie
$nbProduit = count($_POST['prd']);

for ($i = 0; $i < $nbProduit; $i++) {
     $prd = $_POST['prd'][$i];
	 $desc = $_POST['desc'][$i];
	 $qte = $_POST['qte'][$i];
	 //dabord si l'un des champs est vide
	 if (empty($prd) || empty($desc) || empty($qte)) {
	 
	     //on met debug a false
		 $debug = FALSE;
		 $error = "Erreur : ligne ".$i."\\n l\'un des champs requit est vide";
		 //on force l'arret de la boucle
		 break;
	   	 //j'utilise ici la fonction intval qui retourne en cas de succes pour convertir une chaine
	     // en chiffre la chaine saisie sinon elle renvoi 0
	 } 
	 elseif (intval($qte) == 0) {
	     //on met debug a false
		 $debug = FALSE;
		 $error = "Erreur : ligne ".$i."\\n la quantité doit être un chiffre";
		 //on force l'arret de la boucle
		 break;
	     //si la taille de la description depasse 300 caracteres
	 } 
	 elseif (strlen($desc) > 300 ) {
	     //on met debug a false
		 $debug = FALSE;
		 $error = "Erreur :ligne ".$i."\\n la description doit au maximum comporter 300 caracteres";
		 //on force l'arret de la boucle
		 break;
	 }
}
}

le serveur me dit que le temps maximal est dépassé!! il arrete l'execution du script!!
regarde le script serveur car je l'ai commenté à chaque ligne à partir de
if (isset($_POST['Submit'])) 
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
1 juin 2010 à 13:53
j'ai bien regarder le script le for ne cause pas de probleme mais ici
$x=5;
//debut des controles
   while($x==5) //pour forcer la boucle a etre executer!!
  { 
   //on va vérifier si les champs obligatoires sont vide!!
   if(empty($_POST['objet_appeldoffre']) OR empty($_POST['date_limite_depot_offre']) OR empty($_POST['modalite_paiement']) OR empty($_POST['modalite_livraison']) OR empty($_POST['garantie']) OR empty($_POST['experience']) OR empty($_POST['cout_offre']) OR empty($_POST['delais_livraison']))
   {	
	$debug = FALSE;
    $error='il y a un ou des champs obligatoires vide!!';
	break;
   
   }


la boucle ne s'aretra que si l'un de champs est de vide et si aucun des champs n'est vide tu sera planter dans une boucle infini
ensuite ni $_POST['objet_appeldoffre'] ni les autre sont des tableau ou du moins je ne vois pas qu'il on la structure d'un tableau donc pourkoi faire une boucle pour les verifier
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
2 juin 2010 à 10:01
salut thunder413 c vrai la boucle ne s'arrete pas c pourqoi meme si je completais les champs de la page sans mettre des erreurs le script se plantais!! mais Dieu merci je l'ai corrigé grace à toi!! maintenant l'enregistrement des données dans les tables se passe bien quand j'ai fait aucune erreur mais aussi si il y a des erreurs la page indique l'erreur s'arrete pour que l'internaute la corrige!!

Mon problème maintenant c'est que avec l'instruction windows.history.go(-1) je ne recupere pas les données que j'avais enregistré donc la page est vierge!!! moi j'utilisais value=$_POST pour recuper les données mais avec ca le tableau description appel d'offre je ne peux pas le retrouver!!

voici le code coté serveur après correction

<?php
 
   if (isset($_POST['Submit'])) 
   {
    $n = mysql_connect("localhost", "root", '');
        mysql_select_db("marketplace");
		
	  if (isset($_POST['objet_appeldoffre']) AND isset($_POST['date_limite_depot_offre']) AND isset($_POST['modalite_paiement']) AND isset($_POST['modalite_livraison']) AND isset($_POST['garantie']) AND isset($_POST['experience']) AND isset($_POST['cout_offre']) AND isset($_POST['delais_livraison']) AND isset($_POST['prd']) AND isset ($_POST['qte']) AND isset($_POST['desc']))
{	  
   $id=$_SESSION['id_membres'];
   
   $objet=mysql_real_escape_string(htmlspecialchars($_POST['objet_appeldoffre']));
   $dateDepotOffre=mysql_real_escape_string(htmlspecialchars($_POST['date_limite_depot_offre']));
   $modalitePaiement=mysql_real_escape_string(htmlspecialchars($_POST['modalite_paiement']));
   $modaliteLivraison=mysql_real_escape_string(htmlspecialchars($_POST['modalite_livraison']));
   $cout=mysql_real_escape_string(htmlspecialchars($_POST['cout_offre']));
   $delais=mysql_real_escape_string(htmlspecialchars($_POST['delais_livraison']));
   $garantie=mysql_real_escape_string(htmlspecialchars($_POST['garantie']));
   $experience=mysql_real_escape_string(htmlspecialchars($_POST['experience']));
   
 //on va vérifier s'il ya des champs vides
	if(empty($_POST['objet_appeldoffre']) OR empty($_POST['date_limite_depot_offre']) OR empty($_POST['modalite_paiement']) OR empty($_POST['modalite_livraison']) OR empty($_POST['garantie']) OR empty($_POST['experience']) OR empty($_POST['cout_offre']) OR empty($_POST['delais_livraison']))
   {
     $error = "Il y a un ou plusieurs champs obligatoires vides!!";   
	echo "<script type='text/javascript'>
        alert('".html_entity_decode($error)."');
        window.history.go(-1);
   </script>
   ";
   exit;
   }
   
   // on va vérifier la date de depot des offres si elle est valide
   
    $date = date('d/m/Y');
        
		//on va enlever les slash avec la fonction explode pour la mettre en format numérique 		
		$dateLimite = explode("/", $dateDepotOffre);
		$dateNow = explode("/", $date);
		
		//concaténation pour inverser l'ordre ( pour avoir l'ordre ci : annéemoisjour)
		$dateDepot = $dateLimite[2].$dateLimite[1].$dateLimite[0]; 
		$date = $dateNow[2].$dateNow[1].$dateNow[0];
       		
		// on va comparer les dates
		if ($dateDepot<$date)
       {
	   $error = "La date limite de dépôt des offres n\'est pas valide!";   
	echo "<script type='text/javascript'>
        alert('".html_entity_decode($error)."');
        window.history.go(-1);
   </script>
   ";
   exit;
	   }
   
   $total=$cout + $delais + $garantie + $experience; //on fait le total des pondérations
   
   if (($total > 10) OR ($total < 10))  // on vérifie le total s'il est égale à 10
    {
	$error = "Le total de votre pondération des critères de sélection doit être égale à 10!";   
	echo "<script type='text/javascript'>
        alert('".html_entity_decode($error)."');
        window.history.go(-1);
   </script>
   ";
   exit;
	 
    }	
	
//on compte le nombre de produit saisie
$nbProduit = count($_POST['prd']);
	
//on initialise une variable pour deboguage et une variable error 
//qui va contenir le message d'erreur
$debug = TRUE;
$error='';
//debut des controles

for ($i = 0; $i < $nbProduit; $i++) {
     $prd = $_POST['prd'][$i];
	 $desc = $_POST['desc'][$i];
	 $qte = $_POST['qte'][$i];
	 //dabord si l'un des champs est vide
	 if (empty($prd) || empty($desc) || empty($qte)) {
	 
	     //on met debug a false
		 $debug = FALSE;
		 $error = "Erreur : ligne ".$i."\\n l\'un des champs requit est vide";
		 //on force l'arret de la boucle
		 break;
	   	 //j'utilise ici la fonction intval qui retourne en cas de succes pour convertir une chaine
	     // en chiffre la chaine saisie sinon elle renvoi 0
	 } elseif (intval($qte) == 0) {
	     //on met debug a false
		 $debug = FALSE;
		 $error = "Erreur : ligne ".$i."\\n la quantité doit être un chiffre";
		 //on force l'arret de la boucle
		 break;
	     //si la taille de la description  depasse 300 caractere
	 } elseif (strlen($desc) > 300 ) {
	     //on met debug a false
		 $debug = FALSE;
		 $error = "Erreur :ligne ".$i."\\n la description doit au maximum comporter 300 caracteres";
		 //on force l'arret de la boucle
		 break;
	 }
}
// a a la sortie de la boucle si debug == FALSE
if (!$debug) {

   echo "<script type='text/javascript'>
        alert('".html_entity_decode($error)."');
        window.history.go(-1);
   </script>
   ";

} 
// maintenant il n'ya aucune erreur on peut enregistrer l'appel d'offre!!!
else {
$relance = 0; // comme c'est la première l'Appel d'offre est fait on lui donne comme valeur 0 pour le champ relance!! 
// on va d'abord enregistrer dans la table Appel d'offre et apreès recuperer l'id Appel d'offre pour l'utiliser dans les tables critères de selection et decription Appeldoffre
mysql_query("INSERT INTO Appeldoffre VALUES('', '" . $id . "', '" . $objet . "', '" . time() . "', '" . $dateDepotOffre . "', '" . $modalitePaiement . "', '" . $modaliteLivraison . "', '" . $relance . "')");
    
   $sql = "SELECT id_Appeldoffre FROM Appeldoffre WHERE objet_appeldoffre='$objet'"; // pour chercher l'id de l'Appel d'offre qu'on vient d'enregistrer!!
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$data = mysql_fetch_array($req);
$idApel_offre=$data['id_Appeldoffre']; // on a trouvé l'id Appel d'offre et on va enregistrer cette fois les critères de selection

mysql_query("INSERT INTO critere_selection VALUES('" . $idApel_offre . "', '" . $cout . "','" . $delais . "', '" . $garantie . "', '" . $experience . "')");

//on va maintenant enregistrer le tableau de la description de l'Appel d'offre dans la table description_appeldoffre
    for ($i = 0; $i < $nbProduit; $i++) {
	     $prd = $_POST['prd'][$i];
	 	 $desc = $_POST['desc'][$i];
	 	 $qte = $_POST['qte'][$i];
	 	 $sql = "INSERT INTO description_appeldoffre(id_Appeldoffre,produit,quantite,description_produit) values ('$idApel_offre','$prd','$qte','$desc')";
	 	 mysql_query ($sql)or die (mysql_error().$sql);
    }
	
	
echo '<script language=javascript> alert ("Votre Appel d\'offre a été enregistré!!");</script>';
      echo '<SCRIPT LANGUAGE="JavaScript"> document.location.href="membre.php" </SCRIPT>'; 
}
  
 }  
   
   mysql_close($n);
   }

?>
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
2 juin 2010 à 13:40
bonjour stiv,
je ne sais pâs pourkoi window.history(-1) ne marche pas mais tu veux recuperer le resultat apres l'insertion oubien
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
7 juin 2010 à 10:30
Bonjour thunder, je veux recuperer les données quand il y a des erreurs à l'envoie!! Normalement quand le serveur vérifie les données envoyées par le formulaire s'il trouve une erreur ,avec l'instruction alert, le serveur signale une erreur et le serveur envoie la page au navigateur avec les données que l'internaute avait écrites!! le navigateur les recupere avec les $_POST ou l'instruction window.history.go(-1)!!
moi je veux recuper les données s'il y a des erreurs car après enregistrement le serveur me dirige vers une autre page!!
merci de ton aide!!
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
7 juin 2010 à 11:46
Bonjour stivijulien
excuse moi si je me perd parfois c'est l'écart des poste qui me joue des tours alors donc je vais essayé de résume et tu va me dire la ou c'est faut
alors actuelemnt
- ton script enregistre bien les donné et te redirige vers une autre page
- si il y'a une erreur lors de l'enregistrement il n'arrive pas a récupérer les donné saisie // c'est la ton probleme ?

//dans ce cas une des solution possible c'est d'avoir une page qui vas contenir le formulaire seulement
//ensuite dans une autre page tu dit que si les variable post sont envoyer tu fait ton traitement php c à d l'insertion sinon il s'agit de la premiere fois qu'on appel le script tu inclue le formulaire et en cas d'erreur tu re-inclue le formulaire tous en affichant les donné

// l'avantage ici ce que le script va s'envoyer lui meme les variable poste donc tu as toujours acces a celle ci

//--
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
7 juin 2010 à 12:23
merci thunder j'ai bien entendu ce que tu viens de me dire !! donc je fait deux pages l'une qui va contenir le formulaire et l'autre qui va executer le traitement
la première page je vais la nommer appeldoffre.php et la deuxième appeldoffre2.php
dans la page appeldoffre.php dans le formulaire je vais l'envoyer vers la page appeldoffre2.php pour executer le script!! si la page appeldoffre2.php trouve une erreur j'inclut la page appeldoffre.php
moi je pourrais trouver les autres données mais le tableau appel d'offre ne revienne pas!!
je vais essayer et je te dis après si ca marché ou pas!! merci
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
7 juin 2010 à 13:05
thunder ca ne marché pas!!! peut tu me donne le code SVP ca fait un mois que j'essaie de faire executer cette page
merci de ton aide
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
7 juin 2010 à 14:56
pour que ce ci marche je vais supposer que offre.php est le fichier qui sera appeler c'est a dire quand tu voudra ajouter une offre c'est vers lui que tu vas linker ensuite dans celuici tu vas copier le code de traitement seulement quand c'est fait tu remonte au debut de ligne et tu met
if(isset($_POST['prd']) {//cette parenthese ne sera fermet que vers la fin du fichier
-----partie traitement ici
}

//juste en dessous tu met
if(!isset($_POST['prd']) || empty($error)) {

//affiche le formulaire
}
$error est une variable que tu vas declarer si il y'a une erreru lors du traitement donc le formulaire ne sera afficher que si $_POST[] n'a pas encore été envoyer ou que $errur est vide

bon je ne sais pas si c'est claire bon si tu veut tu peut me passer tes fichier(base SQL+php) t je te regle ca se soir
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
13 juin 2010 à 12:56
salut stivijulien voila tous dabord creer un fichier que tu nomera appeloffre.php et tu y met
<?php
 /*a page que je t'ai donné est une page qui s'appelle formulaire appel d'offre qui est accessible en session d'où le nom et le prenom de l'acheteur s'affiche automatique!! donc c'est cette page qu'on utilise pour faire un appel d'offre et si l'internaute fait son appel d'offre sans mettre des erreurs la page lui affiche un message que l'appel d'offre a été enregistré et lui dirige directement vers sa page membre!! */
?>
<script language="javascript">
/**
 * Cette fonction sert a supprimer une  ligne du tableau elle prend en parametre
 * l'id de la ligne
 */
function suppression (ligne) {
  
  // La suppression se fait en recuperent la ligne=noeud courant par son id ensuite on 
  //recupere le noeud parent avec parentNode et enfin on supprime avec removeChild  
  if( document.getElementById(ligne) ) {
      
	  document.getElementById(ligne).parentNode.removeChild(document.getElementById(ligne));
  }

}
/**
 * Cette fonction va servir pour la creation des inputs independament du navigateur
 * cette ca que j'avez oublier de preciser pour la premier fois
 */
function creerInput(name) {

   if( document.all){ // pour IE
   
       input = document.createElement("<input name='"+name+"'>");
   
   } else { // pour FF et autres navigateurs
       
	   input = document.createElement("input");
       input.name = name;
   }

   input.type = "text";
   
   return input;

}
/**
 * Cette fonction est appeler par le bouton ajouter elle place directement une ligne
 * comportant tous les input necessaire
 */ 
function AjouterLigne(){
   
   // On recupere la  tables des inputs 
   var table = document.getElementById('tableInput');
   // recuperation de tous les noeud fils tr
   var trs = table.getElementsByTagName('tr');
   // on crer un nouveau tr
   var newRow = document.getElementById('tableInput').insertRow(-1); 
   // ind va permetre de construire un id propre a chaque ligne sous la form 
   // row_1 row_2 ... row_N 
   
   var ind = trs.length-1;
   
   // si c'est pas la premiere fois qu'on fait appel a ajouterLigne()
   if( ind > 0 ) {
       
	   // Comme dit on se sert de ind pour construire l'id
       newRow.setAttribute("id","row_"+ind);
	   //setAttribute permet de definir un attribut a un element
       
	   //cette variable va contenir l'id elle sera passer en parametre a suppression
	   var idtr = "row_"+ind;
  
  } else {
      
	  // c'est la premiere fois qu'on appele ajouterLigne donc le id c'est row_1
	  newRow.setAttribute("id","row_1");
      var idtr = "row_1";
  }

// insert la cellule du numero 
var newCell = newRow.insertCell(0);
newCell.innerHTML = "<b style='color:#009900'>"+ind+"<b>";
// insert la cellule du nom_produit 
var newCell = newRow.insertCell(1);
   // on affect le select creer avec le php
   newCell.innerHTML = '<?php $max = count($option);echo '<select name="prd[]">';for( $i=0;$i< $max;$i++) {
		     echo '<option value="'.$option[$i].'">'.$option[$i].'</option>';
		   } echo '</select>'?>';
   //on laisse une place donc une colonne vide pour que les colonnes ne se colent pas
   var newCell = newRow.insertCell(2);
newCell.innerHTML = "";
//insert la celle quantite
var newCell = newRow.insertCell(3);
//creation du champs input qte
var qteInput = creerInput("qte[]");
//ajoute du champs qte a la cellule
newCell.appendChild(qteInput);

var newCell = newRow.insertCell(4);
newCell.innerHTML = "";
//insert la cellule description
newCell = newRow.insertCell(5);

//creation du textarea  desc


if( document.all){ // pour IE
   
       descInput = document.createElement("<textarea name='desc[]'>");
   
   } else { // pour FF et autres navigateurs
       
	   descInput = document.createElement("textarea");
       descInput.name = "desc[]";
   }
   descInput.cols='30';
   descInput.rows='5';
//ajoute du champs desc a la cellule
newCell.appendChild(descInput);

 //colonne pour ecrire maximum
   var newCell = newRow.insertCell(6);
newCell.innerHTML = "maximum";

//colonne pour ecrire 300
   var newCell = newRow.insertCell(7);
newCell.innerHTML = "300";

//colonne pour ecrire caractère
   var newCell = newRow.insertCell(8);
newCell.innerHTML = "caractères";

//insert la cellule du bouton supprimer
newCell = newRow.insertCell(9);

//creation du bouton supprimer
if( document.all){ // pour IE
   
       bouton = document.createElement("<input name='sup_"+id_tr+"'>");
   
   } else { // pour FF et autres navigateurs
       
	   bouton = document.createElement("input");
       bouton.name = "sup_"+idtr;
   }

  	bouton.type = "button";
  	bouton.value = "Supprimer";
	bouton.id = 'Supprimer';
	//on lui affect un evenement onclick
  	bouton.onclick = function(){
	                  suppression(idtr);
	};
  	newCell.appendChild(bouton);

}
function verif_formulaire()
{

if(document.form.objet_appeldoffre.value == "")  {
   alert("Veuillez donner l'objet du marché svp!");
   document.form.objet_appeldoffre.focus();
   return false;
  }

  if(document.form.date_limite_depot_offre.value == "")  {
   alert("Veuillez preciser la date limite de depôt des offres svp!");
   document.form.date_limite_depot_offre.focus();
   return false;
  }
  
  if(document.form.modalite_paiement.value == "") {
   alert("Veuillez preciser la modalité de paiement et l'unité monétaire svp!");
   document.form.modalite_paiement.focus();
   return false;
  }
  
   if(document.form.cout_offre.value == "") {
   alert("La pondération du coût de l'offre doit être superieure ou égale à zéro!!");
   document.form.cout_offre.focus();
   return false;
  }
  
  
  if(document.form.delais_livraison.value == "") {
   alert("La pondération du délai de livraison doit être superieure ou égale à zéro!!");
   document.form.delais_livraison.focus();
   return false;
  }
  
  if(document.form.garantie.value == "") {
   alert("La pondération de la garantie doit être superieure ou égale à zéro!!");
   document.form.garantie.focus();
   return false;
  }
  
    if(document.form.experience.value == "") {
   alert("La pondération de l'experience doit être superieure ou égale à zéro!!");
   document.form.experience.focus();
   return false;
  }
  

  
  {
      // Cette fonction vérifie le format JJ/MM/AAAA saisi et la validité de la date.
      // Le séparateur est défini dans la variable separateur
	  var d = document.form.date_limite_depot_offre.value;
	  
      var amin=2010; // année mini
      var separateur="/"; // separateur entre jour/mois/annee
      var j=(d.substring(0,2));
      var m=(d.substring(3,5));
      var a=(d.substring(6));
      
      if ( ((isNaN(j))||(j<1)||(j>31)) ) {
         alert("Le jour n'est pas correct.");
		 document.form.date_limite_depot_offre.focus();
		 return false;
      }
	  
      if ( ((isNaN(m))||(m<1)||(m>12)) ) {
         alert("Le mois n'est pas correct.");
		 document.form.date_limite_depot_offre.focus();
		 return false;
      }
	  
      if ( ((isNaN(a))||(a<amin)) ) {
         alert("L'année n'est pas correcte.");
		 document.form.date_limite_depot_offre.focus();
		 return false;
      }
	  
      if ( ((d.substring(2,3)!=separateur)||(d.substring(5,6)!=separateur)) ) {
         alert("Les séparateurs doivent être des "+separateur);
		 document.form.date_limite_depot_offre.focus();
		 return false;
      }
	    
	  	
         var d2=new Date(a,m-1,j);
         j2=d2.getDate();
         m2=d2.getMonth()+1;
         a2=d2.getFullYear();
         
         if ( (j!=j2)||(m!=m2)||(a!=a2) ) {
            alert("La date "+d+" n'existe pas !");
			document.form.date_limite_depot_offre.focus();
            return false;
         }
			 
			 
			 
			 
	  }


    
  }
</script>
<?php

?>
<div>
<div id="errorHandler">
<?php echo (!empty($error))?$error:'';?>
</div>
	  <blockquote>
	    <table width="100%" border="0">
          <tr>
            <td>

<form id="form" name="form" method="post" action="" onSubmit="return verif_formulaire()" >
<fieldset style="margin-left: 40px;"> <legend><em><strong> Vos Informations Personnelles</strong></em></legend>
               <table width="85%" border="0">
               <tr>
    <td width="34%"><label for="textfield">Nom et Prénom de l'Acheteur :</label></td>
    <td width="66%"><input type="text" name="textfield" id="textfield" size="30" readonly="" value="<?php echo $data['nom'].'   '.$data['prenom'];?>"  /></td>
  </tr>
  <tr>
    <td><label for="label">Adresse officielle de l'Entreprise :</label></td>
    <td><input type="text" name="textfield2" id="label" size="30" readonly="" value="<?php echo $data['adresse'];?>" /></td>
  </tr>
  <tr>
    <td><label for="label2">Pays et la ville :</label></td>
    <td><input type="text" name="textfield3" id="label2" size="30"  readonly=""  value="<?php echo $data['pays'].' ' .'-'. ' '.$data['ville'];?>" /></td>
  </tr>
</table> 
 </fieldset>
 <fieldset style="margin-left: 40px;"> <legend><em><strong> Votre Appel d'Offre</strong></em></legend>
     
	 <table width="85%" border="0">
               <tr>
    <td width="34%"><label for="textfield4"><span class="Style2">*</span> Objet du marché :</label></td>
    <td width="66%"><input type="text" name="objet_appeldoffre" id="textfield4" size="50" value="<?php echo $objet_appeldoffre?>"/></td>
  </tr>
   </table>
   <p><span class="Style2">*</span>Description de l'Appel d'offres :
		<div style="margin-left: 40px;">		 
    <table width="58%" border="0" style="border:1px solid #336699" id="tableProduit">
    <tr>
      <th width="2%"></th>
      <th width="14%"><label for="prd">Produit</label></th>
      <th width="23%"><label for="qte">Quantité</label></th>
      <th width="29%"><label for="desc">Description produit</label></th>
      <th width="32%">&nbsp;</th>
    </tr>
	<tr>
	  <td colspan="5">
	    <table width="574" border="0" id="tableInput">
	     <?php 
		 //si $error est vide c'est soit tous c'est bien passer soit on'a charger le formulaire pour la premiere fois
		 $i= 0;
		 $max = count($option);
		 if(empty($error)) {
			 
		 ?>
         <tr id="row_0">
         <td width="8"><b style="color:#009900">0</b></td>
         <td width="19">
         <select name="prd[]">
	       <?php 
		   for( $i=0;$i< $max;$i++) {
		     echo '<option value="'.$option[$i].'">'.$option[$i].'</option>';
		   }
		   ?>  
         </select>
         </td>
		 <td width="2">&nbsp;</td>
          <td width="144"><input type="text" name="qte[]"  /></td>
		  <td width="3">&nbsp; </td>
           <td width="141"><textarea name="desc[]" cols="30" rows="5"></textarea></td>
		   <td width="60">maximum</td>
		   <td width="24">300</td>
		   <td width="50">caractères</td>
           <td width="81"><input type="button"  id="sup_1"  value=" supprimer" disabled="disabled"/></td>
         </tr>
         <?php
		 } else {
		     //il y'a une erreur donc au recréé tous les champs
			 //on compte prd[]
			 $maxprd = count($prd);
			 for($x = 0; $x < $maxprd;$x++) {
		  ?>
          <tr id="row_<?php echo $i?>">
         <td width="8"><b style="color:#009900">0</b></td>
         <td width="19">
         <select name="prd[]">
	       <?php 
		   for( $i=0;$i<$max;$i++) {
		        //si le champs de prd a l'index $x correspond au produit a l'index $i on lui attribut  selected
				//sinon on affiche comme normale
				if($prd[$x] == $option[$i]) {
			 	  echo '<option value="'.$option[$i].'" selected>'.$option[$i].'</option>';
				} else {
				   echo '<option value="'.$option[$i].'">'.$option[$i].'</option>';
				}
		   }
		   ?>  
         </select>
         </td>
		 <td width="2">&nbsp;</td>
          <td width="144"><input type="text" name="qte[]"  value="<?php echo $qte[$x]?>"/></td>
		  <td width="3">&nbsp; </td>
           <td width="141"><textarea name="desc[]" cols="30" rows="5"><?php echo $desc[$x]?></textarea></td>
		   <td width="60">maximum</td>
		   <td width="24">300</td>
		   <td width="50">caractères</td>
           <td width="81"><input type="button"  id="sup_1"  value=" supprimer" disabled="disabled"/></td>
         </tr>
          <?php
			 }
		 }
		 ?>
	    </table>
	</td>
	</tr>
	<tr>
	<td colspan="5">
	<div align="center">
	<input type="button" name="addfields" value="Ajouter un produit" onClick="AjouterLigne()"> 
	</div>
	</td>
	</tr>
  </table>
  </div>
  <p>
  <table width="85%" border="0">
      <tr>
        <td width="34%"><label for="label4"><span class="Style2">*</span> Date limite de depot des Offres :</label></td>
        <td width="24%"><input type="text" name="date_limite_depot_offre" id="label4"  value="<?php echo $date_limite_depot_offre?>"/></td>
		<td width="42%"> jj/mm/AAAA</td>
      </tr>
    </table>
	           <table width="85%" border="0">
                 <tr>
                   <td width="34%"><label for="textarea"><span class="Style2">* </span>Modalité de paiement et Unité Monétaire :</label></td>
                   <td width="66%"><textarea name="modalite_paiement" id="textarea" cols="38"><?php echo $modalite_paiement?></textarea></td>
                 </tr>
                 <tr>
                   <td><label for="label3"><span class="Style2">* </span>Modalité de livraison et d'assurance :</label></td>
                   <td><textarea name="modalite_livraison" id="label3" cols="38"><?php echo $modalite_livraison?></textarea></td>
                 </tr>
               </table>
  </fieldset>
  <fieldset style="margin-left: 40px;"> <legend><em><strong> Les critères de sélection</strong></em></legend>
              <p>Critère de Selection  et leur pondération : </p>
			  
              <table width="85%" border="0">
                <tr>
                  <td width="35%"><label for="label6"><span class="Style2">*</span> Coût de l'offre :</label></td>
                  <td width="65%"><input type="text" name="cout_offre" id="label6" value="<?php echo $cout_offre?>" maxlength=2 onKeypress="if((event.keyCode < 45 || event.keyCode > 57) &&  event.keyCode != 32 &&  event.keyCode != 8 &&  event.keyCode != 0) event.returnValue = false; if((event.which < 45 || event.which > 57)  &&  event.which != 32  &&  event.which != 8  &&  event.which != 0 ) return false;" /></td>
                </tr>
                <tr>
                  <td><label for="label7"><span class="Style2">*</span> Délai de livraison :</label></td>
                  <td><input type="text" name="delais_livraison" id="label7" value="<?php echo $delais_livraison?>" maxlength=2 onKeypress="if((event.keyCode < 45 || event.keyCode > 57) &&  event.keyCode != 32 &&  event.keyCode != 8 &&  event.keyCode != 0) event.returnValue = false; if((event.which < 45 || event.which > 57)  &&  event.which != 32  &&  event.which != 8  &&  event.which != 0 ) return false;" /></td>
                </tr>
                <tr>
                  <td><label for="label8"><span class="Style2">* </span>Service Après vente et assistance technique :</label></td>
                  <td><input type="text" name="garantie" id="label8" value="<?php echo $garantie?>" maxlength=2 onKeypress="if((event.keyCode < 45 || event.keyCode > 57) &&  event.keyCode != 32 &&  event.keyCode != 8 &&  event.keyCode != 0) event.returnValue = false; if((event.which < 45 || event.which > 57)  &&  event.which != 32  &&  event.which != 8  &&  event.which != 0 ) return false;" /></td>
                </tr>
                <tr>
                  <td><label for="label9"><span class="Style2">* </span>Experience :</label></td>
                  <td><input type="text" name="experience" id="label9" value="<?php echo $experience?>" maxlength=2 onKeypress="if((event.keyCode < 45 || event.keyCode > 57) &&  event.keyCode != 32 &&  event.keyCode != 8 &&  event.keyCode != 0) event.returnValue = false; if((event.which < 45 || event.which > 57)  &&  event.which != 32  &&  event.which != 8  &&  event.which != 0 ) return false;" /></td>
                </tr>
              </table>
			  </fieldset>
			 <p align="center">Tous les champs indiqués par une étoile (<span class="Style2">*</span>) sont   obligatoires.</p>
                  <p align="center">
                    <label for="Submit"></label>
                    <input type="submit" name="Submit" value="Envoyer" id="Submit" />
                  </p>
				 
  </form>

</td>
          </tr>
        </table>
	  </blockquote>
    </div>
  

ensuite un deuxieme fichier que tue tu nommera appeloffre2.php et tu y met
<?php
  // Demarage de la session
 session_start();
 $_SESSION['id_membres'] = '1';
 header('content-type: text/html; charset=utf-8');//tu peut supprimer cette ligne apres je suis en utf-8 c'est pour ca
 //Connexion a la BD
 //en developpement met toujours die(mysql_error()) pour le deboguage
 $n = mysql_connect("localhost", "root", "") or die(mysql_error());
 mysql_select_db("marketplace") or die(mysql_error());
 //Récuperation des données de l'utilisateur
 $id = $_SESSION['id_membres'];
 $sql = "SELECT * FROM membres WHERE id_membres='$id'";
 $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 $data = mysql_fetch_array($req);
 // Récupération des differents produit de la table produit
 $sq2 = "SELECT * FROM produit";
 $result = mysql_query($sq2) or die(mysql_error());
 $option = array();//ici c'est un array que je vais declarer tu vera dans le formulaire comment je vais l'utiliser
 while( $row = mysql_fetch_assoc($result) ) {
	    $option []= $row['nom_produit'];
 } 
 mysql_free_result($result);//on librere les ressources
 // pas besoin de mysql_close() la connexiuon vas se fermer toute seul a la fin du script

 //ici on va gerer le contenu des champs du formulaire je vais utiliser l'oprateur ternaire pour plus de commodité j'espere que tu est initié a son utilisation
 $objet_appeldoffre = isset($_POST['objet_appeldoffre'])?$_POST['objet_appeldoffre']:'';
 $date_limite_depot_offre = isset($_POST['date_limite_depot_offre'])?$_POST['date_limite_depot_offre']:'';
 $modalite_paiement = isset($_POST['modalite_paiement'])?$_POST['modalite_paiement']:'';
 $modalite_livraison = isset($_POST['modalite_livraison'])?$_POST['modalite_livraison']:'';
 $cout_offre = isset($_POST['cout_offre'])?$_POST['cout_offre']:'';
 $delais_livraison = isset($_POST['delais_livraison'])?$_POST['delais_livraison']:'';
 $garantie = isset($_POST['garantie'])?$_POST['garantie']:'';
 $experience = isset($_POST['experience'])?$_POST['experience']:'';
 $prd = isset($_POST['prd'])?$_POST['prd']:'';
 $qte = isset($_POST['qte'])?$_POST['qte']:'';
 $desc =  isset($_POST['desc'])?$_POST['desc']:'';
 //Maintenant 2 cas sont possible soit on a charger cette page pour la premiere fois soit on'a cliquer sur le bouton submit
 
 /* CAS - 1 : on'a charger pour la premiere fois le formulaire*/
 if(!isset($_POST['Submit'])) {
    //On inclue le formulaire tous simplement
	include 'appeloffre.php';
 } 
 /* CAS - 2 : on doit inserer*/
 else {
   //initialise $error;
   $error = '';
   //maintenat tu fait tous le reste de tes controles
  // et a chaque fois que tu recontre une erreur tu affecte un message dans dans $error;
  
         //traitement

  $error = 'erreur';
 	//Maintenat pour savoir si oui ou non une erreur existe il suffit de verfier si $êrror est vide sinon tu faites insertion
 	if(!empty($error)) {
	 	//il y'a une erreur on inclue le formulaire
    	include 'appeloffre.php';
		//et l'erruer lui sera afficher 
 	}
 }
?>
j'ai les bien commenter et ca devrai marcher attention au identation du code quand tu copie 
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
13 juin 2010 à 14:32
merci thunder je m'y met tout de suite!! et je dirais demain si ca bien marché
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
15 juin 2010 à 08:56
thunder bonjour!! j'ai testé le code que vous m'avez donné ça marche mais le tableau s'oppose toujours!!
si il ya une erreur qui ne se trouve pas sur le taleau description appel d'offre, la page affiche l'erreur et le formulaire mais le bouton supprimer du tableau est inactif!!

si il ya une erreur dans le tableau, la page affiche l'erreur mais il n'affiche pas toutes les lignes du tableau seulement la première ligne!!
et j'ai essayé aussi de completer le formulaire sans mettre des erreurs, l'appel d'offre n'est pas enregistré mais les autres notamment description appel d'offre et critère de selection le sont mais ils n'ont pas l'id_Appel d'offre
je vais vous donner le code de traitement vous allez me le tester :

 //on va vérifier s'il ya des champs vides
	if(empty($_POST['objet_appeldoffre']) OR empty($_POST['date_limite_depot_offre']) OR empty($_POST['modalite_paiement']) OR empty($_POST['modalite_livraison']) OR empty($_POST['garantie']) OR empty($_POST['experience']) OR empty($_POST['cout_offre']) OR empty($_POST['delais_livraison']))
   {
     $error ='Il y a un ou des champs obligatoires vides!!';

   }
   
   // on va vérifier la date de depot des offres si elle est valide
   
    $date = date('d/m/Y');
        
		//on va enlever les slash avec la fonction explode pour la mettre en format numérique 		
		$dateLimite = explode("/", $dateDepotOffre);
		$dateNow = explode("/", $date);
		
		//concaténation pour inverser l'ordre ( pour avoir l'ordre ci : annéemoisjour)
		$dateDepot = $dateLimite[2].$dateLimite[1].$dateLimite[0]; 
		$date = $dateNow[2].$dateNow[1].$dateNow[0];
       		
		// on va comparer les dates
		if ($dateDepot<$date)
       {
	   $error = "La date limite de dépôt des offres n\'est pas valide!";   
		   }
   
   $total=$cout + $delais + $garantie + $experience; //on fait le total des pondérations
   
   if (($total > 10) OR ($total < 10))  // on vérifie le total s'il est égale à 10
    {
$error = "Le total de votre pondération des critères de sélection doit être égale à 10!";   
	 
    }	
	
//on compte le nombre de produit saisie
$nbProduit = count($_POST['prd']);
	
//on initialise une variable pour deboguage  
$debug = TRUE;
//debut des controles

for ($i = 0; $i < $nbProduit; $i++) {
     $prd = $_POST['prd'][$i];
	 $desc = $_POST['desc'][$i];
	 $qte = $_POST['qte'][$i];
	 //dabord si l'un des champs est vide
	 if (empty($prd) || empty($desc) || empty($qte)) {
	 
	     //on met debug a false
		 $debug = FALSE;
		 $error = "Erreur : ligne ".$i."\\n l\'un des champs requit est vide";
		 //on force l'arret de la boucle
		 break;
	   	 //j'utilise ici la fonction intval qui retourne en cas de succes pour convertir une chaine
	     // en chiffre la chaine saisie sinon elle renvoi 0
	 } elseif (intval($qte) == 0) {
	     //on met debug a false
		 $debug = FALSE;
		 $error = "Erreur : ligne ".$i."\\n la quantité doit être un chiffre";
		 //on force l'arret de la boucle
		 break;
	     //si la taille de la description  depasse 300 caractere
	 } elseif (strlen($desc) > 300 ) {
	     //on met debug a false
		 $debug = FALSE;
		 $error = "Erreur :ligne ".$i."\\n la description doit au maximum comporter 300 caracteres";
		 //on force l'arret de la boucle
		 break;
	 }
}
// a a la sortie de la boucle si debug == FALSE
if (!$debug) {

  $error = $error;

} 
// maintenant il n'ya aucune erreur on peut enregistrer l'appel d'offre!!!
else {
$relance = 0; // comme c'est la première fois aue l'Appel d'offre est fait on lui donne comme valeur 0 pour le champ relance!! 
$annule = 0; // l'Appel n'a pas encore été annulé!!
$accepte = 0;// l'Appel d'offre n'a pas encore eu de résultat pour qu'il soit accepté donc accepté = 0
// on va d'abord enregistrer dans la table Appel d'offre et apreès recuperer l'id Appel d'offre pour l'utiliser dans les tables critères de selection et decription Appeldoffre
mysql_query("INSERT INTO Appeldoffre VALUES('', '" . $id . "', '" . $objet . "', '" . time() . "', '" . $dateDepotOffre . "', '" . $modalitePaiement . "', '" . $modaliteLivraison . "', '" . $relance . "', '" . $annule . "', '" . $accepte . "')");
    
   $sql = "SELECT id_Appeldoffre FROM Appeldoffre WHERE objet_appeldoffre='$objet'"; // pour chercher l'id de l'Appel d'offre qu'on vient d'enregistrer!!
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$data = mysql_fetch_array($req);
$idApel_offre=$data['id_Appeldoffre']; // on a trouvé l'id Appel d'offre et on va enregistrer cette fois les critères de selection

mysql_query("INSERT INTO critere_selection VALUES('" . $idApel_offre . "', '" . $cout . "','" . $delais . "', '" . $garantie . "', '" . $experience . "')");

//on va maintenant enregistrer le tableau de la description de l'Appel d'offre dans la table description_appeldoffre
    for ($i = 0; $i < $nbProduit; $i++) {
	     $prd = $_POST['prd'][$i];
	 	 $desc = $_POST['desc'][$i];
	 	 $qte = $_POST['qte'][$i];
	 	 $sql = "INSERT INTO description_appeldoffre(id_Appeldoffre,produit,quantite,description_produit) values ('$idApel_offre','$prd','$qte','$desc')";
	 	 mysql_query ($sql)or die (mysql_error().$sql);
    }
	
	
echo '<script language=javascript> alert ("Votre Appel d\'offre a été enregistré!!");</script>';
      echo '<SCRIPT LANGUAGE="JavaScript"> document.location.href="membre.php" </SCRIPT>'; 
}
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
15 juin 2010 à 12:58
thunder ta essayer le code traitement que je t'ai envoyé?!!
merci de ton aide
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
16 juin 2010 à 13:51
thunder 413 j'attend ta réponse :(
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
16 juin 2010 à 14:10
salut stivijulien voici le code appeld'offre modifier le coté formulaire et tous marche suppression ect et ca recupere aussi toutes les infos
<?php
 /*a page que je t'ai donné est une page qui s'appelle formulaire appel d'offre qui est accessible en session d'où le nom et le prenom de l'acheteur s'affiche automatique!! donc c'est cette page qu'on utilise pour faire un appel d'offre et si l'internaute fait son appel d'offre sans mettre des erreurs la page lui affiche un message que l'appel d'offre a été enregistré et lui dirige directement vers sa page membre!! */
?>
<script language="javascript">
/**
 * Cette fonction sert a supprimer une  ligne du tableau elle prend en parametre
 * l'id de la ligne
 */
function suppression (ligne) {
  
  // La suppression se fait en recuperent la ligne=noeud courant par son id ensuite on 
  //recupere le noeud parent avec parentNode et enfin on supprime avec removeChild  
  if( document.getElementById(ligne) ) {
      
	  document.getElementById(ligne).parentNode.removeChild(document.getElementById(ligne));
  }

}
/**
 * Cette fonction va servir pour la creation des inputs independament du navigateur
 * cette ca que j'avez oublier de preciser pour la premier fois
 */
function creerInput(name) {

   if( document.all){ // pour IE
   
       input = document.createElement("<input name='"+name+"'>");
   
   } else { // pour FF et autres navigateurs
       
	   input = document.createElement("input");
       input.name = name;
   }

   input.type = "text";
   
   return input;

}
/**
 * Cette fonction est appeler par le bouton ajouter elle place directement une ligne
 * comportant tous les input necessaire
 */ 
function AjouterLigne(){
   
   // On recupere la  tables des inputs 
   var table = document.getElementById('tableInput');
   // recuperation de tous les noeud fils tr
   var trs = table.getElementsByTagName('tr');
   // on crer un nouveau tr
   var newRow = document.getElementById('tableInput').insertRow(-1); 
   // ind va permetre de construire un id propre a chaque ligne sous la form 
   // row_1 row_2 ... row_N 
   
   var ind = trs.length-1;
   
   // si c'est pas la premiere fois qu'on fait appel a ajouterLigne()
   if( ind > 0 ) {
       
	   // Comme dit on se sert de ind pour construire l'id
       newRow.setAttribute("id","row_"+ind);
	   //setAttribute permet de definir un attribut a un element
       
	   //cette variable va contenir l'id elle sera passer en parametre a suppression
	   var idtr = "row_"+ind;
  
  } else {
      
	  // c'est la premiere fois qu'on appele ajouterLigne donc le id c'est row_1
	  newRow.setAttribute("id","row_1");
      var idtr = "row_1";
  }

// insert la cellule du numero 
var newCell = newRow.insertCell(0);
newCell.innerHTML = "<b style='color:#009900'>"+ind+"<b>";
// insert la cellule du nom_produit 
var newCell = newRow.insertCell(1);
   // on affect le select creer avec le php
   newCell.innerHTML = '<?php $max = count($option);echo '<select name="prd[]">';for( $i=0;$i< $max;$i++) {
		     echo '<option value="'.$option[$i].'">'.$option[$i].'</option>';
		   } echo '</select>'?>';
   //on laisse une place donc une colonne vide pour que les colonnes ne se colent pas
   var newCell = newRow.insertCell(2);
newCell.innerHTML = "";
//insert la celle quantite
var newCell = newRow.insertCell(3);
//creation du champs input qte
var qteInput = creerInput("qte[]");
//ajoute du champs qte a la cellule
newCell.appendChild(qteInput);

var newCell = newRow.insertCell(4);
newCell.innerHTML = "";
//insert la cellule description
newCell = newRow.insertCell(5);

//creation du textarea  desc


if( document.all){ // pour IE
   
       descInput = document.createElement("<textarea name='desc[]'>");
   
   } else { // pour FF et autres navigateurs
       
	   descInput = document.createElement("textarea");
       descInput.name = "desc[]";
   }
   descInput.cols='30';
   descInput.rows='5';
//ajoute du champs desc a la cellule
newCell.appendChild(descInput);

 //colonne pour ecrire maximum
   var newCell = newRow.insertCell(6);
newCell.innerHTML = "maximum";

//colonne pour ecrire 300
   var newCell = newRow.insertCell(7);
newCell.innerHTML = "300";

//colonne pour ecrire caractère
   var newCell = newRow.insertCell(8);
newCell.innerHTML = "caractères";

//insert la cellule du bouton supprimer
newCell = newRow.insertCell(9);

//creation du bouton supprimer
if( document.all){ // pour IE
   
       bouton = document.createElement("<input name='sup_"+id_tr+"'>");
   
   } else { // pour FF et autres navigateurs
       
	   bouton = document.createElement("input");
       bouton.name = "sup_"+idtr;
   }

  	bouton.type = "button";
  	bouton.value = "Supprimer";
	bouton.id = 'Supprimer';
	//on lui affect un evenement onclick
  	bouton.onclick = function(){
	                  suppression(idtr);
	};
  	newCell.appendChild(bouton);

}
function verif_formulaire()
{

if(document.form.objet_appeldoffre.value == "")  {
   alert("Veuillez donner l'objet du marché svp!");
   document.form.objet_appeldoffre.focus();
   return false;
  }

  if(document.form.date_limite_depot_offre.value == "")  {
   alert("Veuillez preciser la date limite de depôt des offres svp!");
   document.form.date_limite_depot_offre.focus();
   return false;
  }
  
  if(document.form.modalite_paiement.value == "") {
   alert("Veuillez preciser la modalité de paiement et l'unité monétaire svp!");
   document.form.modalite_paiement.focus();
   return false;
  }
  
   if(document.form.cout_offre.value == "") {
   alert("La pondération du coût de l'offre doit être superieure ou égale à zéro!!");
   document.form.cout_offre.focus();
   return false;
  }
  
  
  if(document.form.delais_livraison.value == "") {
   alert("La pondération du délai de livraison doit être superieure ou égale à zéro!!");
   document.form.delais_livraison.focus();
   return false;
  }
  
  if(document.form.garantie.value == "") {
   alert("La pondération de la garantie doit être superieure ou égale à zéro!!");
   document.form.garantie.focus();
   return false;
  }
  
    if(document.form.experience.value == "") {
   alert("La pondération de l'experience doit être superieure ou égale à zéro!!");
   document.form.experience.focus();
   return false;
  }
  

  
  {
      // Cette fonction vérifie le format JJ/MM/AAAA saisi et la validité de la date.
      // Le séparateur est défini dans la variable separateur
	  var d = document.form.date_limite_depot_offre.value;
	  
      var amin=2010; // année mini
      var separateur="/"; // separateur entre jour/mois/annee
      var j=(d.substring(0,2));
      var m=(d.substring(3,5));
      var a=(d.substring(6));
      
      if ( ((isNaN(j))||(j<1)||(j>31)) ) {
         alert("Le jour n'est pas correct.");
		 document.form.date_limite_depot_offre.focus();
		 return false;
      }
	  
      if ( ((isNaN(m))||(m<1)||(m>12)) ) {
         alert("Le mois n'est pas correct.");
		 document.form.date_limite_depot_offre.focus();
		 return false;
      }
	  
      if ( ((isNaN(a))||(a<amin)) ) {
         alert("L'année n'est pas correcte.");
		 document.form.date_limite_depot_offre.focus();
		 return false;
      }
	  
      if ( ((d.substring(2,3)!=separateur)||(d.substring(5,6)!=separateur)) ) {
         alert("Les séparateurs doivent être des "+separateur);
		 document.form.date_limite_depot_offre.focus();
		 return false;
      }
	    
	  	
         var d2=new Date(a,m-1,j);
         j2=d2.getDate();
         m2=d2.getMonth()+1;
         a2=d2.getFullYear();
         
         if ( (j!=j2)||(m!=m2)||(a!=a2) ) {
            alert("La date "+d+" n'existe pas !");
			document.form.date_limite_depot_offre.focus();
            return false;
         }
			 
			 
			 
			 
	  }


    
  }
</script>
<?php

?>
<div>
<div id="errorHandler">
<?php echo (!empty($error))?$error:'';?>
</div>
	  <blockquote>
	    <table width="100%" border="0">
          <tr>
            <td>

<form id="form" name="form" method="post" action="" onSubmit="return verif_formulaire()" >
<fieldset style="margin-left: 40px;"> <legend><em><strong> Vos Informations Personnelles</strong></em></legend>
               <table width="85%" border="0">
               <tr>
    <td width="34%"><label for="textfield">Nom et Prénom de l'Acheteur :</label></td>
    <td width="66%"><input type="text" name="textfield" id="textfield" size="30" readonly="" value="<?php echo $data['nom'].'   '.$data['prenom'];?>"  /></td>
  </tr>
  <tr>
    <td><label for="label">Adresse officielle de l'Entreprise :</label></td>
    <td><input type="text" name="textfield2" id="label" size="30" readonly="" value="<?php echo $data['adresse'];?>" /></td>
  </tr>
  <tr>
    <td><label for="label2">Pays et la ville :</label></td>
    <td><input type="text" name="textfield3" id="label2" size="30"  readonly=""  value="<?php echo $data['pays'].' ' .'-'. ' '.$data['ville'];?>" /></td>
  </tr>
</table> 
 </fieldset>
 <fieldset style="margin-left: 40px;"> <legend><em><strong> Votre Appel d'Offre</strong></em></legend>
     
	 <table width="85%" border="0">
               <tr>
    <td width="34%"><label for="textfield4"><span class="Style2">*</span> Objet du marché :</label></td>
    <td width="66%"><input type="text" name="objet_appeldoffre" id="textfield4" size="50" value="<?php echo $objet_appeldoffre?>"/></td>
  </tr>
   </table>
   <p><span class="Style2">*</span>Description de l'Appel d'offres :
		<div style="margin-left: 40px;">		 
    <table width="58%" border="0" style="border:1px solid #336699" id="tableProduit">
    <tr>
      <th width="2%"></th>
      <th width="14%"><label for="prd">Produit</label></th>
      <th width="23%"><label for="qte">Quantité</label></th>
      <th width="29%"><label for="desc">Description produit</label></th>
      <th width="32%">&nbsp;</th>
    </tr>
	<tr>
	  <td colspan="5">
	    <table width="574" border="0" id="tableInput">
	     <?php 
		 //si $error est vide c'est soit tous c'est bien passer soit on'a charger le formulaire pour la premiere fois
		 $i= 0;
		 $max = count($option);
		 if(empty($error)) {
			 
		 ?>
         <tr id="row_0">
         <td width="8"><b style="color:#009900">0</b></td>
         <td width="19">
         <select name="prd[]">
	       <?php 
		   for( $i=0;$i< $max;$i++) {
		     echo '<option value="'.$option[$i].'">'.$option[$i].'</option>';
		   }
		   ?>  
         </select>
         </td>
		 <td width="2">&nbsp;</td>
          <td width="144"><input type="text" name="qte[]"  /></td>
		  <td width="3">&nbsp; </td>
           <td width="141"><textarea name="desc[]" cols="30" rows="5"></textarea></td>
		   <td width="60">maximum</td>
		   <td width="24">300</td>
		   <td width="50">caractères</td>
           <td width="81"><input type="button"  id="sup_1"  value=" supprimer" disabled="disabled"/></td>
         </tr>
         <?php
		 } else {
		     //il y'a une erreur donc au recréé tous les champs
			 //on compte prd[]
			 $maxprd = count($prd);
			 
			 for($x = 0; $x < $maxprd;$x++) {
		  ?>
          <tr id="row_<?php echo $x?>">
         <td width="8"><b style="color:#009900">0</b></td>
         <td width="19">
         <select name="prd[]">
	       <?php 
		   for( $i=0;$i<$max;$i++) {
		        //si le champs de prd a l'index $x correspond au produit a l'index $i on lui attribut  selected
				//sinon on affiche comme normale
				if($prd[$x] == $option[$i]) {
			 	  echo '<option value="'.$option[$i].'" selected>'.$option[$i].'</option>';
				} else {
				   echo '<option value="'.$option[$i].'">'.$option[$i].'</option>';
				}
		   }
		   ?>  
         </select>
         </td>
		 <td width="2">&nbsp;</td>
          <td width="144"><input type="text" name="qte[]"  value="<?php echo $qte[$x]?>"/></td>
		  <td width="3">&nbsp; </td>
           <td width="141"><textarea name="desc[]" cols="30" rows="5"><?php echo $desc[$x]?></textarea></td>
		   <td width="60">maximum</td>
		   <td width="24">300</td>
		   <td width="50">caractères</td>
           <td width="81">
           <?php echo ($x==0)?'<input type="button"  id="sup_1"  value=" supprimer" disabled="disabled"/>':'<input type="button"  id="sup_'.($x).'"  value=" supprimer" onclick="suppression (\'row_'.$x.'\')"/>'?>
           </td>
         </tr>
          <?php
			 }
		 }
		 ?>
	    </table>
	</td>
	</tr>
	<tr>
	<td colspan="5">
	<div align="center">
	<input type="button" name="addfields" value="Ajouter un produit" onClick="AjouterLigne()"> 
	</div>
	</td>
	</tr>
  </table>
  </div>
  <p>
  <table width="85%" border="0">
      <tr>
        <td width="34%"><label for="label4"><span class="Style2">*</span> Date limite de depot des Offres :</label></td>
        <td width="24%"><input type="text" name="date_limite_depot_offre" id="label4"  value="<?php echo $date_limite_depot_offre?>"/></td>
		<td width="42%"> jj/mm/AAAA</td>
      </tr>
    </table>
	           <table width="85%" border="0">
                 <tr>
                   <td width="34%"><label for="textarea"><span class="Style2">* </span>Modalité de paiement et Unité Monétaire :</label></td>
                   <td width="66%"><textarea name="modalite_paiement" id="textarea" cols="38"><?php echo $modalite_paiement?></textarea></td>
                 </tr>
                 <tr>
                   <td><label for="label3"><span class="Style2">* </span>Modalité de livraison et d'assurance :</label></td>
                   <td><textarea name="modalite_livraison" id="label3" cols="38"><?php echo $modalite_livraison?></textarea></td>
                 </tr>
               </table>
  </fieldset>
  <fieldset style="margin-left: 40px;"> <legend><em><strong> Les critères de sélection</strong></em></legend>
              <p>Critère de Selection  et leur pondération : </p>
			  
              <table width="85%" border="0">
                <tr>
                  <td width="35%"><label for="label6"><span class="Style2">*</span> Coût de l'offre :</label></td>
                  <td width="65%"><input type="text" name="cout_offre" id="label6" value="<?php echo $cout_offre?>" maxlength=2 onKeypress="if((event.keyCode < 45 || event.keyCode > 57) &&  event.keyCode != 32 &&  event.keyCode != 8 &&  event.keyCode != 0) event.returnValue = false; if((event.which < 45 || event.which > 57)  &&  event.which != 32  &&  event.which != 8  &&  event.which != 0 ) return false;" /></td>
                </tr>
                <tr>
                  <td><label for="label7"><span class="Style2">*</span> Délai de livraison :</label></td>
                  <td><input type="text" name="delais_livraison" id="label7" value="<?php echo $delais_livraison?>" maxlength=2 onKeypress="if((event.keyCode < 45 || event.keyCode > 57) &&  event.keyCode != 32 &&  event.keyCode != 8 &&  event.keyCode != 0) event.returnValue = false; if((event.which < 45 || event.which > 57)  &&  event.which != 32  &&  event.which != 8  &&  event.which != 0 ) return false;" /></td>
                </tr>
                <tr>
                  <td><label for="label8"><span class="Style2">* </span>Service Après vente et assistance technique :</label></td>
                  <td><input type="text" name="garantie" id="label8" value="<?php echo $garantie?>" maxlength=2 onKeypress="if((event.keyCode < 45 || event.keyCode > 57) &&  event.keyCode != 32 &&  event.keyCode != 8 &&  event.keyCode != 0) event.returnValue = false; if((event.which < 45 || event.which > 57)  &&  event.which != 32  &&  event.which != 8  &&  event.which != 0 ) return false;" /></td>
                </tr>
                <tr>
                  <td><label for="label9"><span class="Style2">* </span>Experience :</label></td>
                  <td><input type="text" name="experience" id="label9" value="<?php echo $experience?>" maxlength=2 onKeypress="if((event.keyCode < 45 || event.keyCode > 57) &&  event.keyCode != 32 &&  event.keyCode != 8 &&  event.keyCode != 0) event.returnValue = false; if((event.which < 45 || event.which > 57)  &&  event.which != 32  &&  event.which != 8  &&  event.which != 0 ) return false;" /></td>
                </tr>
              </table>
			  </fieldset>
			 <p align="center">Tous les champs indiqués par une étoile (<span class="Style2">*</span>) sont   obligatoires.</p>
                  <p align="center">
                    <label for="Submit"></label>
                    <input type="submit" name="Submit" value="Envoyer" id="Submit" />
                  </p>
				 
  </form>

</td>
          </tr>
        </table>
	  </blockquote>
    </div>
  
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
16 juin 2010 à 14:16
dans ton script le $debug tu n'en a plus besoin t'a juste a mettre dans $error l'erreur que tu veux afficher et aussi ajoute or die mysql_error() a toute tes requêtes sql comme ca tu verra si l'erreur est produit par la syntaxe sql
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
17 juin 2010 à 11:18
salut thunder je vais l'essayer!! encore une fois merci mais le bouton supprimer a un problème il ne s'affiche pas en IE et le numero des produits ne s'actualise pas quand on supprime un produit car il y a des fois où les produits ont le meme numero! merci
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
17 juin 2010 à 11:46
Thunder ca marche les boutons supprimer sont maintenant actif quand il ya une erreur!! mais comment vérifier le tableau car si je fais une boucle pour vérifier le tableau si la premiere ligne a une erreur la page va seulement afficher la première ligne seulement !! donc tant que il y a une erreur dans le tableau la page va toujours affiche la première ligne comment faire?!!
si je met les break ou pas dans la boucle c'est la meme chose!!
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
17 juin 2010 à 12:04
salut stivi c'est acause de ca
for ($i = 0; $i < $nbProduit; $i++) {
$prd = $_POST['prd'][$i];
$desc = $_POST['desc'][$i];
$qte = $_POST['qte'][$i];
}
tu n'affecte a prd et autre les valeur que dans la boucle donc ce qui fait que si on sort de la boucle du a un break prd ne contient que les elements avant le break doit tu doit faire avant d'entrer dans la boucle
$prd = isset($_POST['prd'])?$_POST['prd']:'';
$desc = isset($_POST['desc'])?$_POST['desc']:'';
$qte = isset($_POST['qte'])?$_POST['qte']:'';
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
17 juin 2010 à 12:28
J'ai changé mais ca m'affiche cette erreur

Warning: strlen() expects parameter 1 to be string, array given in C:\wamp\www\placeDream\appeldoffre.php on line 110

je vais envoyer le code pour vérifier le tableau ca sera plus simple

	  //on compte le nombre de produit saisie
	  
$nbProduit = count($_POST['prd']);
	  
	  for ($i = 0; $i < $nbProduit; $i++) {
     $prd = isset($_POST['prd'])?$_POST['prd']:''; 
$desc = isset($_POST['desc'])?$_POST['desc']:''; 
$qte = isset($_POST['qte'])?$_POST['qte']:'';
	 //dabord si l'un des champs est vide
	 if (empty($prd) || empty($desc) || empty($qte)) {
	 
		 $error = "Erreur : ligne ".$i."\\n l\'un des champs requit est vide";
		 //on force l'arret de la boucle
		 break;
	   	 //j'utilise ici la fonction intval qui retourne en cas de succes pour convertir une chaine
	     // en chiffre la chaine saisie sinon elle renvoi 0
	 } elseif (intval($qte) == 0) {
		 $error = "Erreur : ligne ".$i."\\n la quantité doit être un chiffre";
		 //on force l'arret de la boucle
		 break;
	     //si la taille de la description  depasse 300 caractere
	 } elseif (strlen($desc) > 300 ) {
		 $error = "Erreur :ligne ".$i."\\n la description doit au maximum comporter 300 caracteres";
		 //on force l'arret de la boucle
		 break;
	 }
}
  
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
17 juin 2010 à 12:50
Bonjour stiv voila essaye avec ce controle
<?php
//Voici le code complet de controle du tableau
$prd = isset($_POST['prd'])?$_POST['prd']:''; 
$desc = isset($_POST['desc'])?$_POST['desc']:''; 
$qte = isset($_POST['qte'])?$_POST['qte']:'';
// Avant d'entrer dans la boucle on verifie dabord si prd n'et pas vide
if(!empty($prd)) {
	$nbProduit = count($prd);
	for ($i = 0; $i < $nbProduit; $i++) {
     	 //dabord si l'un des champs est vide
	 	if(empty($prd[$i]) || empty($desc[$i]) || empty($qte[$i])) {
	    	$error = "Erreur : ligne ".$i."\\n l\'un des champs requit est vide";
			break;
	 	} elseif (intval($qte) == 0) {
		 	$error = "Erreur : ligne ".$i."\\n la quantité doit être un chiffre";
		 	break;
	     	//si la taille de la description  depasse 300 caractere
	 	} elseif (strlen($desc) > 300 ) {
		 	$error = "Erreur :ligne ".$i."\\n la description doit au maximum comporter 300 caracteres";
		 	//on force l'arret de la boucle
		 	break;
	 	}
	}
} else {
    $error = "Aucune ligne saisie";
}
?>
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
17 juin 2010 à 13:00
au fait j'ai oublier rectifie remplace if strlen($desc > 300) par if(strlen($desc[$i]) de meme que intval($qte) par intval $qte[$i])
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
18 juin 2010 à 09:17
thunder413 je ne sais comment te remercier!!!? ca marche!!!!!!! vraiment mille fois merci!! tous ces jours que j'ai travaillé avec toi? c'est un grand plaisir! mais j'ai toujours un problème quand j'affiche la première fois ma page en IE les boutons supprimer ne s'affichent pas je crois qu'il y a un problème dans le code javascript et aussi le numero du produit quand je supprime un produit et que j'ajoute un autre les deux derniers ont le meme numero et si j'essaie de supprimer le recent produit des deux produits qui ont le meme numero il supprime le produit qui a été le premier à avoir le numero!!
merci thunder
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
18 juin 2010 à 12:56
salu, stivi il y'a pas de quoi et c'était aussi un plaisir pour moi de t'aider pour l'affichage des bouton supprimer sous IE la ou il y'a
//creation du bouton supprimer
if( document.all){ // pour IE
   
       bouton = document.createElement("<input name='sup_"+id_tr+"'>");

//remplace le id_tr par idtr sans le underscore

pour le reste c'est vrai c'est la fonction supprimer qui devait gérer ca mais a l'heure actuel elle ne permet que de supprimer normalement elle devra réorganiser les id et les numéro de produit et vu que je suis pas un grand fervent utilisateur du javascript ca sera de l'arrache mais je vais essayé de réglé ca d'ici 2
jour je suis un peu pris mais dans ce délai j'essayerai de le faire

CORDIALEMENT
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
21 juin 2010 à 10:03
Salut thunder j'ai changé et ca marche!! les boutons s'affichent en IE et pour le reste je vais attendre prends tout ton temps!!
encore merci!!
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
2 juil. 2010 à 09:24
salut thunder t toujours occupé?!! je voulais te rappeler à propos du javascript ? j'attends toujours!!
Merci
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
9 juil. 2010 à 17:53
salut, stiv
c'est sur quel ligne et su tu peut aussi expliquer ce que tu fait sur cette ligne je pouyrrai peut etre avoir la soluce
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
10 juil. 2010 à 09:11
bonjour, c'est une fonction qui calcule le total, et
le total = ($pondCout/$coutOffre) + ($pondLivraison/$delaisLivraison) + ($garantie/$pondGarantie) + ($experience/$pondExperience)

1) si $pond donc tous les denominateurs sont tous > 0 : j'utilise cette formule et je trouve le total !! la il ya aucun probleme!!!

mais si $pondGarantie est egale a zero : j'ai fait une autre formule pour trouver le total
$total = ($pondCout/$coutOffre) + ($pondLivraison/$delaisLivraison) +($experience/$pondExperience)

ma page n'affiche pas Warning: Division by zero si $coutOffre, $garantie, $delaisLivraison, $experience sont > 0 mais si $garantie ou $experience sont = 0 là elle m'affiche Warning: Division by zero et affiche egalement le total!! alors que si $garantie ou $experience étaient égales à zéro php execute la formule selon le if ($garantie == 0 ou $exeperience == 0) il ne devrait pas passer sur if où ils sont tous >0!!

En quelques mots, le probleme est que si $pondGarantie ou $pondExperience sont = 0 la page affiche Warning: Division by zero sur la ligne ou se trouve la formule le total = ($pondCout/$coutOffre) + ($pondLivraison/$delaisLivraison) + ($garantie/$pondGarantie) + ($experience/$pondExperience)
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
10 juil. 2010 à 10:21
thunder j'ai trouve l'erreur il fallait que je fasse dans les if $pondGarantie == 0 au lieu de $pondGarantie = 0 car == c'est la comparaison alors que = c'est l'affectation!!! le probleme est resolu!!
et le code javascript ou t'en est ?!!
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
20 juil. 2010 à 14:42
salut thunder ca fait longtemps!! euuh comment vas tu?!! moi je vais bien tu ne surf plus?!!
0
stivijulien Messages postés 44 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 6 mars 2013
27 juil. 2010 à 08:40
salut thunder pardonnez moi si je vous deranges encore avec ma question su le tableau!! mais j'ai encore un probleme!! j'ai créée une page offre car la tableau que je vous avais demandé de m'aider était une page Appel d'offre!! la page offre je l'ai faite et je l'ai reussi elle marche très bien mais quand il s'agit de modifier son offre (donc le tableau concerne les prix de l'offre!! c'est sur ces prix que la modification se passe) et si je valide le tableau affiche seulement le dernier enregistrement sur toutes les lignes du tableau je vais envoyer le code pour bien comprendre
<?php

 //Connexion a la BD
 
 // connection de la base de donnée
 include("connection_DB.php");
 
 // on va declarer les données envoyées par le formulaire!!!
 
 $idMembre= $_SESSION['id_membres'];  //  on va trouver l'id_membres
 
 // données envoyées lors de la soummission!!
 //---------------------------------------------------------
 $idAppeldoffre=mysql_real_escape_string(htmlspecialchars( $idAppeldoffre = isset($_POST['idAppeldoffre'])?$_POST['idAppeldoffre']:''));
 
 $relance=mysql_real_escape_string(htmlspecialchars( $relance = isset($_POST['relance'])?$_POST['relance']:''));
 //---------------------------------------------------------------
 
// données envoyées lors de la modification de l'offre!!
//------------------------------------------------------------- 
  $Offre=mysql_real_escape_string(htmlspecialchars( $Offre = isset($_POST['idOffre'])?$_POST['idOffre']:''));
 
  $premiere_fois=mysql_real_escape_string(htmlspecialchars( $premiere_fois = isset($_POST['premiere_fois'])?$_POST['premiere_fois']:''));
 //---------------------------------------------------------------------
 
 $coutLivraison=mysql_real_escape_string(htmlspecialchars( $coutLivraison = isset($_POST['cout_livraison'])?$_POST['cout_livraison']:''));
 
 $coutTotal=mysql_real_escape_string(htmlspecialchars( $coutTotal = isset($_POST['cout_total_offre'])?$_POST['cout_total_offre']:''));
 
 $garantie =mysql_real_escape_string(htmlspecialchars( $garantie = isset($_POST['garantie'])?$_POST['garantie']:''));

  $delaisLivraison =mysql_real_escape_string(htmlspecialchars( $delaisLivraison = isset($_POST['delais_livraison'])?$_POST['delais_livraison']:''));

  //  chercher son experience
		  
	   $anneCreation= $_SESSION['anneCreation'];  
	   $anneActuelle= date ('Y');
	   $experience = $anneActuelle - $anneCreation;
	   
  $unitaire = isset($_POST['prix_unitaire'])?$_POST['prix_unitaire']:'';
  $total = isset($_POST['prix_total'])?$_POST['prix_total']:'';	
  $total_offre = isset($_POST['total'])?$_POST['total']:'';

 //Maintenant 2 cas sont possible soit on a charger cette page pour la premiere fois soit on a cliqué sur le bouton submit
 
 /* CAS - 1 : on'a charger pour la premiere fois le formulaire*/
 if(!isset($_POST['Submit2']) AND !isset($_POST['Submit3'])) {
    //On inclue le formulaire tous simplement
	include 'Offre_formulaire.php';
 }  
 elseif (isset ($_POST['Submit2'])) // QUAND ON ENREGISTRE UNE OFFRE
 {
 //initialise $error;
   $error = '';
   
	if(!(is_numeric($delaisLivraison) && $delaisLivraison > 0 ))
	  {
	   $error = '<font color="#CC0000">Le delais de livraison doit être un chiffre superieur à 0!!</font>';
	  }
     
	 if(!(is_numeric($garantie) && $garantie > 0 ))
	  {
	   $error = '<font color="#CC0000">Le service après vente doit être un chiffre superieur à 0!!</font>';
	  }
	 
	 if(!(is_numeric($coutTotal) && $coutTotal > 0 ))
	  {
	   $error = '<font color="#CC0000">Le coût de l\'offre total doit être un chiffre superieur à 0!!</font>';
	  }
	 
	 if(!(is_numeric($coutLivraison) && $coutLivraison >= 0 ))
	  {
	   $error = '<font color="#CC0000">Le coût de la livraison et d\'assurance doit être un chiffre superieur ou égale à 0!!</font>';
	  }
	 
   if(!(is_numeric ($total_offre) && $total_offre > 0))
     {
	  $error = '<font color="#CC0000">Le total de l\'offre doit être un chiffre!!</font>';
	 }
   
   if(empty ($total_offre))
	{
	 $error = '<font color="#CC0000">Veuillez donner le total de votre offre dans le tableau!!</font>';
	}
   
	$nbPrix = count($unitaire);
	
	for ($i = 0; $i < $nbPrix; $i++) {
	   
	   $ligne = $i + 1; // car lorsqu'on vérifie un tableau on commence par l'indice 0 d'ou +1!!!
	   
     	 //dabord si l'un des champs est vide
	 	if(empty($unitaire[$i]) || empty($total[$i])) {
	    	$error = '<font color="#CC0000">Erreur sur la '.$ligne.'<sup>ème</sup> ligne de la Description de l\'Offre : l\'un des champs requit est vide</font>';
			break;
	 	} elseif (!(is_numeric ($unitaire[$i]) && $unitaire[$i] > 0 ))   {
		 	$error = '<font color="#CC0000">Erreur sur la '.$ligne.'<sup>ème</sup> ligne de la Description de l\'Offre : le prix unitaire doit être un chiffre superieur à zero!</font>';
		 	break;
	     	
	 	} elseif(!(is_numeric ($total[$i]) && $total[$i] > 0 ))  {
		 	$error = '<font color="#CC0000">Erreur sur la '.$ligne.'<sup>ème</sup> ligne de la Description de l\'Offre : le prix unitaire doit être un chiffre superieur à zero!</font>';
		 	//on force l'arret de la boucle
		 	break;
	 	}
	}
      
	// cas d'enregistrement si l'Appel d'offre n'est pas encore relancé  $relance = O on sait que le champ premier_fois va avoir comme valeur 1
	  
		if ($relance == 0 )
	{	
	   //on va vérifier si le fournisseur a déjà donné une offre sur cet Appel d'offre si oui on lui affiche un message disant qu'il faut modifier son offre qu'il a déjà donné  une offre sur cet appel d'offre
        
		$sql = "SELECT * FROM offre WHERE id_membres='$idMembre' AND id_Appeldoffre='$idAppeldoffre' AND premiere_fois='1'";
		
		$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
		$donnees = mysql_fetch_array($req);
		
		// s'il  ya une offre sur cet Appel d'offre on affiche le message !!!!  donc $données n'est pas vide
		if ($donnees)
		{
		$error = '<font color="#CC0000">Vous avez déjà donné une offre sur cet Appel d\'offre!! Veuillez modifier votre offre!!</font>';
       
		}
	}
     
   
 // cas d'enregistrement si l'Appel d'offre a été relancé CAR  $relance = 1 on sait que le champ premiere_fois va avoir comme valeur 0
	  
		if ($relance == 1 )
	{	
	   //on va vérifier si le fournisseur a déjà donné une offre sur cet Appel d'offre si oui on lui affiche un message disant qu'il faut modifier son offre qu'il a déjà donné  une offre sur cet appel d'offre
        
		$sql = "SELECT * FROM offre WHERE id_membres='$idMembre' AND id_Appeldoffre='$idAppeldoffre' AND premiere_fois='0'";
		
		$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
		$donnees = mysql_fetch_array($req);
		
		// s'il  ya une offre sur cet Appel d'offre on affiche le message !!!!  donc $données n'est pas vide
		if ($donnees)
		{
		   $error = '<font color="#CC0000">Vous avez déjà donné une offre sur cet Appel d\'offre!! Veuillez modifier votre offre!!</font>';
        
		}
     }	
	 
 	if(!empty($error)) {
	 	//il y'a une erreur on inclue le formulaire
    	include 'Offre_formulaire.php';
		//et l'erruer lui sera afficher 
 	}
	
	// maintenant il n'ya aucune erreur on peut enregistrer l'offre!!!
else {
   
    
	  
		if ($relance == 0 ) // cas d'enregistrement si l'Appel d'offre n'est pas encore relancé CAR  $relance = O on sait que le champ premier_fois va avoir comme valeur 1
	{
	
	$premiere_fois = 1; // on lui affecte la valeur 1 car c'est la première fois que l'Appel d'offre recoit l'offre DONC C'EST LA PREMIERE FOIS QUE L'APPEL D'OFFRE EST LANCE
	
	}
	elseif ($relance == 1 ) // cas d'enregistrement si l'Appel d'offre a été relancé CAR  $relance = 1 on sait que le champ premiere_fois va avoir comme valeur 0
	{
	
	 $premiere_fois = 0; // on lui affecte la valeur 0 car c'est PAS lA PREMIERE FOIS QUE L'APPEL RECOIT UNE OFFRE DONC QU'IL EST RELANCE
	
	}
	
	 $first = $premiere_fois;
	   
	   mysql_query("INSERT INTO offre VALUES('','" . $idAppeldoffre . "', '" . $idMembre . "','" . $coutLivraison . "', '" . $coutTotal . "', '" . $garantie . "','" .$delaisLivraison. "','" .$experience. "','" .time(). "','" .$first. "')");
	
	//on va chercher l'id de l'offre qu'on vient d'enregistrée!! pour pouvoir enfin enregistrer la description offre
	
	 $sq2 = "SELECT id_offre FROM offre WHERE id_Appeldoffre='$idAppeldoffre' AND id_membres ='$idMembre' AND premiere_fois='$first'"; // pour chercher l'id de l'Appel d'offre qu'on vient d'enregistrer!!
     $req = mysql_query($sq2) or die('Erreur SQL !<br>'.$sq2.'<br>'.mysql_error());
	 
	 $data = mysql_fetch_array($req);
     $idOffre=$data['id_offre']; // on a trouvé l'id offre et on va enregistrer cette fois la description de l'offre
	 
	 for ($i = 0; $i < $nbPrix; $i++) {
	     $unitaire = $_POST['prix_unitaire'][$i];
	 	 $total = $_POST['prix_total'][$i];
		 
	 	 $sql = "INSERT INTO description_offre(id_offre,prix_unitaire,prix_total,total_offre) values ('$idOffre','$unitaire','$total','$total_offre')";
	 	 mysql_query ($sql)or die (mysql_error().$sql);
    }
	
	
	   echo '<script language=javascript> alert ("Votre Offre a été enregistré!!");</script>';
       echo '<SCRIPT LANGUAGE="JavaScript"> document.location.href="membre.php" </SCRIPT>'; 
	
	}
  
   
 } 
 
 elseif(isset($_POST['Submit3'])) // QUAND ON MODIFIE UNE OFFRE
  {
  //initialise $error;
   $error = '';
   
	if(!(is_numeric($delaisLivraison) && $delaisLivraison > 0 ))
	  {
	   $error = '<font color="#CC0000">Le delais de livraison doit être un chiffre superieur à 0!!</font>';
	  }
     
	 if(!(is_numeric($garantie) && $garantie > 0 ))
	  {
	   $error = '<font color="#CC0000">Le service après vente doit être un chiffre superieur à 0!!</font>';
	  }
	 
	 if(!(is_numeric($coutTotal) && $coutTotal > 0 ))
	  {
	   $error = '<font color="#CC0000">Le coût de l\'offre total doit être un chiffre superieur à 0!!</font>';
	  }
	 
	 if(!(is_numeric($coutLivraison) && $coutLivraison >= 0 ))
	  {
	   $error = '<font color="#CC0000">Le coût de la livraison et d\'assurance doit être un chiffre superieur ou egale à 0!!</font>';
	  }
	 
   if(!(is_numeric ($total_offre) && $total_offre > 0))
     {
	  $error = '<font color="#CC0000">Le total de l\'offre doit être un chiffre!!</font>';
	 }
   
   if(empty ($total_offre))
	{
	 $error = '<font color="#CC0000">Veuillez donner le total de votre offre dans le tableau!!</font>';
	}
   
	$nbPrix = count($unitaire);
	
	for ($i = 0; $i < $nbPrix; $i++) {
	   
	   $ligne = $i + 1; // car lorsqu'on vérifie un tableau on commence par l'indice 0 d'ou +1!!!
	   
     	 //dabord si l'un des champs est vide
	 	if(empty($unitaire[$i]) || empty($total[$i])) {
	    	$error = '<font color="#CC0000">Erreur sur la '.$ligne.'<sup>ème</sup> ligne de la Description de l\'Offre : l\'un des champs requit est vide</font>';
			break;
	 	} elseif (!(is_numeric ($unitaire[$i]) && $unitaire[$i] > 0 ))   {
		 	$error = '<font color="#CC0000">Erreur sur la '.$ligne.'<sup>ème</sup> ligne de la Description de l\'Offre : le prix unitaire doit être un chiffre superieur à zero!</font>';
		 	break;
	     	
	 	} elseif(!(is_numeric ($total[$i]) && $total[$i] > 0 ))  {
		 	$error = '<font color="#CC0000">Erreur sur la '.$ligne.'<sup>ème</sup> ligne de la Description de l\'Offre : le prix unitaire doit être un chiffre superieur à zero!</font>';
		 	//on force l'arret de la boucle
		 	break;
	 	}
	}
	
	
	if(!empty($error)) {
	 	//il y'a une erreur on inclue le formulaire
    	include 'Offre_formulaire.php';
		//et l'erruer lui sera afficher 
 	}
	
	// maintenant il n'ya aucune erreur on peut  modifier l'offre!!!
else {

   $requete=mysql_query("UPDATE offre SET cout_Livraison='" . $coutLivraison . "',cout_total_offre='" . $coutTotal . "',garantie='" . $garantie . "',delais_livraison='" . $delaisLivraison . "',experience='" . $experience . "',date_creation_offre='" .time(). "',premiere_fois='" .$premiere_fois. "' WHERE id_membres='$idMembre' AND id_offre='$Offre'");
	   
	   
		// on va modifier la description_offre!!!
	
	   for ($i = 0; $i < $nbPrix; $i++) {
	     $unitaire = $_POST['prix_unitaire'][$i];
	 	 $total = $_POST['prix_total'][$i];
		 
	 	 $sql = "UPDATE description_offre SET prix_unitaire='" . $unitaire . "',prix_total='" . $total . "',total_offre='" . $total_offre . "'  WHERE id_offre='$Offre'";
	 	 mysql_query ($sql)or die (mysql_error().$sql);
	
        }
	   
	   
	   
	   echo '<script language=javascript> alert ("Votre Offre a été modifiée avec succes!!");</script>';
        
		 echo '<SCRIPT LANGUAGE="JavaScript"> document.location.href="membre.php" </SCRIPT>';


     }
	 }
 ?>


le probleme se trouve lorsque je veux modifier le tableau donc
// on va modifier la description_offre!!!
	
	   for ($i = 0; $i < $nbPrix; $i++) {
	     $unitaire = $_POST['prix_unitaire'][$i];
	 	 $total = $_POST['prix_total'][$i];
		 
	 	 $sql = "UPDATE description_offre SET prix_unitaire='" . $unitaire . "',prix_total='" . $total . "',total_offre='" . $total_offre . "'  WHERE id_offre='$Offre'";
	 	 mysql_query ($sql)or die (mysql_error().$sql);
	
        }
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
28 juil. 2010 à 04:01
salut stivi content de voir que tu vais bien moi aussi je vais bien merci et t'inkiete pas tu me dérange pas c'est juste le manque de temps qui fait que mes réponse sont tardive alors pour ton code syntaxiement c'est correcte et si j'ai bien compris le code ci-dessus ne modifie que la derniere ligne donc veuille a bien verfier si le $nbPris retourne bien le nombre exacte de prix soumis sinon poste le code du formulaire pour voir j'esseyerai de repondre dans le bref delais a++
0