insertion dans base de donnée non voulue..

Eléphant du PHP | 450 Messages

20 juin 2005, 10:55

Bonjour,
J'ais un petit probleme ...
En faite j'ais une un formulaire ou je peut commander des produits .Quand je clike sur le lien commander , je suis rediriger sur une page ou il y'as des informations a completer avant d'effectuer la commande (la page est un popup ) et quand j'appuis a nouveau sur le bouton commander le requete est effectuer..
Mon probleme est que lorsque le page de commande se charger (le popup) il'y a directement un ajout dans la base de donné du produit sans que nous ayon remplis le moindre champ de la commande...

Est ce que quelqu'un aurait une idée ??

je met le code de la page commande (le popup)

le formulaire:
<form action="" method="post"><table width="50%">
<tr><td><b>Fournisseur</b></td>

<td width="30%" height="29"><select name="fournisseur">

<option value="acros">Acros</option>
<option value="aldricht">Aldricht</option>
<option value="sigma">Sigma</option>
<option value="lancaster">Lancaster</option>
<option value="autres">autres</option>
</select>



</td></tr>
<tr width="30%" height="15"><td><b>Autres fournisseurs</b><P><i>A remplir si le fournisseur n'est pas dans la liste</i></td>
<td><b><input type="text" name="nouveau_fournisseur"></b></td></tr>
<tr width="30%" height="29"><td><b>Quantité a Commander</b></td>
<td><b><input type="text" name="quantite"></b></td></tr>
<tr width="30%" height="29"><td><b>Nombre de Quantité a commander</b></td>
<td><b><input type="text" name="nombre_quantite"></b></td></tr>
<tr width="30%" height="29"><td><b>Prix a l'unité</b></td>
<td><b><input type="text" name="prix"></b></td></tr>

<tr><td><input type="submit" value="Commander"></td>
<center><td><input type="submit" value="Imprimer" onclick="print();"></td></center>
<td><input type="submit" value="fermer" onClick="window.close()";></td></tr>

</table>
</form>
et la la requete
<?php






$host = '****'; 
$user = '******'; 
$pass = '***********'; 
$db = '****';

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

$quantite=$_POST['quantite'];
$fournisseur = $_POST['fournisseur'];
$nombre_quantite=$_POST['nombre_quantite'];
$prix=$_POST['prix'];
$date = date("d-m");

$fournisseur='';
if(isset($_POST['nouveau_fournisseur'])){
        if(strcmp($_POST['nouveau_fournisseur'],'')!=0){
                $fournisseur=$_POST['nouveau_fournisseur'];
        }else{
                $fournisseur=$_POST['fournisseur'];
        }
}
$select2 = "SELECT * FROM produit2 WHERE reference LIKE '$id'";
$result2 = mysql_query($select2,$link) or die ('Erreur : '.mysql_error() );
$row2 = mysql_fetch_assoc($result2);


$query="INSERT INTO commande (fournisseur,quantite,nombre_quantite,prix,numero_cass,nom,date) VALUES ('".$fournisseur."', '".$quantite."', '".$nombre_quantite."', '".$prix."','".$row2['numero_cass']."','".$row2['nom']."','".$date."');"; 
mysql_query($query) or die (mysql_error);

echo $query;

?>
si quelq'un a une idée je suis preneur
merci
Alone in the dark , I smile :D

Mammouth du PHP | 19672 Messages

20 juin 2005, 11:17

Le problème vient de deux choses: le formulaire de ton pop-up pointe sur lui-même dans son attribut action et n'envoie rien à la page parente;

Dans ton code pour l'insertion, il y a un test de vérification d'envoi de confirmation mais le code de l'insertion est à l'exétieur de ce test et quelque soit le résultat, l'insertion se fait de toutes façon... :-k

Quelque chose me dit qu'en plus, il n'insère même pas nécessairement ce que tu veux.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 450 Messages

20 juin 2005, 11:25

euuhh d'accord..!!

mais pour l'attribut action alors, je peut faire comment?
(j'ais jamais trop compris le but de cet attribut et a quoi il sert )..

Sinon si je mets un test javascript pour verifier que les champs de commande soit bien remplis avant d'envoyer sa pourrait m'enlever le probleme??
Alone in the dark , I smile :D

Eléphant du PHP | 450 Messages

20 juin 2005, 11:30

Sinon il insere ce que je veut (heureusement lol)
La premiere partie de mon code (que je ne vous avais pas montrer) et un tableau qui affiche les information sur le produit commander et vu que c'est pas stocker dans la meme base de donné que la commande j'ais pas trouver d'autre solution que s'eparer mon code en deux.

Suis pas trés erudit désolé lol :oops: :oops:

Je vous mets la premiere partie de mon code.
<?php 

$host = '***********'; 
$user = '*****'; 
$pass = '************'; 
$db = '********';

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());



$id =$_GET['id'];

$select = "SELECT * FROM produit2 WHERE reference LIKE '$id'";
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_assoc($result);

$nom = 'nom';
$formule = 'formule';
$reference = 'reference';
$num = $row['numero_cass'];
echo $num;

echo "<table border=0>";
echo "<tr><td width=30% height='29'><b>nom : </b></td><td>".$row['nom']."</td></tr>";
echo "<tr><td width=30% height='29'><b>formule : </b></td><td>".$row['formule']."</td>";
echo "<tr><td width=30% height='29'><b>reference : </b></td><td>".$row['reference']."</td>";
echo "<tr><td width=30% height='29'><b>numero de cas : </b></td><td>".$row['numero_cass']."</td>";
echo "<tr><td width=30% height='29'><b>toxicité : </b></td><td>".$row['toxicite']."</td>";
echo "<tr><td width=30% height='29'><b>disponibilite : </b></td><td>".$row['disponibilite']."</td>";
echo "<tr><td width=30% height='29'><b>localisation : </b></td><td>".$row['localisation']."</td>";

echo "</table>";
?>
voila
Alone in the dark , I smile :D

Mammouth du PHP | 19672 Messages

20 juin 2005, 11:34

l'attribut action dans une balise <form> indique vers quelle page doivent être envoyées les données du formulaire: si tu laisses action="", ça va renvoyer le formulaire sur lui-même, en clair, au submit, la page se recharge avec les valeurs en post ou en get selon la méthode.

Or dans ton cas, ça devrait envoyer les résultats vers ta page de traitement/insertion. Comme c'est un pop-up, il faut que ça envoie vers la page parent et là, c'est en JavaScript que ça devra se faire, je sais pas trop comment exactement, je ne me sers jamais de pop-ups pour des formulaires, mais en fouillant un peu dans le forum JavaScript, tu devrais trouver des pistes de solution..
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 450 Messages

20 juin 2005, 12:04

daccord merci cyrano je vias essailler :)

MerKi :lol: :lol:
Alone in the dark , I smile :D