impossible d'incrementer la BdD avec le formulaire !

freebug
Invité n'ayant pas de compte PHPfrance

14 juin 2005, 09:59

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.

Eléphant du PHP | 357 Messages

14 juin 2005, 10:17

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 ...?

Invité
Invité n'ayant pas de compte PHPfrance

14 juin 2005, 10:25

-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.

Eléphant du PHP | 92 Messages

14 juin 2005, 10:54

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.

Invité
Invité n'ayant pas de compte PHPfrance

14 juin 2005, 11:09

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.

Mammouth du PHP | 19672 Messages

14 juin 2005, 11:11

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

14 juin 2005, 11:16

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).

Eléphant du PHP | 357 Messages

14 juin 2005, 11:23

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

Eléphant du PHP | 55 Messages

14 juin 2005, 11:31

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:

Eléphant du PHP | 357 Messages

14 juin 2005, 11:45

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."'";

Eléphant du PHP | 55 Messages

14 juin 2005, 11:55

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)

Eléphant du PHP | 92 Messages

14 juin 2005, 11:56

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.

Eléphant du PHP | 92 Messages

14 juin 2005, 11:59

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);

Invité
Invité n'ayant pas de compte PHPfrance

14 juin 2005, 12:07

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.

Eléphant du PHP | 92 Messages

14 juin 2005, 12:16

as tu essayé ce que je viens de te donner cela devrait résoudre ton probleme.