probléme pour joindre un formulaire html a une base de donnée

vv2
Invité n'ayant pas de compte PHPfrance

06 mars 2008, 18:55

bonjour !
j'ai un petit soucis j'ai realisé un formulaire html
avec des textbox que j'ai appelé :nom,prenom,adr etc...
avec method=post et action=nouveau1.php
et dans la page nouveau1 j'aimerais pourvoir envoyé les
données dans la table membre d'une base de donnée appelée site
quand je l'essaye les pages s'affiche comme il faut mais il ni
a rien qui s'ajoute dans ma base ! je ne sais pas trop ce que je
dois mettre dans mysql_connect ('', '','') je travaille sur mon pc
avec wamperver2 donc ... je pense que le soucis viens de la mais jen
suis pas sur!
si quelqu'un peu m'aider
merci

voici le formulaire :

Code : Tout sélectionner

<html> <head> <title> formulaire d'inscription</title> <script language="javascript"> function soumettre() //fonction pour vérifier que les textbox ne sont pas vide { if(document.f.prenom.value=="") alert("il manque le prenom !"); if(document.f.nom.value=="" ) alert("il manque le nom !"); if(document.f.adr.value=="" ) alert("il manque l'adresse !"); if(document.f.ville.value=="" ) alert("il manque la ville !"); if(document.f.cp.value=="" ) alert("il manque le code postale !"); if(document.f.tel.value=="" ) alert("il manque le telephone !"); if(document.f.mail.value=="" ) alert("il manque le m@il !"); } </script> </head> <body background="image/lesboutslog1.gif"> <form name="f" onsubmit="soumettre()" method="post" action="nouveau1.PHP"> <h2><FONT style="BACKGROUND-COLOR: black" face="Eras Demi ITC" color=white>assez parlé de moi parlez moi de vous plutot</FONT></h2> <p> merci de bien vouloir renseigner ce formulaire pour vous inscrire <table border="3" bgcolor="#00e0" align="center" <div> <tr> <TBODY> <TR><td> <p><li><h3><FONT face=ReservoirGrunge>qui es tu?</FONT> </h3> <P></P> <p>prenom:<input name="prenom" size="12" maxlength="20" > nom:<input name="nom" size="12" maxlength="25" > </p></li></td></TR> <tr><td> <p><li><h3><FONT face=ReservoirGrunge>d'ou viens tu?</FONT> </h3> <P></P> <p> adresse:<input name="adr" size="28" maxlength="45" > <p> ville:<input name="ville" size="15" maxlength="35"> <p> code postale:<input name="cp" type="integer" size="16" maxlength="5"></p></li> </td></tr> <tr><td> <p><li><h3><FONT face=ReservoirGrunge>comment te joindre?</FONT> </h3> <P></P> <p>n°tel:<input name="tel" type="integer" size="12" maslenght="10"></p> <p>@dresse mail:<input name="mail" size?25? maxlenght ="30"></p></li> </td></tr><tr><td> <p><li><h3><FONT face=ReservoirGrunge>quelle est ta musique?</FONT> </h3> <p>style musical: <select size="1" name="style"> <option selected>diver <option>clasique <option>chanson française <option>ska <option>rock <option>variete <option>rap <option>sic de rue <option>reggae <option>punk &amp oï <option>disco <option>metal <option>tec& co <option> autres... </option> </select></p></li> </td></tr> <tr><td> <p>merci! <input type="submit" value="valider"> <input type="reset" value="recommencer"></p> </td></tr> </form></TBODY> <P></P></p> </body> </html>
_____
____________________________
et voici le nouveau1.php:
<?php
 // je me connecte à la base  
    $base = mysql_connect ('', '','');  
    mysql_select_db ('site', $base) ;  
    ?>
    <html>
    <head>
    <title>vous etes inscrit</title>
    </head>
   <body>
   <?php
   // test si les variables du formulaire sont bien déclarées  
   if (isset($_POST['prenom']) && isset($_POST['nom']) && isset($_POST['adr'])
    && isset($_POST['ville']) && isset($_POST['cp']) && isset($_POST['tel']) 
    && isset($_POST['mail']) && isset($_POST['style'])) 
    {
         // le tuple (mysql_query) et le petit message d'erreur si ça ne marche pas
         $sql ='INSERT INTO membre(nom_menbre,prenom_menbre,adr_menbre,ville_menbre,
                   cp_menbre,tel_menbre,mail_menbre,style_menbre,)
                  VALUES ("'.$_POST['prenom'].'","'.$_POST['nom'].'","'.$_POST['adr'].'" ,"'.$_POST['ville'].'",
                  "'.$_POST['cp'].'","'.$_POST['tel'].'","'.$_POST['mail'].'","'.$_POST['style'].'")';
    
         //  un autre tuple (mysql_query) et  le petit message d'erreur si ça ne marche pas
         mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
    
         // on ferme la connexion à la base 
         mysql_close(); 
      
         
   }  
   else { 
         echo 'Les variables du formulaire ne sont pas déclarées';  
   }  

