Page 1 sur 2

impossible d'incrementer la BdD avec le formulaire !

Posté : 14 juin 2005, 09:59
par freebug
J'essais de developper une base de donnée dans l optique de mon stage de BTS et ce foutu formulaire refuse de faire ce que je veux ( :( )

J'expose mon probleme j ai un formulaire contenu dans un fichier nome test2bis.html et je voudrais que les valeurs selectionnées dans les differentes zones déroulante incrémente une table de ma base.
le script du formulaire est le suivant :
<html>
<head>
<marquee>gestion des imprimantes</marquee>
</head>
<body bgcolor="gray" text="blue">
<p align=center></s><a1>GESTION DES IMPRESSIONS</a1></s></p>
<br><br><br>
Selection cartouche:
<br><br>
<form action="imprimante2.php"  name="form1" target="_self" Method="POST">
<table width="526" border="0">
  <tr>
    <td>
    Bureau :
    <select name="bureau">
    <option> 
    <option selected> Informatique
    </select> 
    </td>
  </tr>
  <tr>
  <td>
   Imprimante :
   <select name="imprimante">
   <option selected> 6400
   <option> HP 1220C
   <option> Phaser 8400
   <option> Lexmark W812
   <option> Dell A320
   </select> 
  </td>
  </tr>	
  <tr>
  <td>
   type de cartouche :
   <select name="cartouche">
   <option selected> ruban
   <option> encre noire
   <option> encre 3 couleurs
   <option> kit 3 encres noires
   <option> kit 6 encres noires
   <option> kit 3 encres cyan
   <option> kit 3 encres magenta
   <option> kit 3 encres yellow
   <option> kit de maintenance
   <option> toner
   </select> 
  </td>
  </tr>	
   <tr>
  <td>
   quantite :
   <select name="quantite">
   <option selected> 1
   <option> 2
   <option> 3
   <option> 4
   <option> 5
   <option> 6
   <option> 7
   <option> 8
   <option> 9
   <option> 10
   </select> 
  </td>
  </tr>	
 
  <tr>  
  <td width="343">
    <input type="submit" name="Submit" value="Valider">
  </td>
  </tr>
</table>
</form>

<br><br><br><br><br>

</body>
</html>[/i]

le script de "imprimante2.php" donne ca :

[i]<html>
<body bgcolor='gray' text='blue'>


<?php
require("connect.php");
//on inclu le fichier connect.php
include("connect.php");


$bureau = $_POST['bureau'];    
$imprimante = $_POST['imprimante'];
$quantite = $_POST['quantite'];
$cartouche = $_POST['cartouche'];


 
 $sql1 = "SELECT num_imprimante FROM imprimante where imprimante='$imprimante'";   
 $res1 = mysql_query($sql1);
 $sql2 = "SELECT reference FROM cartouche where libelle='$cartouche'";   
 $res2 = mysql_query($sql2);
 
 
 $sql3 = "INSERT INTO utiliser(num_imprimante,reference,quantite,service) VALUES('$res1','$res2','$quantite','$bureau'";   
  mysql_query($sql3);

echo "$bureau"; --> revoi bien la valeur
echo " ";
echo "$imprimante"; --> renvoi bien la valeur
echo " ";
echo "$quantite"; --> renvoi bien la valeur
echo " ";
echo "$cartouche";--> renvoi bien la valeur
echo " ";
echo "$res1"; -->renvoi "id # 5"
echo " ";
echo "$res2"; -->renvoi "id # 6"

mysql_close();
?>
<body>
<br><br><br><br><br><br><br><br><br><br><br>
<p align='center'>Insertion reussit .</p>
<br><br><br><br><br><br>
<p align='center'><a href=test2bis.html>retour a la page précédente</a></p>

</body>
</html>[/i]

et enfin mon connect.php est le suivant :

[i]<?php
//url de votre base de donnee. souvent localhost.
$Serveur_db="localhost";

//login ou identifiant.
$User_db ="root";

//votre mot de passe de la base de donnee.
$Passe_db = "";

//Nom de votre base de donnee
$Base_name="ges_imprimante";

//connexion a mysql.
$Connect_db = mysql_connect($Serveur_db,$User_db,$Passe_db);

//selection de la base de donnée.
mysql_select_db($Base_name,$Connect_db);
?>

