Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2011, 16h39   #1
 
Homme
Inscription : décembre 2011
Messages : 121
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 121
Points : -3
Points : -3
Par défaut Formulaire et BDD

Bonjour, je dois créer un formulaire pour remplir une table dans une BDD. Les valeurs du formulaires ne s'inscrivent pas dans la BDD. Parcontre, si je mets directements les valeurs dans la requête SQL elles sont bien envoyées.
La connexion vers ma BDD fonctionne.
Merci de votre aide.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
 
<center><b>Remplissage de la table</b></center></h1>
<FORM method=post action="form.php">
<h3><u>Completer le formulaire pour remplir la table :</u></h3>
<TABLE BORDER=5>
 
<TR>
	<TD>Entrez le nom</TD>
	<TD>
	<INPUT type=text name="Name_test" >
	</TD>
</TR>
 
<TR>
	<TD>Entrez le Number</TD>
	<TD>
	<INPUT type=text name="Number_test" >
	</TD>
 
<TR>
	<TD>Entrez la description</TD>
	<TD>
	<INPUT type=text name="Description_test" >
	</TD>
</TR>
 
<TR>
	<TD>Entrez le PartNumber</TD>
	<TD>
	<INPUT type=text name="PartNumber" >
	</TD>
</TR>
 
<TR>
	<TD>Entrez le num_EC</TD>
	<TD>
	<INPUT type=text name="num_EC" >
	</TD>
</TR>	
 
	<TR>
	<TD COLSPAN=2>
	<INPUT type="submit" value="Envoyer">
	</TD>
</TR>
 
</TABLE>
</FORM>
 
 
<?
<?php
$db = mysql_connect('127.0.0.1', 'root', '1234');  
mysql_select_db('bdd',$db); 
 
// Recuperation des valeurs :
 
$Name_test = $_POST['Name_test'];
$Number_test = $_POST['Number_test'];
$Description_test = $_POST['Description_test'];
$PartNumber = $_POST['PartNumber'];
$num_EC = $_POST['num_EC'];
 
 
 
 
// Insertion des valeurs :
$insertion = "insert into test_table (Name_test, Number_test, Description_test, PartNumber, num_EC) values ('$Name_test', '$Number_test', 
'$Description_test','$PartNumber', '$num_EC')";
mysql_query($insertion)
 
?>
 
 
</body>
</html>
SNY77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 16h44   #2
Membre éclairé
 
Femme
Développeur .NET
Inscription : avril 2009
Messages : 264
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2009
Messages : 264
Points : 323
Points : 323
Les simples quotes en PHP n'interprêtent pas les variables.

Code :
1
2
3
 
$insertion = "insert into test_table (Name_test, Number_test, Description_test, PartNumber, num_EC) values ('".$Name_test."', '".$Number_test."', 
'".$Description_test."','".$PartNumber."', '".$num_EC."')";
Isythiel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 16h45   #3
Membre éclairé
 
Avatar de Nowwis
 
