Problème de traitement d'une base MySQL

Résolu
DOKTEK Messages postés 28 Date d'inscription   Statut Membre Dernière intervention   -  
DOKTEK Messages postés 28 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir,
Je suis actuellement en train de créer un site qui implique la création d'une espace membre.
Pour cela évidemment j'ai recours à une base sql pour enregistrer les données collectés sur une page html à part.

Le problème c'est qu'avec ce code j'arrive à lire les données stockés mais par contre pour y écrire ça ne marche pas du tout.

J'apprecierai vraiment si quelqu'un peut m'aider. Sans doute une erreur de débutant..

En tout cas voici le code, j'utilise aussi la fonction d'auto incrémentation de l'ID:

Cdlt Dan

Le code que j'ai écris pour tester cette fonction:

// Programme de test dans le but est d'écrire ou lire des données enregistrés dans une base sql

// Déclaration variables Les valeurs "$_post" sont collectés via une autre page html
$password = htmlspecialchars ($_POST['password']);
$nom = htmlspecialchars ($_POST['nom']);
$adresse = htmlspecialchars ($_POST['adresse']);
$courriel = htmlspecialchars ($_POST['courriel']);
$phone = htmlspecialchars ($_POST['phone']);
$contact = htmlspecialchars ($_POST['contact']);


$bdd = new PDO('mysql:host = localhost;dbname=test','root','');

//A la prochaine ligne je suis sensé d'écrire dans la base des données
// mais cette partie ne fonctionne pas

$bdd->prepare('INSERT INTO base_espace_membre_bretcom(Societe, Adresse, Courriel, Telephone, Interlocuteur, Password) VALUES ($nom, $adresse, $courriel, $phone, $contact, $password)');


// .... et ici je lis (vraiment) dans la base des données

$reponse = $bdd->query('SELECT * FROM base_espace_membre_bretcom');
while ($donnees = $reponse->fetch())
{
echo '<p>'. $donnees ['Societe']. '</p>';
echo '<p>'. $donnees ['Adresse']. '</p>';
echo '<p>'. $donnees ['Courriel']. '</p>';
echo '<p>'. $donnees ['Telephone']. '</p>';
echo '<p>'. $donnees ['Interlocuteur']. '</p>';
echo '<p>'. $donnees ['Password']. '</p>';
}



3 réponses

Nhay Messages postés 838 Date d'inscription   Statut Membre Dernière intervention   126
 
Ta requête ne peut pas fonctionner, vu qu'elle n'est pas executé.
Prepare permet de préparé la requête, il faut ensuite faire un execute dedans.
Tes variables ne doivent de plus pas être dans le prepare mais dans un tableau fournit lors de l'éxecution.

Regarde cette page et ces exemples :
https://www.php.net/manual/fr/pdo.prepare.php
0
DOKTEK Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
Chèr Nhay
Merci pour ton aide.
Le problème en partie résolu.

Reste à faire en sorte que le code laisse passer les caractères français sans les déformer, ce qui n'est pas le cas en ce moment (exemple : le caractère "é" devient "é")

Dan ("DOKTEK")

Le nouveau code ci-après :

<?php
// Programme de test dans le but est d'écrire ou lire des données enregistrés dans une base sql
// Déclaration variables Les valeurs "$_post" sont collectés via une autre page html
$password = htmlspecialchars ($_POST['password']);
$password_2 = htmlspecialchars ($_POST['password_2']);
$nom = htmlspecialchars ($_POST['nom']);
$adresse = htmlspecialchars ($_POST['adresse']);
$courriel = htmlspecialchars ($_POST['courriel']);
$phone = htmlspecialchars ($_POST['phone']);
$contact = htmlspecialchars ($_POST['contact']);
$carlength = strlen($password);

if ($carlength <6)
echo "Attention ! Le mot de passe doit contenir au moins 6 caracteres !";

if (!preg_match("[^{$password}$]", $password_2))

{
echo "Les mots de passe ne sont pas les memes";
}

$bdd = new PDO('mysql:host = localhost;dbname=test','root','');

//A la prochaine ligne j'écris dans la base des données

$req = $bdd->prepare('INSERT INTO base_espace_membre_bretcom
(Societe, Adresse, Courriel, Telephone, Interlocuteur, Password)
VALUES(:Societe, :Adresse, :Courriel, :Telephone, :Interlocuteur, :Password)');
$req->execute(array(
'Societe' => $nom,
'Adresse' => $adresse,
'Courriel' => $courriel,
'Telephone' => $phone,
'Interlocuteur' => $contact,
'Password' => $password
));


// .... et ici je lis dans la base des données

$reponse = $bdd->query('SELECT * FROM base_espace_membre_bretcom');
while ($donnees = $reponse->fetch())
{
echo '<p>'. $donnees ['Societe']. '</p>';
echo '<p>'. $donnees ['Adresse']. '</p>';
echo '<p>'. $donnees ['Courriel']. '</p>';
echo '<p>'. $donnees ['Telephone']. '</p>';
echo '<p>'. $donnees ['Interlocuteur']. '</p>';
echo '<p>'. $donnees ['Password']. '</p>';
}


?>
0
DOKTEK Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
Chèr Nhay
Merci pour ton aide.
Le problème en partie résolu.

Reste à faire en sorte que le code laisse passer les caractères français sans les déformer, ce qui n'est pas le cas en ce moment (exemple : le caractère "é" devient "é")

Dan ("DOKTEK")

Le nouveau code ci-après :

<?php
// Programme de test dans le but est d'écrire ou lire des données enregistrés dans une base sql
// Déclaration variables Les valeurs "$_post" sont collectés via une autre page html
$password = htmlspecialchars ($_POST['password']);
$password_2 = htmlspecialchars ($_POST['password_2']);
$nom = htmlspecialchars ($_POST['nom']);
$adresse = htmlspecialchars ($_POST['adresse']);
$courriel = htmlspecialchars ($_POST['courriel']);
$phone = htmlspecialchars ($_POST['phone']);
$contact = htmlspecialchars ($_POST['contact']);
$carlength = strlen($password);

if ($carlength <6)
echo "Attention ! Le mot de passe doit contenir au moins 6 caracteres !";

if (!preg_match("[^{$password}$]", $password_2))

{
echo "Les mots de passe ne sont pas les memes";
}

$bdd = new PDO('mysql:host = localhost;dbname=test','root','');

//A la prochaine ligne j'écris dans la base des données

$req = $bdd->prepare('INSERT INTO base_espace_membre_bretcom
(Societe, Adresse, Courriel, Telephone, Interlocuteur, Password)
VALUES(:Societe, :Adresse, :Courriel, :Telephone, :Interlocuteur, :Password)');
$req->execute(array(
'Societe' => $nom,
'Adresse' => $adresse,
'Courriel' => $courriel,
'Telephone' => $phone,
'Interlocuteur' => $contact,
'Password' => $password
));


// .... et ici je lis (vraiment) dans la base des données

$reponse = $bdd->query('SELECT * FROM base_espace_membre_bretcom');
while ($donnees = $reponse->fetch())
{
echo '<p>'. $donnees ['Societe']. '</p>';
echo '<p>'. $donnees ['Adresse']. '</p>';
echo '<p>'. $donnees ['Courriel']. '</p>';
echo '<p>'. $donnees ['Telephone']. '</p>';
echo '<p>'. $donnees ['Interlocuteur']. '</p>';
echo '<p>'. $donnees ['Password']. '</p>';
}


?>
0
DOKTEK Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour

J'ai résolu le problème avec les caractères accentué

Cdlt Dan (DOKTEK)
0