Donc la je déprime ca fait 4 jours que je planche dessus et je vois pas :(.
Ma requête fonctionne car je l'ai essayé dans easyphp en remplacant les variables par des valeurs connues et la base est bien incrémentée.

Donc si quelqu'un pouvait m'aider, merci d'avance.

Posté : 14 juin 2005, 10:17
par seayoung
haï haï haï
il y a bcp de chose a revoir
1- le formulaire une balise <option> ca s'ouvre mais ca se ferme aussi </option>
2- tes actions sur ta base sont de préférence a mettre dans ton body
3- tu as fait un champs par catégorie un champ cartouche un champ imprimant etc ...?

Posté : 14 juin 2005, 10:25
par Invité
-Service
Section : varchar(5)
Service : varchar(30)

-Imprimante
Num_imprimante : varchar(3)
Imprimante : varchar(20)
#Service : varchar(30)

-utiliser
Date : date
Quantite : int(3)
Service : varchar(30)
Num_imprimante : varchar(3)
Reference : varchar(20)

-cartouche
Reference : varchar(20)
Libelle : varchar(40)
Prix : float(5,2)
Stock : int(3)

voila mes tables moi je cherche a incrementer la table utiliser.

Posté : 14 juin 2005, 10:54
par robined
outre les conseils de freebug, il y a une petite erreur:
il te manque une parenthèse fermante dans ta requete $sql3.

D'où un petit conseil, teste ta requete en remplaçant mysql_query(tarequete)
par mysql_query(tarequete) or die(mysql_error()).
Ceci permet d'arreter ton script si une requete ne fonctionne pas et t'indique l'erreur dans ta requete.

un autre conseil, ne mets pas un require et un include du meme fichier, ce ne sert a rien, mets seulement un incude.

Posté : 14 juin 2005, 11:09
par Invité
Merci pour le conseil du (or die);
j en ai mis avec chacune de mes requêtes et toujours aucun message d erreurs comme s il executait toutes mes requetes sans problemes seulement ma table reste vierge :(
Je ne comprend vraiment pas . . . .

Si qq un comprend ce que je veux faire est ce qu il peut essaye de me proposer une autre syntaxe pour mon imprimante2.php parceque la je vois vraiment pas.

Posté : 14 juin 2005, 11:11
par Cyrano
Si tu n'as pas de message d'erreur, fais afficher tes requêtes sans nécessairement les exécuter: copie les et essaye les directement dans phpMyAdmin, tu verras ce qui se passe.

Posté : 14 juin 2005, 11:16
par Invité
mes requetes passe dans php myadmin seulement a la place d utilse les variables j ecris moi meme les valeurs (car je ne peux pas utiliser mes variables dans php myadmin).

Posté : 14 juin 2005, 11:23
par seayoung
detail
outre les conseils de freebug
je pense que tu voulais dire seayoung :P
seulement ma table reste vierge
si tu n a rien dans ta table ton erreur est normale ;)
toutefois je te dirai la meme chose que cyrano ca peux bcp aider

Posté : 14 juin 2005, 11:31
par freebug
Si si toutes les valeurs sont entrees dans mes table a pars la table utiliser qui est vierge mais elle est faite pour les insertion.

Ha si tout est bien rentré et verifié j y ai passé presque toute une aprem :lol: :lol:

Posté : 14 juin 2005, 11:45
par seayoung
essaye juste pour voir, normalement ca change rien sauf que ton code sera plus propre ;) hey crois moi c'est pas rien Cyrano peut te le dire rien ne vaut un code propre :roll:
$sql1 = "SELECT num_imprimante FROM imprimante where imprimante='".$imprimante."'";

Posté : 14 juin 2005, 11:55
par freebug
ou la la si le message a change , je sais pas s il faut crier au bonheur ou quoi mais sa a changer.

maintenant j ai le message "Duplicata du champ 'Res-Resource id #6' pour la clef 1" qui apparait .
Donc je suppose que c est en rapport avec le (or die) que j ai mis a la premiere requete, est ce que quelqu'un peu me dire ce que l on cherche a me faire comprendre par ce message ^o)

Posté : 14 juin 2005, 11:56
par robined
il y a un truc qui est bizarre, a quoi te servent les 2 requetes sur imprimante et cartouches si tu te sert pas du resultat?

Comme tu fais ici, c'est les valeurs de ton formulaire (ex: ruban) que tu inseres et non la référence correspondant (à ruban).

si tu as cadré les valuers d'insertion possibles, le probleme peut venir de la.

PS: il faut ecrire insertion reussie et non reussit.

Posté : 14 juin 2005, 11:59
par robined
c'est ce que je te disais juste avant, faut faire un mysql_fetch_array() de res1 et res2 que tu mets dans une variable et c'est c'est variables que tu inseres.

ca donne:

Code : Tout sélectionner

$sql1 = "SELECT num_imprimante FROM imprimante where imprimante='$imprimante'"; $res1 = mysql_query($sql1); $imp=mysql_fetch_array($res1); $sql2 = "SELECT reference FROM cartouche where libelle='$cartouche'"; $res2 = mysql_query($sql2); $cart=mysql_fetch_array($res2); $sql3 = "INSERT INTO utiliser(num_imprimante,reference,quantite,service) VALUES('$imp','$cart','$quantite','$bureau'"; mysql_query($sql3);

Posté : 14 juin 2005, 12:07
par Invité
merci pour la faute dorthographe c est pas mon fort :)

Donc je m explique je recupere de la part de l utilisateur la valeur du nom de l imprimante (imprimante) et le nom de la cartouche (catouche) or dans ma table utilisée qui en fait me servira a gerer les stocks en me disant qu elle service a pris quel cartouche et en quel quantite, la cle primaire est une concatenation de reference( la reference de la cartouche) et de num imprimante (le numero de l imprimante).
Donc il me faut une requete sur la table cartouche pour recuperer sa reference par rapport a son libelle et de meme sur la table imprimante pour recuperer son numero par rapport a son nom.

Posté : 14 juin 2005, 12:16
par robined
as tu essayé ce que je viens de te donner cela devrait résoudre ton probleme.