?> 
merci:lol:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 mars 2008, 11:27

mysql_connect() est la fonction qui permet à php d'établir une connexion avec ta base mysql. Le meilleur moyen pour savoir ce qu'il faut passer comme paramètres à une fonction, c'est de regarder la documentation associée

En gros tu dois lui dire sur quel serveur se trouve ta base de données mysql (si c'est sur le même serveur il suffit de lui dire "localhost", si c'est sur une autre machine, il faut lui en donner le chemin). Ensuite il faut lui dire avec quel utilisateur il doit se connecter à la base, et éventuellement quel mot de passe (en général l'utilisateur par défaut est "root" qui est admin et a les pleins pouvoir sur la base, mais tu peux en créer d'autres et restreindre leurs droits pour éviter qu'une appli puisse accéder à une base qui ne lui est pas destiné etc. Normalement le mot de passe par défaut de root est vide '', mais en général on te recommande vivement de lui en donner un, donc si cela a été fait, c'est lui qu'il faut utiliser ;))

Les exemples de la doc te montrent également comment tester si la connexion à la base a aboutie ou échoué :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

vv2
Invité n'ayant pas de compte PHPfrance

07 mars 2008, 14:01

ok c cool un message d'erreur en moin !
par contre il reste de message d'erreur a savoir:

Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\site\Nouveau1.php on line 28

et

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\wamp\www\site\Nouveau1.php on line 28
Erreur SQL !INSERT INTO membre(nom_menbre,prenom_menbre,adr_menbre,ville_menbre, cp_menbre,tel_menbre,mail_menbre,style_menbre,) VALUES ("dtgd","fgdgf","yhrf" ,"yhdt", "12345","1234567890","hbgfdr","punk & oï")
Access denied for user 'ODBC'@'localhost' (using password: NO)

si quelqu'un sait ce qu'il faut faire !

merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 mars 2008, 14:56

Le premier warning te dit que l'utilisateur ODBC a tenté de se connecter à la base locale (@localhost), qu'il n'a pas spécifié de mot de passe (using password: no) et que l'accès lui a été refusé (access denied).

On peut donc supposer que s'il existe un utilisateur odbc dans mysql (j'avions quand même un petit doute là dessus), sont mot de passe est incorrecte ou bien celui-ci ne dispose pas de droits de connexion à la base de données.

Le second warning en découle : puisque l'utilisateur que tu as spécifié n'a pas le droit de se connecter, mysql_query() n'a pas pu trouver de connexion ouverte vers le serveur pour exécuter la requête :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

07 mars 2008, 16:27

ok jte remercie
finalement
j'ai modifier nouveau1
et ça donne maintenant:
<?php

$nom=$_post['nom'];
$prenom=$_post['prenom'];
$adr=$_post['adr'];
$ville=$_post['ville'];
$cp=$_post['cp'];
$tel=$_post['tel'] ;
$mail=$_post['mail'];
$style=$_post['style'];

 // on teste la déclaration de nos variables  
    if (isset($_POST['prenom']) && isset($_POST['nom']) && isset($_POST['adr'])
    && isset($_POST['ville']) && isset($_POST['cp']) && isset($_POST['tel']) 
    && isset($_POST['mail']) && isset($_POST['style'])) 
   {    // on affiche nos résultats 
      echo 'felicitation '.$_POST['prenom'].' tu est bien inscrit en tant que membre';  
   }
   else {echo 'un probléme est survenue inopinément';}  
   // je me connecte à la base  
    $base = mysqli_connect ('localhost','root','','site')  or die ("impossible de ce connecter a la base");
// Vérification de la validité de la connexion MYSQL

if($mysql_link)
{
// Requete d'insertion MYSQL
$sql= "INSERT INTO membre(nom_menbre,prenom_menbre,adr_menbre,ville_menbre,
cp_menbre,tel_menbre,mail_menbre,style_menbre,)
VALUES ('".$nom."','".$prenom."','".$adr."','".$ville."','".$cp."',
'".$tel."','".$mail."','".$style."', NOW())";
// Execution de cette requete dans la base site
 mysqli_query ($base,$sql )or die ("erreur;");
