Comment connecter base de donné à un formulaire de contact [Fermé]

Signaler
Messages postés
18
Date d'inscription
jeudi 19 mars 2015
Statut
Membre
Dernière intervention
1 octobre 2019
-
Messages postés
31094
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 janvier 2021
-
bonjour, je créee actuellement mon Premier site internet en PHP, HTML et je voudrais savoir comment relier mon formulaire de contact à ma base de données afin de pouvoir récupérer les données sur la base.

merci d'avance pour votre aide

2 réponses

Messages postés
31094
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 janvier 2021
3 194 >
Messages postés
18
Date d'inscription
jeudi 19 mars 2015
Statut
Membre
Dernière intervention
1 octobre 2019

Déjà .. tu n'as pas regardé TOUS les liens que je t'ai donné...
Tu utilises l'extension Mysql_ ... alors que dans le troisième lien il est expliqué qu'il faut désormais éviter...
Je te conseilles d'utiliser la PDO.

Quoi qu'il en soit.. dans ton code actuel... tu as oublié de mettre le nom de ta BDD entre quotes...
mysql_select_db("portfolio"); 


... mais j'insiste... passes à la PDO



En PDO pour se connecter à une BDD Mysql :
<?php
//variables :
$host = "localhost";
$dbName="portfolio";
$user = "root";
$password = "root";

//connexion
try{
 $dsn = "mysql:host=$host;dbname=$dbName";
 $options = array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' );
 $dbh = new PDO($dsn, $user, $password, $options);
 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo "Échec lors de la connexion : " . $e->getMessage();
}
?>

Bien sûr .. il faut modifier ton code pour utiliser cette nouvelle connexion...
par exemple.. pour faire une requête SELECT..
$sql = "INSERT INTO contacts
           VALUES('', '$NOM','$PRENOM','$EMAIL','$Num_TELEPHONE','$MESSAGE')";
$dbh->exec($sql);



PS: Evites de mettre des caractères spéciaux dans le nom de tes variables ... N°TELEPHONE risque de ne pas passer !


EDIT : correction de la variable $dsn (avec des " " au lieu des ' ' )
Messages postés
18
Date d'inscription
jeudi 19 mars 2015
Statut
Membre
Dernière intervention
1 octobre 2019
>
Messages postés
31094
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 janvier 2021

j'en prend note, j'essaie et je vous dit ce qu'il en est
Messages postés
18
Date d'inscription
jeudi 19 mars 2015
Statut
Membre
Dernière intervention
1 octobre 2019

rebonjour j'ai fait les modification nécessaire mais j'ai un message d'erreur qui s'affiche le voilà : Échec lors de la connexion : SQLSTATE[HY000] [2005] Unknown MySQL server host '$host' (0)
Messages postés
31094
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 janvier 2021
3 194 >
Messages postés
18
Date d'inscription
jeudi 19 mars 2015
Statut
Membre
Dernière intervention
1 octobre 2019

Oupsss... petite erreur de copier/coller...
ça marchera mieux avec de doubles-quotes
 $dsn ="mysql:host=$host;dbname=$dbName";
Messages postés
18
Date d'inscription
jeudi 19 mars 2015
Statut
Membre
Dernière intervention
1 octobre 2019

bonjour j'ai fait les modification et maintenant j'ai plus de message mais ça ne fonctionne toujours pas
Messages postés
31094
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 janvier 2021
3 194
Tu n'as plus de message d'erreur... donc c'est un bon début.

Par contre... le "ça ne marche pas" .. ne nous permet pas d'identifier le problème...
il faut donc :
1 - Que tu expliques exactement ce que le code devrait faire... et qui.. selon toi.. ne fait pas.
2 - Que tu nous montres ton code (celui que tu viens de corriger....)

Au cas où ... penses à faire un ECHO de la variable $sql ... puis à tester la requête (ainsi affichée sur ta page...) directement dans ta BDD pour t'assurer que sa syntaxe est la bonne.
Je t'invite à regarder ceci : https://codes-sources.commentcamarche.net/faq/10778-heidisql-tester-ses-requetes-sql

Messages postés
18
Date d'inscription
jeudi 19 mars 2015
Statut
Membre
Dernière intervention
1 octobre 2019

mon code doit me permettre de récupérer les information qui seront renseigner dans le formulaire de contact. voilà le code
 <?php 
mysql_select_db("portfolio");
//variables :
//*
$host = "localhost";
$dbName="portfolio";
$user = "root";
$password = "root";

//connexion
try{
 $dsn = "mysql:host=$localhost;dbname=$portfolio";
 $options = array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' );
 $dbh = new PDO($dsn, $user, $password, $options);
 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo 'Échec lors de la connexion : ' . $e->getMessage();
}
$sql = "INSERT INTO contacts
           VALUES('', '$NOM','$PRENOM','$EMAIL','$Num_TELEPHONE','$MESSAGE')";
$dbh->exec($sql);
?>
Messages postés
31094
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 janvier 2021
3 194
Premier pb ......
je vois un mysql_select_db au dabut de ta code ....

Ensuite...
comme je te l'ai dit .. fais un ECHO de $sql.. et testes ta reqête en direct dans ta BDD
<?php 
//variables :
//*
$host = "localhost";
$dbName="portfolio";
$user = "root";
$password = "root";

//connexion
try{
 $dsn = "mysql:host=$localhost;dbname=$portfolio";
 $options = array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' );
 $dbh = new PDO($dsn, $user, $password, $options);
 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo 'Échec lors de la connexion : ' . $e->getMessage();
}


$sql = "INSERT INTO contacts
           VALUES('', '$NOM','$PRENOM','$EMAIL','$Num_TELEPHONE','$MESSAGE')";
echo "<br> La requete est :<br>".$sql;
 if (!$dbh->exec($sql)) {
   echo "\nPDO::errorInfo():\n";
   print_r($dbh->errorInfo()); 
 }

?>

Messages postés
18
Date d'inscription
jeudi 19 mars 2015
Statut
Membre
Dernière intervention
1 octobre 2019

bonjour j'ai fait les modification nécessaire et voilà ceux que m'affiche ma page :
La requete est :
INSERT INTO contacts VALUES('', '','','','','')
Messages postés
31094
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 janvier 2021
3 194 >
Messages postés
18
Date d'inscription
jeudi 19 mars 2015
Statut
Membre
Dernière intervention
1 octobre 2019

Donc on attaque le second problème ...
A quel moment .. initialises tu tes variables '$NOM','$PRENOM','$EMAIL','$Num_TELEPHONE','$MESSAGE' ??

Il faut remettre dans ton code :

$NOM =htmlentities(trim($_POST['NOM']));
$PRENOM =htmlentities(trim($_POST['PRENOM']));
$EMAIL =htmlentities(trim($_POST['EMAIL']));
$Num_TELEPHONE =htmlentities(trim($_POST['Num_TELEPHONE']));
$SUJET =htmlentities(trim($_POST['SUJET']));
$MESSAGE =htmlentities(trim($_POST['MESSAGE']));

$sql = "INSERT INTO contacts
           VALUES('', '$NOM','$PRENOM','$EMAIL','$Num_TELEPHONE','$MESSAGE')";
echo "<br> La requete est :<br>".$sql;
 if (!$dbh->exec($sql)) {
   echo "\nPDO::errorInfo():\n";
   print_r($dbh->errorInfo()); 
 }