Homme
Développeur Web
Inscription : juin 2009
Messages : 363
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2009
Messages : 363
Points : 365
Points : 365
Regarde du côté de addslashes() si jamais ton contenu contient une apostrophe (') ça foire ta requête.

Tu peux tester mes dire en faisant un echo de magic_quote pour vérifié si c'est activé ou pas.

Un peu de lecture sur magic quote

Si tu es au dessus de PHP 5.3, fait un mysql_real_escape_string() sur tes chaines.

Une autre solution peut être d'utiliser la PDO.
Nowwis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 16h50   #4
 
Homme
Inscription : décembre 2011
Messages : 121
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 121
Points : -3
Points : -3
Toujours rien (jai testé ta requête) ... Pourtant quand je rentre directement les valeurs dans la requête elles sont bien enrengistrés dans la BDD!
Code :
mysql_real_escape_string()
je la mets où ?
SNY77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 16h52   #5
Membre éclairé
 
Femme
Développeur .NET
Inscription : avril 2009
Messages : 264
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2009
Messages : 264
Points : 323
Points : 323
Citation:
Envoyé par SNY77 Voir le message
Toujours rien ... Pourtant quand je rentre directement les valeurs dans la requête elles sont bien enrengistrés dans la BDD!
Fait un "echo" de ta variable $insertion et exécute-la dans phpmyadmin ou tout autre outil, si t'as une erreur, ça sera plus compréhensible.
Isythiel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 16h54   #6
Membre éclairé
 
Avatar de Nowwis
 
Homme
Développeur Web
Inscription : juin 2009
Messages : 363
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2009
Messages : 363
Points : 365
Points : 365
De même :

Code :
<FORM method=post action="form.php">
Change plutot en :

Code :
<FORM method="post" action="form.php">
Nowwis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 16h59   #7
 
Homme
Inscription : décembre 2011
Messages : 121
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 121
Points : -3
Points : -3
J'ai ça, sous MySQL Query Browser, je n'ai pas les enrengistrements en executant cette requête!
Code :
insert into test_table (Name_test, Number_test, Description_test, PartNumber, num_EC) values ('1', '2', '3','', '')
Apparament ils prends même pas les valeurs 4 et 5 ...
Merci.
SNY77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 17h01   #8
Membre éclairé
 
Avatar de Nowwis
 
Homme
Développeur Web
Inscription : juin 2009
Messages : 363
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2009
Messages : 363
Points : 365
Points : 365
As-tu vraiment essayé le addslashes($Description_test) ?


Code :
1
2
3
4
5
$Name_test = $_POST['Name_test'];
$Number_test = $_POST['Number_test'];
$Description_test = $_POST['Description_test'];
$PartNumber = $_POST['PartNumber'];
$num_EC = $_POST['num_EC'];
Remplace le par :

Code :
1
2
3
4
5
$Name_test = addslashes($_POST['Name_test']);
$Number_test = addslashes($_POST['Number_test'];
$Description_test = addslashes($_POST['Description_test']);
$PartNumber = addslashes($_POST['PartNumber']);
$num_EC = addslashes($_POST['num_EC']);
Nowwis est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 15/12/2011, 17h05   #9
 
Homme
Inscription : décembre 2011
Messages : 121
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 121
Points : -3
Points : -3
Oui j'ai le même resultat en visualisant le resultat de la requête ...
SNY77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 21h41   #10
 
Homme
Inscription : décembre 2011
Messages : 121
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 121
Points : -3
Points : -3
Personne ? Pourtant le formulaire à l'aide d'être très correct
Merci...
SNY77 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 16/12/2011, 10h47   #11
 
Homme
Inscription : décembre 2011
Messages : 121
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 121
Points : -3
Points : -3
J'ai protégé les valeurs (j'ai tout placé après la requête SQL d'insertion) :
Code :
1
2
3
4
5
mysql_real_escape_string($Name_test, $db);
mysql_real_escape_string($Number_test, $db);
mysql_real_escape_string($Description_test, $db);
mysql_real_escape_string($PartNumber, $db);
mysql_real_escape_string($num_EC, $db);
Mais ça me donne toujours le même résultat;
SNY77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 10h50   #12
Membre éclairé
 
Avatar de Nowwis
 
Homme
Développeur Web
Inscription : juin 2009
Messages : 363
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2009
Messages : 363
Points : 365
Points : 365
Remplace ce code :

Code :
1
2
3
4
// Insertion des valeurs :
$insertion = "insert into test_table (Name_test, Number_test, Description_test, PartNumber, num_EC) values ('$Name_test', '$Number_test', 
'$Description_test','$PartNumber', '$num_EC')";
mysql_query($insertion)
Par :

Code :
1
2
3
4
5
print_r($_POST);
// Insertion des valeurs :
$insertion = "insert into test_table (Name_test, Number_test, Description_test, PartNumber, num_EC) values ('$Name_test', '$Number_test', 
'$Description_test','$PartNumber', '$num_EC')";
mysql_query($insertion)
Donne moi la réponse
Nowwis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 10h54   #13
Membre éclairé
 
Femme
Développeur .NET
Inscription : avril 2009
Messages : 264
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2009
Messages : 264
Points : 323
Points : 323
Citation:
Envoyé par Simdu80 Voir le message
Remplace ce code :