echo "<font face='Verdana' size='2'>Les valeurs ont bien été enregistrées dans la table <b>membre</b></font>";
}
// La connexion Mysql est indisponible
else echo "<HTML><HEAD><TITLE>Erreurs</TITLE></HEAD><BODY><font face='Verdana' size='2'>Vous avez du faire une erreur : 
Ce problème se pose soit : <br>- Parce que vous n'avez pas créer la base, ni la table MYSQL;<br>- 
Parce que vous n'avez pas changé le Mot de passe d'accès a MYSQL dans ce programme (Par défaut, c'est Host : 'localhost', login : 'root', MDP : '[vide]';<br>-
 Soit vous n'avez pas lancé MYSQL.</font></body></html>";

?>
    
    <head>
    
    <title>vous etes inscrit</title>
    </head>
   <body>
   <img src=image/msn-smiley-bien.gif>
   <a href=menufor.html>menu des formulaires</a>
   </body></html>
et maintenant il s'afiche la page erreur:

Vous avez du faire une erreur : Ce problème se pose soit :
- Parce que vous n'avez pas créer la base, ni la table MYSQL;
- Parce que vous n'avez pas changé le Mot de passe d'accès a MYSQL dans ce programme (Par défaut, c'est Host : 'localhost', login : 'root', MDP : '[vide]';
- Soit vous n'avez pas lancé MYSQL.

pourtant j'ai créé la base et la table sur la mysql console , j'ai changé le mot de passe ,et wamp
m'indique que tous les services sont lancées (donc mysql est lançée)

Donc j'ai essayé de lancer la méme page en metant le" if($mysql_link)" en commentaire (ainsi que le "else echo "<HTML><HEAD><TITLE>Erreurs</TITLE></HEAD><BODY><font face='Verdana' size='2'>Vous avez du faire une erreur :
Ce problème se pose soit ..."
et quand je fais ça j'obtient le "erreur" du mysqli_query !

donc voila les symptomes ! si quelqu'un a un reméde !!
merci ! :roll:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 mars 2008, 18:54

Lorsque tu fais un "if($mysql_link)", tu testes si la valeur de la variable $mysql_link est vraie pour savoir si php rentre ou pas dans le if... or dans ton code, cette variable n'apparait nulle part, elle n'est pas définie et n'est donc pas "vraie" :)

si tu vires le test (où si tu utilise la bonne variable ;)) il ira bien essayé d'exécuter la requête.. assures toi à ce moment là que l'erreur ne serait pas simplement due à une bête erreur d'innatention :
menbre,mail_menbre,style_menbre,) VALUES (
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

vv2
Invité n'ayant pas de compte PHPfrance

07 mars 2008, 20:44

ok !!
merci !!
j'ai encore fait quelque modif et maintenant ça donne
<?php

$nom=$_post['nom'];
$prenom=$_post['prenom'];
$adr=$_post['adr'];
$ville=$_post['ville'];
$cp=$_post['cp'];
$tel=$_post['tel'] ;
$mail=$_post['mail'];
$style=$_post['style'];
$base = mysqli_connect ('localhost','root','','site')  or die ("impossible de ce connecter a la base");

 // on teste la déclaration de nos variables  
    if (isset($_POST['prenom']) && isset($_POST['nom']) && isset($_POST['adr'])
    && isset($_POST['ville']) && isset($_POST['cp']) && isset($_POST['tel']) 
    && isset($_POST['mail']) && isset($_POST['style'])) 
   {    // on affiche nos résultats 
      echo 'felicitation '.$_POST['prenom'].' tu est bien inscrit en tant que membre';  
   }
   else {echo 'un probléme est survenue inopinément';}  
   // je me connecte à la base  
    
mysqli_connect ('localhost','root','','site')  or die ("impossible de ce connecter a la base");

{
// Requete d'insertion MYSQL
$sql= "INSERT INTO membre(nom_menbre,prenom_menbre,adr_menbre,ville_menbre,
cp_menbre,tel_menbre,mail_menbre,style_menbre)
VALUES ('".$nom."','".$prenom."','".$adr."','".$ville."','".$cp."',
'".$tel."','".$mail."','".$style."', NOW())";
// Execution de cette requete dans la base site
 mysqli_query ($base,$sql )or die ("erreur");
echo "<font face='Verdana' size='2'>Les valeurs ont bien été enregistrées dans la table <b>membre</b></font>";
}


?>
    
    <head>
    
    <title>vous etes inscrit</title>
    </head>
   <body>
   <img src=image/msn-smiley-bien.gif>
   <a href=menufor.html>menu des formulaires</a>
   </body></html>
et tout fonctionne (ou presque)
g encore un petit soucis avec :mysqli_query ($base,$sql )or die ("erreur"); qui m'affiche erreur !
mais ya plus de warning c'est déja bien !!
franchement merci parce je débute et cé pa evident j'ai pas encore le méme coup d'oeil !
si tu as une idéede pourquoi ça affiche erreur je suis tout ouie !
merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

08 mars 2008, 13:40

Dans ton or die(), ajoute également un appel à la fonction mysqli_error(). En fait, php se contente de transmettre à ta base SQL la requête généré et il n'a pas la moindre idée de ce que celle-ci en fait. Du coup il faut également tester si la requête s'est bien exécutée ou pas (ce que tu fais déjà avec le or die(), et dans le cas où il y a eu une erreur, demander à la base ce qui s'est passé).

Le message d'erreur peut être un nom de table ou de colonne qui n'existe pas, une chaine mal fermée, une valeur trop grande pour la colonne dans laquelle elle est sensée être enregistrée... ou en l'occurence dans ton cas, peut être simplement le fait que dans ton INSERT tu déclares plus de valeurs que de colonnes et que du coup il panique un peu :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...