Page 1 sur 2

réalisation d'un formulaire PHP ->>SQL

Posté : 07 févr. 2007, 15:07
par sculptis
Bonjour,
Après de maintes recherches, je ne trouve pas de messages expliquant clairement comment faire simplement un formulaire PHP dont les données sont entrées dans une base SQL.

Je note donc ce que j'ai actuellement:

** le fichier de connexion à la base: connexionbase.php3 **
<?
function connexionbase(&$cnx,&$req,$libreq)
{
//---------------------------------------------------------------------------------
//CONNEXION MYSQL
//---------------------------------------------------------------------------------

$cnx=mysql_connect("sql.mondomaine.com","basexyz","password")
or die("Le serveur de base de données n'est pas disponible pour le moment. Si ce problème persiste veuillez
nous en informer.");


//---------------------------------------------------------------------------------
//SELECTION DE LA BASE DE DONNEES MYSQL
//---------------------------------------------------------------------------------
$database="basexyz";
$DB=mysql_select_db(&$database) or die("Le système de gestion de base de données n'est pas disponible pour le moment.
Si ce problème persiste veuillez nous en informer.");
//if (!$DB)
      //{echo "ERREUR DE CONNEXION !!!";}//ouvrir une fenetre d'erreur

//---------------------------------------------------------------------------------
//EXECUTION DE LA REQUETE  MYSQL
//---------------------------------------------------------------------------------

//echo $libreq;
$req=mysql_query($libreq) ;
//or die("UNE ERREUR S'EST PRODUITE DANS LA REQUETE");
};
?>
** le formulaire: formulaire.php **
<form method='POST' action='enregistrement.php' name='annonces'>
<font face='Verdana' size='2'>
<input type='text' name='$date' size='20' value='0000-00-00 00:00:00'>
<input type='text' name='$type' size='20' value='type'>
<input type='text' name='$prix' size='20' value='1000'>
<input type='text' name='$surface' size='20' value='200'>
<input type='text' name='$nb_pieces' size='20' value='4'>
<input type='text' name='$description' size='20' value='description'>
<input type='text' name='$ancienneté' size='20' value='ancienneté'>
<input type='text' name='$localisation' size='20' value='localisation'>
<input type='text' name='$téléphone' size='20' value='0505050505'>
<input type='submit' value='envoyer' name='envoyer'>
</font></form>

** une page d'enregistrement nommée: enregistrement.php **
<? 
require ("connexion/connexionbase.php3");
/////////////////////////////////////////////////// 
$date = $_POST['date']; 
$type = $_POST['type']; 
$prix = $_POST['prix'];
$surface = $_POST['surface']; 
$nb_pieces = $_POST['nb_pieces']; 
$description = $_POST['description'];  
$ancienneté = $_POST['ancienneté']; 
$localisation = $_POST['localisation'];
$téléphone = $_POST['téléphone']; 
////////////////////////////////////////////////// 
$sql = "INSERT INTO annonces( date, type, prix, surface, nb_pieces, description, ancienneté, localisation, téléphone) VALUES('$date', '$type', '$prix', '$surface', '$nb_pieces', '$description', '$ancienneté', '$localisation', '$téléphone')";  
echo "enregistrement de $type effectué"; 
?> 


Est-ce que quelqu'un peut me dire ce qui ne va pas sachant que le message echo m'affiche: "enregistrement de effectué"
le $type n'a pas d'effet et la base n'a pas de nouvelle entrée.

Posté : 07 févr. 2007, 15:17
par charabia
<form method='POST' action='enregistrement.php' name='annonces'> 
<font face='Verdana' size='2'> 
<input type='text' name='$date' size='20' value='0000-00-00 00:00:00'> 
<input type='text' name='$type' size='20' value='type'> 
<input type='text' name='$prix' size='20' value='1000'> 
<input type='text' name='$surface' size='20' value='200'> 
<input type='text' name='$nb_pieces' size='20' value='4'> 
<input type='text' name='$description' size='20' value='description'> 
<input type='text' name='$ancienneté' size='20' value='ancienneté'> 
<input type='text' name='$localisation' size='20' value='localisation'> 
<input type='text' name='$téléphone' size='20' value='0505050505'> 
<input type='submit' value='envoyer' name='envoyer'> 
</font></form>
Tu as une erreur sur les noms. Il ne faut pas affecter un $ devant :
<input type='text' name='date' size='20' value=''>
Sachant en plus que c'est la personne qui va rentrer les données, il est inutile de mettre à l'avance les value.

Autre chose, il faut éviter les accents, espaces et caractères spéciaux dans les noms que tu donnes. Téléphone pas bon, telephone bon ;)

réalisation d'un formulaire PHP ->>SQL

Posté : 07 févr. 2007, 15:28
par sculptis
Ok...
J'ai fait le changement sur mes fichiers et sur la base.
Le message renvoyé me donne maintenant le type effectivement mais ma base n'est pas remplie davantage.

Les values préremplies ne sont que temporaires et m'évitent de remplir a chaque fois le formulaire.

Posté : 07 févr. 2007, 15:31
par charabia
Remontres nous le code corrigé des deux pages.

Tu as supprimé tous les accents des champs de ta table ?

formulaire

Posté : 07 févr. 2007, 15:34
par sculptis
** enregistrement.php **
<? 
require ("connexion/connexionbase.php3");
/////////////////////////////////////////////////// 
$date = $_POST['date']; 
$type = $_POST['type']; 
$prix = $_POST['prix'];
$surface = $_POST['surface']; 
$nb_pieces = $_POST['nbpieces']; 
$description = $_POST['description'];  
$ancienneté = $_POST['anciennete']; 
$localisation = $_POST['localisation'];
$téléphone = $_POST['telephone']; 
////////////////////////////////////////////////// 
$sql = "INSERT INTO annonces( date, type, prix, surface, nbpieces, description, anciennete, localisation, telephone) VALUES('$date', '$type', '$prix', '$surface', '$nbpieces', '$description', '$anciennete', '$localisation', '$telephone')";  
echo "enregistrement de $type effectué"; 
?> 
** formulaire.php **
<form method='POST' action='enregistrement.php' name='annonces'>
<font face='Verdana' size='2'>
<input type='text' name='date' size='20' value='0000-00-00 00:00:00'>
<input type='text' name='type' size='20' value='type'>
<input type='text' name='prix' size='20' value='1000'>
<input type='text' name='surface' size='20' value='200'>
<input type='text' name='nbpieces' size='20' value='4'>
<input type='text' name='description' size='20' value='description'>
<input type='text' name='anciennete' size='20' value='ancienneté'>
<input type='text' name='localisation' size='20' value='localisation'>
<input type='text' name='telephone' size='20' value='0505050505'>
<input type='submit' value='envoyer' name='envoyer'>
</font></form>
Et les tables ont aussi été corrigées.

Posté : 07 févr. 2007, 15:36
par charabia
Tu ne vois pas quelque chose de louche ici ? ;)
$ancienneté = $_POST['anciennete'];  
$localisation = $_POST['localisation']; 
$téléphone = $_POST['telephone'];

