Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 16/08/2007, 20h22   #1
Invité de passage
 
Inscription : février 2006
Messages : 18
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 18
Points : 0
Points : 0
Par défaut Formulaire liaison PHP MySQL

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
cruelblood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 01h00   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Vous devriez trouver les informations dont vous avez besoin parmi les tutoriels que nous proposons :
Nous restons à votre disposition en cas de questions ou si vous rencontrez des difficultés lors de leur application.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 11h24   #3
Invité de passage
 
Inscription : février 2006
Messages : 18
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 18
Points : 0
Points : 0
Par défaut rep

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 ...
cruelblood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 15h11   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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 :
Code :
mysql_connect('localhost', 'root', '') or die(mysql_error()); // Paramètres de connexion locaux avec les valeurs par défaut
Par commodité, sélectionnez ensuite la base de données à utiliser par défaut :
Code :
mysql_select_db('mysql') or die(mysql_error());
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).

Un petit exemple un peu plus complet visant à lister les tables qui composent la base système mysql :
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();
C'est ce qu'explique de façon plus détaillée le tutoriel : passer des requêtes MySQL en PHP
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 18h25   #5
Invité de passage
 
Inscription : février 2006
Messages : 18
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 18
Points : 0
Points : 0
j'ai suivi les consignes et voilà ce que j'ai réussi à faire :

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 &agrave; 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">&nbsp;</td>
      <td width="338">&nbsp;</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>
si vous détectez une erreur et si vous avez quelques remarques à faire n'hésitez pas ....
cruelblood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 19h08   #6
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Code X :
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
ç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
// On commence par récupérer les champs 
if(isset($_POST['nom']))      $raison_sociale=$_POST['nom'];
else      $nom="";
Au lieu de raison_sociale la variable ne devrait-elle pas s'appeler nom ?

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')"  ;
La requête est incorrecte syntaxiquement parlant pour commencer. Elle devrait plutôt être de cette forme :
Code :
$sql = "INSERT INTO infos_tbl(nom) VALUES('" . mysql_real_escape_string($nom) . "')";
Et pensez à l'avenir à nous donner les messages d'erreur.

julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 19h52   #7
Invité de passage
 
Inscription : février 2006
Messages : 18
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 18
Points : 0
Points : 0
désolé mais j arrive pas encore a avoir l'execution de ma page "PHP" pour avoir les message d'erreur

Citation:
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
est ce qu'on voudra pa du code sql pour creer la base de données et les tables


Citation:
(mis à "part" pour déclencher une erreur de syntaxe).
si je place pas le code sqlde la creaction des tables dans la page ou dois je le faire .....

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
cruelblood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 20h06   #8
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par cruelblood
désolé mais j'arrive pas encore à avoir l'exécution de ma page "PHP" pour avoir les message d'erreur
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
est ce qu'on ne voudra pas du code sql pour créer la base de données et les tables
On le fait rarement soi-même via un script : on passe par la console ou un outil comme phpMyAdmin.

Citation:
Envoyé par cruelblood
si je place pas le code sql de la création des tables dans la page où dois-je le faire
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
et pour afficher les "enregistrements" est-ce qu'on devra créer une nouvelle page pour ça et comment ces données vont être stockées dans la base
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.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 01h36   #9
Invité de passage
 
Inscription : février 2006
Messages : 18
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 18
Points : 0
Points : 0
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
cruelblood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 07h40   #10
Membre régulier
 
Avatar de B.Moncef
 
Étudiant
Inscription : août 2007
Messages : 75
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2007
Messages : 75
Points : 83
Points : 83
Citation:
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.

Par contre cette ligne :
Citation:
Erreur SQL ! INSERT INTO inscription VALUES('','','')
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à.
B.Moncef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 11h57   #11
Invité de passage
 
Inscription : février 2006
Messages : 18
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 18
Points : 0
Points : 0
je n'ai pas réussi a corriger voila mon code PHP :
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();
 
}	}
?>
et ma table sous sql :
Code SQL :
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 ;
cruelblood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 23h25   #12
Membre régulier
 
Avatar de B.Moncef
 
Étudiant
Inscription : août 2007
Messages : 75
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2007
Messages : 75
Points : 83
Points : 83
Ton code n'a pas de sens, ca aurait ete mieux ainsi :
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 */
}
 
?>
Je ne devrais pas te donner du code prêt comme ca, mais j'espère que tu liras les commentaires pour mieux comprendre.
B.Moncef 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 13h59.


 
 
 
 
Partenaires

Hébergement Web