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

Petit nouveau ! | 9 Messages

07 févr. 2007, 15:07

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.

Avatar du membre
ViPHP
ViPHP | 3008 Messages

07 févr. 2007, 15:17

<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 ;)

Petit nouveau ! | 9 Messages

07 févr. 2007, 15:28

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.
Modifié en dernier par sculptis le 07 févr. 2007, 15:31, modifié 1 fois.

Avatar du membre
ViPHP
ViPHP | 3008 Messages

07 févr. 2007, 15:31

Remontres nous le code corrigé des deux pages.

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

Petit nouveau ! | 9 Messages

07 févr. 2007, 15:34

** 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.

Avatar du membre
ViPHP
ViPHP | 3008 Messages

07 févr. 2007, 15:36

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.

Petit nouveau ! | 9 Messages

07 févr. 2007, 15:45

Quelques accents qui m'ont échappés dans ma précipitation, mais après modification, mon problème reste entier...

Avatar du membre
ViPHP
ViPHP | 3008 Messages

07 févr. 2007, 15:51

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 ?

Petit nouveau ! | 9 Messages

07 févr. 2007, 15:56

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...

Avatar du membre
ViPHP
ViPHP | 3008 Messages

07 févr. 2007, 15:56

dis moi ce que tu as changé exactement ? et recolles tout le code rectifié

Petit nouveau ! | 9 Messages

07 févr. 2007, 15:59

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é"; 
?> 

Avatar du membre
ViPHP
ViPHP | 3008 Messages

07 févr. 2007, 16:20

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 ?

Petit nouveau ! | 9 Messages

07 févr. 2007, 17:34

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?

Petit nouveau ! | 9 Messages

07 févr. 2007, 17:39

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?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

07 févr. 2007, 17:47

Non ma foi tout devrais fonctionner correctement.

Quels sont les types de tes champs ?