Code :
1
2
3
4
// Insertion des valeurs :
$insertion = "insert into test_table (Name_test, Number_test, Description_test, PartNumber, num_EC) values ('$Name_test', '$Number_test', 
'$Description_test','$PartNumber', '$num_EC')";
mysql_query($insertion)
Par :

Code :
1
2
3
4
5
print_r($_POST);
// Insertion des valeurs :
$insertion = "insert into test_table (Name_test, Number_test, Description_test, PartNumber, num_EC) values ('$Name_test', '$Number_test', 
'$Description_test','$PartNumber', '$num_EC')";
mysql_query($insertion)
Donne moi la réponse

Ca ne peut pas marcher, les variables PHP entre simples quotes ne sont pas interprétées. (mais d'accord avec le print_r())
Isythiel est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 16/12/2011, 10h56   #14
Membre éclairé
 
Avatar de Nowwis
 
Homme
Développeur Web
Inscription : juin 2009
Messages : 363
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2009
Messages : 363
Points : 365
Points : 365
Citation:
Envoyé par Isythiel Voir le message
Ca ne peut pas marcher, les variables PHP entre simples quotes ne sont pas interprétées.
Ben si ça marche, les quotes sont là pour MySQL. PHP les interprête grâce à celle ci :
Logiquement ça devrait marcher
Nowwis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 11h07   #15
 
Homme
Inscription : décembre 2011
Messages : 121
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 121
Points : -3
Points : -3
ça me donne ça en mettant des valeurs de 1 à 5 dans le formulaire (ordre des champs ...)
Code :
1 [Number_test] => 2 [Description_test] => 3 [PartNumber] => 4 [num_EC] => 5 ) insert into test_sheet(Name_test, Number_test, Description_test, PartNumber, num_EC) values ('1', '2', '3','', '')
SNY77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 11h16   #16
 
Homme
Inscription : décembre 2011
Messages : 121
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 121
Points : -3
Points : -3
En executant la requête telle qu'elle sous Mysql Query Browser, j'obtiens ça :
Incorrect integer value: '' for column 'num_EC' at row 1
SNY77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 11h17   #17
Membre éclairé
 
Avatar de Nowwis
 
Homme
Développeur Web
Inscription : juin 2009
Messages : 363
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2009
Messages : 363
Points : 365
Points : 365
Bizarre...

Essaie ça :

Code :
1
2
3
$insertion = "insert into test_table (Name_test, Number_test, Description_test, PartNumber, num_EC) values ('".$_POST['Name_test']."', '".$_POST['$Number_test']."', 
'".$_POST['$Description_test']."','".$_POST['$PartNumber']."', '".$_POST['$num_EC']."')";
echo $insertion;
Nowwis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 11h18   #18
Membre éclairé
 
Avatar de Nowwis
 
Homme
Développeur Web
Inscription : juin 2009
Messages : 363
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2009
Messages : 363
Points : 365
Points : 365
Citation:
Envoyé par SNY77 Voir le message
En executant la requête telle qu'elle sous Mysql Query Browser, j'obtiens ça :
Incorrect integer value: '' for column 'num_EC' at row 1
Ok, donc pour chaque INT que tu as mis dans ta table, supprime els quotes

ça devrait donner ça :

$insertion = "insert into test_table (Name_test, Number_test, Description_test, PartNumber, num_EC) values ('$Name_test', $Number_test,
'$Description_test',$PartNumber, $num_EC)";

Vérifie que toutes ces entrée soit bien des chiffres/nombres.
Nowwis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 11h24   #19
 
Homme
Inscription : décembre 2011
Messages : 121
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 121
Points : -3
Points : -3
Ca me donne ça maintenant :
Code :
insert into test_table(Name_test, Number_test, Description_test, PartNumber, num_EC) values ('1', 2, '3',, )
SNY77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 12h22   #20
 
Homme
Inscription : décembre 2011
Messages : 121
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 121
Points : -3
Points : -3
J'ai un peu modifier mon programme, j'obtien ça pour l'echo de la requête :
Code :
insert into test_table (Name_test, Number_test, Description_test, PartNumber, num_EC) values ('1', '2', '3','4', '5')
SNY77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h16.


 
 
 
 
Partenaires

Hébergement Web