par
stivity » 01 juin 2010, 12:30
je veux que vous m'aidez!!
coté client :le bouton supprimer du tableau description appel d'offre n'apparait pas en internet explorer et j'ai des problèmes si j'essaie de supprimer un produit qui le meme numero!!
coté serveur : j'ai besoin aussi une aide sur coté serveur car le script se plante quand il ya des erreurs merci!!
voici le code :
<? include("haut.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]$sql = "SELECT * FROM membres WHERE id_membres='$id'";[/sql]
$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
[sql]$sq2 = "select * from produit";[/sql]
$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%"> </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"> </td>
<td width="144"><input type="text" name="qte[]" /></td>
<td width="3"> </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>
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]$sql = "SELECT id_Appeldoffre FROM Appeldoffre WHERE objet_appeldoffre='$objet'";[/sql]
// 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);
}
?>
je veux que vous m'aidez!!
coté client :le bouton supprimer du tableau description appel d'offre n'apparait pas en internet explorer et j'ai des problèmes si j'essaie de supprimer un produit qui le meme numero!!
coté serveur : j'ai besoin aussi une aide sur coté serveur car le script se plante quand il ya des erreurs merci!!
voici le code :
[php] <? include("haut.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]$sql = "SELECT * FROM membres WHERE id_membres='$id'";[/sql]
$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
[sql]$sq2 = "select * from produit";[/sql]
$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>";[/php]
[html]<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%"> </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"> </td>
<td width="144"><input type="text" name="qte[]" /></td>
<td width="3"> </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>[/html]
[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]$sql = "SELECT id_Appeldoffre FROM Appeldoffre WHERE objet_appeldoffre='$objet'";[/sql]
// 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);
}
?>[/php]