Lier un formulaire à la basse de données
AnnaGx
Messages postés
32
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
je suis en terminale et je ne me connaît vraiment pas très bien en programmation.
Je voudrais créer un formulaire qui soit lié à la basse de données.
ça fait un moment que j'essaie et il me semble que je fais n'importe quoi - pourriez vous m'aider s'il vous plaît?????
Ce que j'ai fais pour l'instant:
- un formulaire basique (type html)
- son fichier css -> pour le rendre plus agréable à regarder
-des scripts: accesBDD.php & medicamentAjout.php (normalement récupère les données transmises par le formulaire)
j'en ai AUCUNE IDEE COMMENT LIER TOUT CA!!!
je suis en terminale et je ne me connaît vraiment pas très bien en programmation.
Je voudrais créer un formulaire qui soit lié à la basse de données.
ça fait un moment que j'essaie et il me semble que je fais n'importe quoi - pourriez vous m'aider s'il vous plaît?????
Ce que j'ai fais pour l'instant:
- un formulaire basique (type html)
- son fichier css -> pour le rendre plus agréable à regarder
-des scripts: accesBDD.php & medicamentAjout.php (normalement récupère les données transmises par le formulaire)
j'en ai AUCUNE IDEE COMMENT LIER TOUT CA!!!
A voir également:
- Lier un formulaire à la basse de données
- Whatsapp formulaire opposition - Guide
- Fuite données maif - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Supprimer les données de navigation - Guide
14 réponses
Bonjour,
Je t'invite à lire ces tutos :
https://www.commentcamarche.net/contents/493-formulaires-html-cours-et-exemples
puis : https://www.commentcamarche.net/contents/793-php-recuperation-de-donnees
Pour ce qui est de la connexion à la BDD (et à sa manipulation via des requêtes par la suite) je t'invite, si ne c'est pas déjà fait, à passer par la PDO...
Dans l'ordre :
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/913655-quest-ce-quune-base-de-donnees
Puis :
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/914293-lisez-des-donnees
et en complément : https://fmaz.developpez.com/tutoriels/php/comprendre-pdo/
.
Je t'invite à lire ces tutos :
https://www.commentcamarche.net/contents/493-formulaires-html-cours-et-exemples
puis : https://www.commentcamarche.net/contents/793-php-recuperation-de-donnees
Pour ce qui est de la connexion à la BDD (et à sa manipulation via des requêtes par la suite) je t'invite, si ne c'est pas déjà fait, à passer par la PDO...
Dans l'ordre :
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/913655-quest-ce-quune-base-de-donnees
Puis :
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/914293-lisez-des-donnees
et en complément : https://fmaz.developpez.com/tutoriels/php/comprendre-pdo/
.
Bonjour,
Merci beaucoup pour votre aide!
Mais mon formulaire ne marche toujours pas: c'est à dire qu'il existe sous forme html (et il marche), mais par-contre dès que je rentre les données et je les envoie ça ne marche plus.
Voilà mon travail:
[LE FORMULAIRE EN HTML]
....................................................................[le script ]................................
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d'y penser dans tes prochains messages.
.
Merci beaucoup pour votre aide!
Mais mon formulaire ne marche toujours pas: c'est à dire qu'il existe sous forme html (et il marche), mais par-contre dès que je rentre les données et je les envoie ça ne marche plus.
Voilà mon travail:
[LE FORMULAIRE EN HTML]
<!DOCTYPE html> <html> <head> <title> le physique du formulaire </title> <link rel="stylesheet" media="screen" type="text/css" title ="style" href="style.css" /> <meta charset= "utf-8"/> </head> <div class="tbody"> <body> <form id="medicamentAjout" method="POST" action="medicamentAjout.php"> <p class="titre">Informations générales </p> <fieldset> <label>Libelle : </label> <input type="text" name="libelle" size="30" /><br /> <label>Numéro : <input type="text" name="num" size="8" /><br/> <label>Forme Pharmaceutique : </label> <select name="formeph"> <option value="Paracetamol">Paracetamol</option> <option value="Daphalgan">Dafalgan</option> <option value="Magnesium">Magnésium</option><br /> </select> </p> </fieldset> <p class="titre">Préscription</p>' <fieldset> <textarea name="prescription" rows="5" cols="40"></textarea> </fieldset> <p> <input type="submit" value="Retirer" /> <input type="submit" value="Modifier" /> </p </form> </body> </div> </html>:
....................................................................[le script ]................................
<?php include("includes/accesBDD.php"); extract($_POST); $requete="insert into médicaments values(0,'$Libelle','$Numéro','$Préscriptio','FormePharmaceutique')"; if(mysqli_query($db,$requete)==true) echo("Votre demande d'information a été enregistrée"); else echo("Un problème est survenu lors de l'enregistrement de votre demande d'information:".mysqli_error($db)); mysqli_close($db); ?>
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d'y penser dans tes prochains messages.
.
Bonjour,
Tu dis que ça ne marche pas... c'est à dire ? pourrais tu être un peu plus précis ?
Par contre.. je pense qu'il y a un souci au niveau de ta requête
Je pense que ta table dispose d'un champ ID auto-incrémenté .. il ne faut alors pas le renseigner (ou alors par défaut le mettre à NULL)
Par contre .. il est quand même vivement conseillé de préciser les champs que tu insères dans ta requête
par exemple :
PS: **** Attention ****
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
.
Tu dis que ça ne marche pas... c'est à dire ? pourrais tu être un peu plus précis ?
Par contre.. je pense qu'il y a un souci au niveau de ta requête
Je pense que ta table dispose d'un champ ID auto-incrémenté .. il ne faut alors pas le renseigner (ou alors par défaut le mettre à NULL)
$requete="insert into médicaments values(NULL,'$Libelle','$Numéro','$Préscriptio','FormePharmaceutique')";
Par contre .. il est quand même vivement conseillé de préciser les champs que tu insères dans ta requête
par exemple :
INSERT INTO matable (nom , prenom) VALUES( 'exemple' , 'jordane' )
PS: **** Attention ****
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
.
Bonjour, merci de m'avoir répondu!
Lorsque je lance mon formulaire, et que je rentre des données dans les cases correspondantes (libelle, numéro ect) et que je clique sur mon bouton "valider", je suis envoyée sur une page qui contient le script qui connecte mon formulaire à ma BD, je pense qu'il y a un problème, car je devrais recevoir un message d'erreur de connexion normalement,
Est-ce qu'il faut que j'insert mes deux scripts (accesBDD + medicamentAjout.php) directement dans mon formulaire ?
Merci d'avance :)
Lorsque je lance mon formulaire, et que je rentre des données dans les cases correspondantes (libelle, numéro ect) et que je clique sur mon bouton "valider", je suis envoyée sur une page qui contient le script qui connecte mon formulaire à ma BD, je pense qu'il y a un problème, car je devrais recevoir un message d'erreur de connexion normalement,
Est-ce qu'il faut que j'insert mes deux scripts (accesBDD + medicamentAjout.php) directement dans mon formulaire ?
Merci d'avance :)
Salut,
Autre problème avec le nom de tes variables php.
Les variables php extrait de ton formulaire (via la méthode export()) possède le nom défini dans l'attribut name des input/select/textarea/...
Par exemple, pour le champ
Idem pour tous tes champs :
- $num au lieu $Numéro
- $prescription au lieur $Préscriptio
- $formeph au lieu FormePharmaceutique
Bonne journée
Autre problème avec le nom de tes variables php.
Les variables php extrait de ton formulaire (via la méthode export()) possède le nom défini dans l'attribut name des input/select/textarea/...
Par exemple, pour le champ
<input type="text" name="libelle" size="30" />, la variable php qui sera définie sera $libelle et non $Libelle (attention à la casse).
Idem pour tous tes champs :
- $num au lieu $Numéro
- $prescription au lieur $Préscriptio
- $formeph au lieu FormePharmaceutique
Bonne journée
Bonjour, merci votre réponse!
J'ai modifié ce aue vous m'avez dit, mais ça ne marche toujours pas.
Quand je rempli mon formulaire et que je clique sur mon bouton "valider", je me retrouve sur une page qui contient le script qui connecte mon formulaire à ma BD.
Est-ce qu'il faut que j'insert mes deux scripts (accesBDD + medicamentAjout.php) directement dans mon formulaire ?
Merci d'avance :)
J'ai modifié ce aue vous m'avez dit, mais ça ne marche toujours pas.
Quand je rempli mon formulaire et que je clique sur mon bouton "valider", je me retrouve sur une page qui contient le script qui connecte mon formulaire à ma BD.
Est-ce qu'il faut que j'insert mes deux scripts (accesBDD + medicamentAjout.php) directement dans mon formulaire ?
Merci d'avance :)
Quand tu dis <<je me retrouve sur une page qui contient le scrip>> ... tu veux dire quoi.. que tu lis à l'écran ton script et qu'il ne s'exécute pas ?
Dis voir ... je suppose que tu travaille en local sur ton PC ...
Tu as installé un serveur apache Mysql ? ( un WAMP ou XAMPP ou un truc du genre ) ?
Tu passes bien également par le localhost pour aller chercher ta page web ... (tu as quoi dans la barre d'adresse bien un truc du genre : localhost/ton_site ) ?
Dis voir ... je suppose que tu travaille en local sur ton PC ...
Tu as installé un serveur apache Mysql ? ( un WAMP ou XAMPP ou un truc du genre ) ?
Tu passes bien également par le localhost pour aller chercher ta page web ... (tu as quoi dans la barre d'adresse bien un truc du genre : localhost/ton_site ) ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Donc alors
1
rassemble tout tes fichiers(pages web) dans un seul dossier que tu appellera projet_site_1.local et tu va le mettre ans C:\wamp\www
2
tu va créer un fichier 1_vhots.conf
et tu va mettre dans ce fichier ceci:
Et tu va le glisser dans C:\wamp\alias
je te met juste les config de bases pour tes vhost mais normalement il faut les séparer et mettre bien plus pour être propre mais bon voila ;-)
3
tu va te rendre dans
C:\Windows\System32\drivers\etc et ouvrir avec un éditeur de text hosts
normalement par défaut tu as déja le localhost qui est mis apres 127.0.0.1 met derrière localhost projet_site_1.local
idem pour
puis redémarre ton serveur
apres normalement si je n'ai rien oublié quand tu tappera dans ta barre de recherche http://projet_site_1.local tu devrais déja avoir qqchose
1
rassemble tout tes fichiers(pages web) dans un seul dossier que tu appellera projet_site_1.local et tu va le mettre ans C:\wamp\www
2
tu va créer un fichier 1_vhots.conf
et tu va mettre dans ce fichier ceci:
#localhost
<VirtualHost *:80>
DocumentRoot C:/wamp/www/
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot C:/wamp/www/projet_site_1.local
ServerName www.projet_site_1.local
ServerAlias projet_site_1.local
</VirtualHost>
Et tu va le glisser dans C:\wamp\alias
je te met juste les config de bases pour tes vhost mais normalement il faut les séparer et mettre bien plus pour être propre mais bon voila ;-)
3
tu va te rendre dans
C:\Windows\System32\drivers\etc et ouvrir avec un éditeur de text hosts
normalement par défaut tu as déja le localhost qui est mis apres 127.0.0.1 met derrière localhost projet_site_1.local
idem pour
::1 localhost projet_site_1.local
puis redémarre ton serveur
apres normalement si je n'ai rien oublié quand tu tappera dans ta barre de recherche http://projet_site_1.local tu devrais déja avoir qqchose
bon il est tard donc je vais y aller mais j'ai aussi remarqué qu tu avais fait une faut je pense au niveau de tes input et n'oublie pas qu'en html il es conseillé de fermer les premières balises que l'on a ouvertes après celles se situe dans celles-la. Essaye également de relire la doc pour la balise <p> car tu en fermes alors qu'elles n'existent pas ( ce n'est bien sure pas pour ça que cela ne fonctionne pas :)
relie également la partie procédural de mysqli_query et j'essayerai de repasser demain pour t'aider bn
PS: si quelqu'un remarque des erreur dans ce que je lui ai fait configurer sur wamp n'hésitez pas à me le faire signaler :)
relie également la partie procédural de mysqli_query et j'essayerai de repasser demain pour t'aider bn
PS: si quelqu'un remarque des erreur dans ce que je lui ai fait configurer sur wamp n'hésitez pas à me le faire signaler :)
Pas besoin de faire tout ça .....
(les alias, vhosts et compagnie....)
Tu as juste à placer tes fichiers dans le répertoire :
c:\wamp\www\TonDossier\
Ensuite... assures-toi que ton WAMP est bien lancé ( l'icone du logiciel devrait apparaitre à côté de l'heure et doit être de couleur verte.)
Puis vas dans ton navigateur internet .. et tapes dans la barre d'adresse : http://localhost/TonDossier/
et là .. hop .. tu te retrouves sur ton site.
(les alias, vhosts et compagnie....)
Tu as juste à placer tes fichiers dans le répertoire :
c:\wamp\www\TonDossier\
Ensuite... assures-toi que ton WAMP est bien lancé ( l'icone du logiciel devrait apparaitre à côté de l'heure et doit être de couleur verte.)
Puis vas dans ton navigateur internet .. et tapes dans la barre d'adresse : http://localhost/TonDossier/
et là .. hop .. tu te retrouves sur ton site.
Merci beaucoup pour votre aide!!! c'est méga gentil!!
j'ai fais tout ce que vous m'avez conseillés, mais là encore un soucis:
? le fichier hosts ne veut pas se modifier.
[ j'ai vérifiée qu'il ne soit pas en lecture seule, j'ai changée les paramètres de sécurité du coup en l'ouvrant en tant qu'administrateur il me semble que c'est passée;
MAIS du coup maintenant Wamp (php My Admin) n'est plus accessible, la connexion est refusée!! ]
j'ai fais tout ce que vous m'avez conseillés, mais là encore un soucis:
? le fichier hosts ne veut pas se modifier.
[ j'ai vérifiée qu'il ne soit pas en lecture seule, j'ai changée les paramètres de sécurité du coup en l'ouvrant en tant qu'administrateur il me semble que c'est passée;
MAIS du coup maintenant Wamp (php My Admin) n'est plus accessible, la connexion est refusée!! ]
quand j'ai ouvert le fichier il était déjà comme ça
Tu peux laisser comme c'est .... ou en supprimer 3 ....
Quoi qu'il en soit, le souci n'est pas là.
Peux tu nous dire ce qu'il en est de :
- Ton wamp est il lancé ?
- De quelle couleur est l'icone ? ( verte ? )
=> Si l'icône n'est pas verte, c'est que tu as surement le port 80 qui est occupé...(par un programme comme Skype par exemple)
Pour le savoir, fais ceci :
Clique avec le bouton gauche sur l'icone wampserver.
Sélectionne "apache -> service -> tester le port 80"
Ce te donnera l'identifiant du programme qui pose problème et qui tourne sur le port 80
Le Wamps s'affiche orange,
après l'avoir téléchargé j'avait changé le port (80->8070)
Maintenant je n'accède même plus à le configuration:
quand j'appuie sur httpd.conf ça me donne :
après l'avoir téléchargé j'avait changé le port (80->8070)
Maintenant je n'accède même plus à le configuration:
quand j'appuie sur httpd.conf ça me donne :
#
# This is the main Apache HTTP server configuration file. It contains the
# configuration directives that ........
Désolé, je ne pouvais pas répondre avant.
Et bien maintenant ça me renvoie à la configuration de WampServeur (sur http://localhost )
quand je vais sue :http://localhost/projet_site_1.local/
c'est écrit : Index of /projet_site_1.local
Puis :
Tout en bas :Apache/2.4.9 (Win32) PHP/5.5.12 Server at localhost Port 80
Pourquoi c'estle port 80?
Alors que je l'ai changé depuis longtemps
Et pourquoi quand maintenant je vais sur Wamp(vert) -> Apache-> httpd.conf
je ne peux plus rien modifier : il est écrit: "#
# This is the main Apache HTTP server configuration file. It contains the
# configuration dir......."
?
Et bien maintenant ça me renvoie à la configuration de WampServeur (sur http://localhost )
quand je vais sue :http://localhost/projet_site_1.local/
c'est écrit : Index of /projet_site_1.local
Puis :
[ICO] Name Last modified Size Description
[PARENTDIR] Parent Directory -
[ ] accesBDD.php 2015-05-09 13:03 237
[ ] medicamentAjout.php 2015-05-07 16:02 438
[ ] nulll.php 2015-05-08 12:04 1.3K
[TXT] nulll.txt 2015-05-08 12:04 1.3K
[ ] o.php 2015-05-07 16:24 1.3K
[TXT] style.css 2015-05-04 23:55 772
Tout en bas :Apache/2.4.9 (Win32) PHP/5.5.12 Server at localhost Port 80
Pourquoi c'estle port 80?
Alors que je l'ai changé depuis longtemps
Et pourquoi quand maintenant je vais sur Wamp(vert) -> Apache-> httpd.conf
je ne peux plus rien modifier : il est écrit: "#
# This is the main Apache HTTP server configuration file. It contains the
# configuration dir......."
?
quand je vais sue :http://localhost/projet_site_1.local/
c'est écrit : Index of /projet_site_1.local
... Normal .. car sans fichier index.html ou index.php ( ou home.html....) .. le serveur ne sait pas quel est le point d'entrée....
A toi de préciser dans l'url en mettant le nom de ton fichier .php .... ou alors de faire une redirection à base de htaccess par exempe ( ou encore plus simple.. de mettre un fichier index.php .... )
et bien quand je fais ça, mon formulaire s'affiche, mais en dessous, je retrouve un tableau (de couleur jaune) de type:
etc...
Warning: include(includes/accesBDD.php): failed to open stream: No such file or directory in C:\wamp\www\projet_site_1.local\medicamentAjout.php on line 2
Warning: include(): Failed opening 'includes/accesBDD.php' for inclusion (include_path='.;C:\php\pear') in C:\wamp\www\projet_site_1.local\medicamentAjout.php on line 2
Notice: Undefined variable: libelle in C:\wamp\www\projet_site_1.local\medicamentAjout.php on line 5
etc...
non, je n'ai pas crée de répertoire includes
Pourtant ... tu as mis la ligne de code suivante :
include("includes/accesBDD.php");
Ligne de code qui essaye d'inclure dans ton script ... le fichier accesBDD.php ... qui se trouverais visiblement dans un répertoire : "includes"
D'où ton message d'erreur....
.... c'est le problème quand on copie bêtement un code sans en comprendre le fonctionnement......
Bref,
D'après l'arborescence de ton répertoire (que tu nous a posté précédement..)
[ICO] Name Last modified Size Description
[PARENTDIR] Parent Directory -
[ ] accesBDD.php 2015-05-09 13:03 237
[ ] medicamentAjout.php 2015-05-07 16:02 438
[ ] nulll.php 2015-05-08 12:04 1.3K
[TXT] nulll.txt 2015-05-08 12:04 1.3K
[ ] o.php 2015-05-07 16:24 1.3K
[TXT] style.css 2015-05-04 23:55 772
Ton fichier accesBDD.php ... se trouve à la racine ... donc... il faut modifier ton INCLUDE par :
include("accesBDD.php");
[et bien que ça a l'air vraiment pathétique, je ne vois pas comment on fait..]
Ben.. comme pour créer n'importe quel répertoire sur ton ordinateur....
Tu te places dans le dossier .. tu fais un clic-droit ... tu choisis :"nouveau" puis "Dossier" .... et tu le nommes comme tu le souhaites....
Ah..du coup c'était un problème de compréhension..
en fait ça ne marchait pas en cause des fautes vraiment trop bêtes de ma part(le nom que j'avais pas midifié)
Merci beaucoup à vous!
Ce que ne marche pas c'est la ligne 11 de "medicamentajout.php" :
et je ne comprends pas pourquoi:
EDIT : AJOUT DU LANGAGE dans les balises de code
en fait ça ne marchait pas en cause des fautes vraiment trop bêtes de ma part(le nom que j'avais pas midifié)
Merci beaucoup à vous!
Ce que ne marche pas c'est la ligne 11 de "medicamentajout.php" :
et je ne comprends pas pourquoi:
$requete="insert into medicaments values(NULL,'$libelle','$numero', '$date','$prescription','$formepharmaceutique')";
EDIT : AJOUT DU LANGAGE dans les balises de code
Ce que ne marche pas c'est la ligne 11 de "medicamentajout.php" :
Je ne pense pas que ça soit cette ligne qui pose problème....
pourrais tu nous mettre le message d'erreur EXACT s'il y en a un ou nous dire pourquoi selon toi ça ne fonctionne pas ??
NB : Pourrais-tu également nous donner la structure de ta table medicaments ?
Biensur: - voilà le contenu de ma table medicaments:
- ce que s'affiche à la suite de mon formulaire quand je vais sur http://localhost/projet_site_1.local/o.php
Nom: Type: Intercl : Extra :
Id int(11) AUTO_INCREMENT
libelle varchar(12) latin1_swedish_ci
numero int(11)
date date
formaph varchar (500) latin1_swedish_ci
prescription text utf8_general_ci
- ce que s'affiche à la suite de mon formulaire quand je vais sur http://localhost/projet_site_1.local/o.php
Notice: Undefined variable: libelle in C:\wamp\www\projet_site_1.local\medicamentajout.php on line 11
Call Stack
# Time Memory Function Location
1 0.0049 132056 {main}( ) ..\o.php:0
2 0.0077 135704 include( 'C:\wamp\www\projet_site_1.local\medicamentajout.php' ) ..\o.php:38
C'est bête comme question,mais est ce que j'ai bien fait d'inclure :
après
juste avant
[je suis désolé c'est la première fois que je code un formulaire qui utilise la BDD..]
<?php
include ("medicamentajout.php")
?>
après
</form>
juste avant
</body>
[je suis désolé c'est la première fois que je code un formulaire qui utilise la BDD..]
La place n'a pas vraiment d'importance ..
tout dépend ce que tu comptes faire du contenu du fichier ....
Dis toi qu'un include c'est comme coller un bout de texte à la suite d'un autre.... tu le colles là où tu en as besoin.
Pour ce qui est de ton PB de variable Undefined ... il faudrait que tu nous montres le code de tes pages.
medicamentajout.php .. mais aussi celle qui y fait appel.
tout dépend ce que tu comptes faire du contenu du fichier ....
Dis toi qu'un include c'est comme coller un bout de texte à la suite d'un autre.... tu le colles là où tu en as besoin.
Pour ce qui est de ton PB de variable Undefined ... il faudrait que tu nous montres le code de tes pages.
medicamentajout.php .. mais aussi celle qui y fait appel.
medicamentajout.php:
accesBDD.php
<html>
<head>
<title> le renvoie du formulaire </title>
<meta charset= "utf-8"/>
</head>
<body>
<?php
include("accesBDD.php");
extract($_POST);
$requete="insert into medicaments
values(NULL,'$libelle','$numero', '$date','$formaph', $prescription')";
if(mysqli_query($db,$requete)==true)
echo("Votre demande d'information a ete enregistree");
else
echo("Un probleme est survenu lors de l'enregistrement de votre demande d'information:".mysqli_error($db));
mysqli_close($db);
?>
</body>
</html>
accesBDD.php
<?php $serveurBDD="localhost"; $user="root"; $passwd=""; $nombdd="medicament"; $db=mysqli_connect($serveurBDD,$user,$passwd,$nombdd); if($db==null)echo("problème d'accès à la base de données".mysqli_error($db)); ?>
ok...
Donc tu utilises la fonction EXTRACT.
Pratique .. mais perso je préfère récupérer les variables moi-même pour m'assurer de ce que je récupère ...
Et là ... visiblement... tu ne récupères pas la variable $libelle.
Pour le vérifier, fais un print_r de ta variable POST ....
Par contre, il nous manque ton formulaire HTML (là d'où viennent tes données.....)
Je pense que tu n'as pas de champ "libelle" ou que tu l'as orthographié différemment...
Donc tu utilises la fonction EXTRACT.
Pratique .. mais perso je préfère récupérer les variables moi-même pour m'assurer de ce que je récupère ...
Et là ... visiblement... tu ne récupères pas la variable $libelle.
Pour le vérifier, fais un print_r de ta variable POST ....
<?php include("accesBDD.php"); //le temps des tests : print_r($_POST); extract($_POST); $requete="insert into medicaments values(NULL,'$libelle','$numero', '$date','$prescription','$formepharmaceutique')"; if(mysqli_query($db,$requete)==true) echo("Votre demande d'information a ete enregistree"); else echo("Un probleme est survenu lors de l'enregistrement de votre demande d'information:".mysqli_error($db)); mysqli_close($db); ?>
Par contre, il nous manque ton formulaire HTML (là d'où viennent tes données.....)
Je pense que tu n'as pas de champ "libelle" ou que tu l'as orthographié différemment...
Mon formulaire c'est le fichier o.php:
<!DOCTYPE html http://localhost/projet_site_1.local/ >
<html>
<head>
<title> le physique du formulaire </title>
<link rel="stylesheet" media="screen" type="text/css" title ="style" href="style.css" />
<meta charset= "utf-8"/>
</head>
<div class="tbody">
<body>
<form id="medicamentajout" method="POST" action="medicamentajout.php">
<p class="titre">Informations générales </p>
<fieldset>
<label>Libelle : </label>
<input type="text" name="libelle" size="30" /><br />
<label>Numéro :
<input type="text" name="numero" size="8" /><br/>
<label>Date :
<input type="text" name="date" size="8" /><br/>
<label>Forme Pharmaceutique : </label>
<select name="formaph">
<option value="Paracetamol">Paracetamol</option>
<option value="Daphalgan">Dafalgan</option>
<option value="Magnesium">Magnésium</option><br />
</select>
</fieldset>
<p class="titre">Préscription</p>
<fieldset>
<textarea name="prescription" rows="5" cols="40"></textarea>
</fieldset>
<p>
<input type="submit" value="Retirer" />
<input type="submit" value="Modifier" />
</p
</form>
<?php
include ("medicamentajout.php")
?>
</body>
</div>
</html>
Premier souci ...
Ton FORM fait déjà une redirection vers medicamentajout.php
... mais EN PLUS .. tu en fais un INCLUDE ?
Donc, au choix, Tu laisse comme c'est dans ton form .. et tu retires l'include ...
ou .. tu laisses ton include .. et dans ta FORM .. tu mets l'action à vide
Ensuite...
Comme je te le disais... la fonction EXTRACT .. n'extrait que les données existantes...
Si tu laisses un des champs à VIDE .. il n'existe pas ... d'où ton message d'erreur....
Pour éviter cela, je t'invite à ne plus utiliser la fonction EXTRACT mais à récupérer manuellement ( ... mais correctement...) tes variables de la façon suivante :
PS: Merci d'indiquer le LANGAGE dans les balises de code.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
.
Cordialement,
Jordane
Ton FORM fait déjà une redirection vers medicamentajout.php
<form id="medicamentajout" method="POST" action="medicamentajout.php">
... mais EN PLUS .. tu en fais un INCLUDE ?
include ("medicamentajout.php")
Donc, au choix, Tu laisse comme c'est dans ton form .. et tu retires l'include ...
ou .. tu laisses ton include .. et dans ta FORM .. tu mets l'action à vide
<form id="medicamentajout" method="POST" action="">
Ensuite...
Comme je te le disais... la fonction EXTRACT .. n'extrait que les données existantes...
Si tu laisses un des champs à VIDE .. il n'existe pas ... d'où ton message d'erreur....
Pour éviter cela, je t'invite à ne plus utiliser la fonction EXTRACT mais à récupérer manuellement ( ... mais correctement...) tes variables de la façon suivante :
//-------------------------------------------------------------------// // Récupération des Variables // En écriture TERNAIRE + Test de l'existence de la variable avec // la fonction isset //-------------------------------------------------------------------// $libelle = isset($_POST['libelle'])?$_POST['libelle']:''; $numero = isset($_POST['numero']) ?$_POST['numero']:''; $date = isset($_POST['date']) ?$_POST['date']:''; $prescription = isset($_POST['prescription'])?$_POST['prescription']:''; $formepharmaceutique = isset($_POST['numero']) ?$_POST['formepharmaceutique']:'';
PS: Merci d'indiquer le LANGAGE dans les balises de code.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
.
Cordialement,
Jordane