bonjour j'ai un souci pour faire connecter ma base de données mysql avec un formulaire PHP
Je voudrais bien un exemple bien "détaillé" sur ce genre de connexion
merci d'avance
Version imprimable
bonjour j'ai un souci pour faire connecter ma base de données mysql avec un formulaire PHP
Je voudrais bien un exemple bien "détaillé" sur ce genre de connexion
merci d'avance
Vous devriez trouver les informations dont vous avez besoin parmi les tutoriels que nous proposons :
Et aussi les cours et tutoriels PHP.
Nous restons à votre disposition en cas de questions ou si vous rencontrez des difficultés lors de leur application.
désolé de ne pas trop detaillé ...
mais en fait j ai un fourmulaire en PHP que j ai creé a laide de dreamweaver et une base de donnée avec mysql "myphpadmin" tous ce que j ai maintenant c'est un fichier .frm de la base et la je suis coincé a essayer de connecter la base avec mon fourmulaire que dois je faire excatement .....
merci pour votre reponse ...
Montrez nous comment vous vous y prenez actuellement.
MySQL s'interroge par le réseau (ce qui peut être simulé mais passons ces détails). Vous devez laisser les fichiers *.frm et autres à MySQL, c'est dans ceux-ci qu'il y écrit les données, les index, les structures, etc. Une intervention de votre part sur ces fichiers pourraient entraîner une perte totale ou partielle de vos données voir plus grave.
On interagit avec MySQL via l'API qu'elle offre. PHP en propose plusieurs (PDO, mysqli, mysql) mais prenons la plus courante : mysql. Avant d'envoyer vos requêtes vous devez vous y connecter avec la fonction mysql_connect. Elle attendera de vous au moins : l'hôte, le login et le mot de passe :
Par commodité, sélectionnez ensuite la base de données à utiliser par défaut :Code:mysql_connect('localhost', 'root', '') or die(mysql_error()); // Paramètres de connexion locaux avec les valeurs par défaut
Vous pouvez ensuite envoyer des requêtes (écrites en langage SQL) puis en traiter les réponses avant de mettre optionnellement fin à cette connexion à l'aide de mysql_close (PHP le fait automatiquement).Code:mysql_select_db('mysql') or die(mysql_error());
Un petit exemple un peu plus complet visant à lister les tables qui composent la base système mysql :
C'est ce qu'explique de façon plus détaillée le tutoriel : passer des requêtes MySQL en PHP :aie:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <?php // Connexion à la base mysql_connect('localhost', 'root', '') or die(mysql_error()); // Sélection d'une base par défaut mysql_select_db('mysql') or die(mysql_error()); // Envoi d'une requête $sql = mysql_query('SHOW TABLES') or die(mysql_error()); // Parcours du résultat while ($row = mysql_fetch_row($sql)) { echo $row[0] . '<br />'; } // Fin de la connexion mysql_close();
j'ai suivi les consignes et voilà ce que j'ai réussi à faire :
si vous détectez une erreur et si vous avez quelques remarques à faire n'hésitez pas ....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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 <html > <head> <title>Document sans titre</title> </head> <body > <form method="post" action="add.php"> <p align="center"><font size="6">Fiche de Mise à jour </font></p> </form> <FORM method=post action="add.php"> <TABLE BORDER=0 width="1045"> <td></td> <td></td> <td></td> <td></td> <p> <TR> <TD width="214"><strong>nom</strong></TD> <TD width="239"><input name="nom" type=text ></TD> <td width="210"> </td> <td width="338"> </td> </TR> <SCRIPT LANGUAGE="JavaScript"> <!-- if (window.print) { document.write('<form>Cliquez ici pour ' + '<input type=button name=print value="Imprimer" ' + 'onClick="javascript:window.print()"> cette page!</form>'); } // --> </script> </TABLE> </FORM> <?php CREATE TABLE `info` ( `Id_nom` mediumint(8) unsigned NOT NULL auto_increment, `nom` varchar(25) NOT NULL default '', PRIMARY KEY (`Id_nom`), UNIQUE KEY `nom` (`nom`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 // On commence par récupérer les champs if(isset($_POST['nom'])) $raison_sociale=$_POST['nom']; else $nom=""; // On vérifie si les champs sont vides if(empty($nom) ) { echo '<font color="red">Attention, seul le champs <b>ICQ</b> peut rester vide !</font>'; } // Aucun champ n'est vide, on peut enregistrer dans la table else { // connexion à la base $db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error()); // sélection de la base mysql_select_db('mise_a_jour',$db) or die('Erreur de selection '.mysql_error()); // on écrit la requête sql $sql = " $nom=$_POST['nom'] INSERT INTO infos_tbl(Id_nom, nom ,) VALUES('','$nom','nom')" ; // on insère les informations du formulaire dans la table mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); mysql_close(); } ?> </body> </html>
ça c'est du code SQL ça n'a rien à faire tel quel dans du code PHP (mis à part pour déclencher une erreur de syntaxe).Code:
1
2
3
4
5
6 CREATE TABLE `info` ( `Id_nom` mediumint(8) unsigned NOT NULL auto_increment, `nom` varchar(25) NOT NULL default '', PRIMARY KEY (`Id_nom`), UNIQUE KEY `nom` (`nom`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1
Au lieu de raison_sociale la variable ne devrait-elle pas s'appeler nom ?Code:
1
2
3 // On commence par récupérer les champs if(isset($_POST['nom'])) $raison_sociale=$_POST['nom']; else $nom="";
La requête est incorrecte syntaxiquement parlant pour commencer. Elle devrait plutôt être de cette forme :Code:
1
2
3
4
5
6
7
8
9
10
11
12 // on écrit la requête sql $sql = " $nom=$_POST['nom'] INSERT INTO infos_tbl(Id_nom, nom ,) VALUES('','$nom','nom')" ;
Et pensez à l'avenir à nous donner les messages d'erreur.Code:$sql = "INSERT INTO infos_tbl(nom) VALUES('" . mysql_real_escape_string($nom) . "')";
:aie:
désolé mais j arrive pas encore a avoir l'execution de ma page "PHP" pour avoir les message d'erreur
est ce qu'on voudra pa du code sql pour creer la base de données et les tablesCitation:
Code X :
CREATE TABLE `info` (
`Id_nom` mediumint(8) unsigned NOT NULL auto_increment,
`nom` varchar(25) NOT NULL default '',
PRIMARY KEY (`Id_nom`),
UNIQUE KEY `nom` (`nom`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ça c'est du code SQL ça n'a rien à faire tel quel dans du code PHP
si je place pas le code sqlde la creaction des tables dans la page ou dois je le faire .....Citation:
(mis à "part" pour déclencher une erreur de syntaxe).
et pour afficher les "enregistrement" est ce qu'on devra creer une nouvelle page pour ca et comment ces données vont etre stocker dans la base
ps :merci pour ton aide
Pour cela votre script doit pouvoir être interprété : son extension (.php en général) y contribue et être placé à la racine (ou en-dessous) du serveur web (répertoire www par exemple avec EasyPHP).Citation:
Envoyé par cruelblood
On le fait rarement soi-même via un script : on passe par la console ou un outil comme phpMyAdmin.Citation:
Envoyé par cruelblood
Elle doit se présenter sous la forme d'une chaîne PHP (valide) puis vous l'"envoyer" au serveur via la fonction mysql_query.Citation:
Envoyé par cruelblood
Vous faites comme beau vous semble niveau organisation : un seul script pour tout comme 3 pour faire une même chose. Pour ce qui est des données ce n'est pas vous qui gérez le stockage : c'est l'affaire du serveur MySQL.Citation:
Envoyé par cruelblood
merci j ai géré pour les faut é la le message qui s'affiche c est un
Citation:
Erreur SQL ! INSERT INTO inscription VALUES('','','')
Duplicate entry '' for key 2
Indique que la valeur que tu essais d'insérer dans le champ primaire de ta table existe déjà dans une des lignes de la table, ce qui est impossible.Citation:
Duplicate entry '' for key 2
Par contre cette ligne :
montre que ce que tu essais d'insérer dans ta table sont des données vides, vérifie donc les variables que tu utilises dans ta requête ca vient sûrement de là.Citation:
Erreur SQL ! INSERT INTO inscription VALUES('','','')
je n'ai pas réussi a corriger voila mon code PHP :
et ma table sous sql :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 <?php if(isset($_POST['nom'])) $nom=$_POST['nom']; else $nom=""; { if(isset($_POST['prenom'])) $prenom=$_POST['prenom']; else $prenom=""; { $db = mysql_connect('localhost', 'root', '') or die('Erreur d connexion '.mysql_error()); mysql_select_db('inscription',$db) or die('Erreur de selection '.mysql_error()); $nom = mysql_real_escape_string(htmlspecialchars($_POST['nom'])); $prenom = mysql_real_escape_string(htmlspecialchars($_POST['prenom'])); $sql = " INSERT INTO carrelage VALUES('','$nom','$type_societe' )" ; mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); mysql_close(); } } ?>
Code:
1
2
3
4
5
6
7
8 -- Structure de la table `inscription` CREATE TABLE `inscription` ( `id_inscription` int(4) NOT NULL auto_increment, `nom` varchar(15) NOT NULL, `prenom` text NOT NULL, PRIMARY KEY (`idinscription`), UNIQUE KEY `nom` (`nom`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
Ton code n'a pas de sens, ca aurait ete mieux ainsi :
Je ne devrais pas te donner du code prêt comme ca, mais j'espère que tu liras les commentaires pour mieux comprendre.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 <?php /* On verifie que les donnees ont bien etees soumises, avant de faire le reste */ if ( !empty($_POST['nom']) && !empty($POST['prenom']) ) { /* On se connecte a la base de donnees */ $db = mysql_connect('localhost', 'root', '') or die('Erreur d connexion ' . mysql_error()); mysql_select_db('inscription', $db) or die('Erreur de selection ' . mysql_error()); /* On securise nos donnees avant de les mettre dans une requete sql */ $nom = mysql_real_escape_string(htmlspecialchars($_POST['nom'])); $prenom = mysql_real_escape_string(htmlspecialchars($_POST['prenom'])); /* On prepare la requete sql */ $sql = "INSERT INTO carrelage VALUES ('', '" . $nom . "', '" . $type_societe . "')"; /* On l'execute */ mysql_query($sql) or die('Erreur SQL !' . $sql . '<br />' . mysql_error()); /* On ferme la connexion mysql */ mysql_close(); } /* Le formulaire n'a pas encore ete soumis */ else { /* Tu affiches ton formulaire html ici */ } ?>