$sql = "INSERT INTO annonces( date, type, prix, surface, nbpieces, description, anciennete, localisation, telephone) VALUES('$date', '$type', '$prix', '$surface', '$nbpieces', '$description', '$anciennete', '$localisation', '$telephone')";
Regardes bien les noms des variables. Et comme je te l'ai dit, inutile de mettre des valeurs par défaut puisque ces valeurs seront rentrées par l'internaute.

Posté : 07 févr. 2007, 15:45
par sculptis
Quelques accents qui m'ont échappés dans ma précipitation, mais après modification, mon problème reste entier...

Posté : 07 févr. 2007, 15:51
par charabia
Tu as encore des erreurs :
$nb_pieces = $_POST['nbpieces'];
On va récapituler pour que tu comprennes mieux et que tu vois bien d'où vient ton souci.

Ton formulaire possède des champs avec des noms : toto, tata...etc.

Pour récupérer ces valeurs, tu dois récupérer le champ grâce à son nom : $_POST['toto'], $_POST['tata'], etc...

Tu peux initialiser comme tu as fait :
$toto = $_POST['toto'];
$tata = $_POST['tata'];...etc

Et donc dans ton INSERT, tu dois récupérer exactement la variable initialisée, à savoir ici : $toto et $tata.

Voici ton code :
$nb_pieces = $_POST['nbpieces'];
Regardes maintenant la variable que tu utilises pour faire l'insertion, est-ce correct après mon explication ?

Posté : 07 févr. 2007, 15:56
par sculptis
J'ai bien compris il me semble et j'ai bien modifié partout où il y en avait besoin mais la base n'est toujours pas modifiée...

Posté : 07 févr. 2007, 15:56
par charabia
dis moi ce que tu as changé exactement ? et recolles tout le code rectifié

Posté : 07 févr. 2007, 15:59
par sculptis
Je remet le code pour que ce soit plus clair, j'ai maintenant:

** formulaire.php **
<form method='POST' action='enregistrement3.php' name='annonces'>
<font face='Verdana' size='2'>
<input type='text' name='date' size='20' value='0000-00-00 00:00:00'>
<input type='text' name='type' size='20' value='type'>
<input type='text' name='prix' size='20' value='1000'>
<input type='text' name='surface' size='20' value='200'>
<input type='text' name='nbpieces' size='20' value='4'>
<input type='text' name='description' size='20' value='description'>
<input type='text' name='anciennete' size='20' value='ancienneté'>
<input type='text' name='localisation' size='20' value='localisation'>
<input type='text' name='telephone' size='20' value='0505050505'>
<input type='submit' value='envoyer' name='envoyer'>
</font></form>
**enregistrement.php**
<? 
require ("connexion/connexionbase.php3");
/////////////////////////////////////////////////// 
$date = $_POST['date']; 
$type = $_POST['type']; 
$prix = $_POST['prix'];
$surface = $_POST['surface']; 
$nbpieces = $_POST['nbpieces']; 
$description = $_POST['description'];  
$anciennete = $_POST['anciennete']; 
$localisation = $_POST['localisation'];
$telephone = $_POST['telephone']; 
////////////////////////////////////////////////// 
$sql = "INSERT INTO annonces( date, type, prix, surface, nbpieces, description, anciennete, localisation, telephone) VALUES('$date', '$type', '$prix', '$surface', '$nbpieces', '$description', '$anciennete', '$localisation', '$telephone')";  
echo "enregistrement de $type effectué"; 
?> 

Posté : 07 févr. 2007, 16:20
par charabia
Ca devrait fonctionner sauf si tu as fait une faute sur le nom d'un de tes champs.
Sinon tu as mis :
<form method='POST' action='enregistrement3.php' name='annonces'>
Or ta page s'appelle enregistrement.php c'est normal ?

Posté : 07 févr. 2007, 17:34
par sculptis
oui, c'est normal (je renommais comme d'autres valeurs pour que ce soit plus clair)...cela n'a pas d'incidence.
Par contre j'arrive pas à intégrer les valeurs dans ma base. De quoi peut venir l'erreur?

Posté : 07 févr. 2007, 17:39
par sculptis
Est ce que par exemple un type='text' dans mon formulaire peut avoir une incidence sur l'entrée d'un numéro dans la base?

Posté : 07 févr. 2007, 17:47
par charabia
Non ma foi tout devrais fonctionner correctement.

Quels sont les types de tes champs ?