BBFUNK01
Messages postés1310Date d'inscriptionjeudi 16 juillet 2009StatutMembreDernière intervention20 juin 2014
-
4 févr. 2011 à 18:26
BBFUNK01
Messages postés1310Date d'inscriptionjeudi 16 juillet 2009StatutMembreDernière intervention20 juin 2014
-
5 févr. 2011 à 16:10
Hello,
j'entame sérieusement mon apprentissage sur la gestion d'une BDD via php, et je coince en ce moment sur un problème encore irrésolu : un simple formulaire d'inscription à une newsletter. Voici le topo : mon formulaire est en Flash, et contient 3 champs -> "nom", "email", et "société". Par conséquent une fois le formulaire rempli je me connecte via PHP à ma base, et je lis la table voulue pour contrôler si les données envoyées ne figurent pas déjà dans cette table. Ensuite ça se corse : si les données n'existent pas, je les insère donc dans la table, le problème c'est que je ne parviens pas à "enchaîner" les 2 actions. J'arrive à lire ma table et à contrôler si les données existent ou non, mais n'arrive pas à insérer ensuite. Et à l'inverse j'arrive à insérer les données saisies mais ne parviens pas à effectuer le contrôle en amont.
Donc je pense que je m'y prend mal et souhaiterai obtenir vos lumières quand à ma méthode.
Voici mon PHP (enfin un de mes tests) :
<?php
//j'inclus un PHP qui me sert à décoder l'echo renvoyé à mon Flash :
include("parse_AS3.php");
//je récupère mes variables :
$nom = $_POST['nom'];
$email = $_POST['email'];
$societe = $_POST['societe'];
$resultat = "inscription validée";
//connexion à la base :
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=ma_base', 'root', 'root', $pdo_options);
$reponse = $bdd->query('SELECT nom, email FROM news');
while ($donnees = $reponse->fetch())
{
//c'est donc ici que j'effectue mon contrôle, déjà ça merdouille dans la mesure où je n'arrive pas
//à contrôler comme ceci : if(($donnees['nom'] == $nom) && ($donnees['email'] == $email)) -> j'obtiens une erreur de syntaxe… ?
if($donnees['nom'] == $nom)
{
if($donnees['email'] == $email)
{
$reponse->closeCursor();
$tab_var[] = Parse("OK","0");
$liste_var = implode("&",$tab_var);
echo $liste_var;
}
}
//et ici j'ai essayé de d'insérer en fonction du contrôle, mais quoi qu'il advienne l'insertion est effectuée mais pas le contrôle.
else if($donnees['nom'] != $nom)
{
if($donnees['email'] != $email)
{
$req = $bdd->prepare('INSERT INTO news(nom, email, societe) VALUES(:nom, :email, :societe)');
$req->execute(array(
'nom' => $nom,
'email' => $email,
'societe' => $societe
));
}
}
}
$reponse->closeCursor();
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
Bref, comme vous le constatez c'est très mal codé, l'idée étant pourtant simple : effectuer un contrôle sur la base en fonction des champs saisis et le cas échéant, insérer ou pas.
Donc si vous avez des conseils pour que je m'améliore je suis preneur .
Merci ,
BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
BBFUNK01
Messages postés1310Date d'inscriptionjeudi 16 juillet 2009StatutMembreDernière intervention20 juin 20146 5 févr. 2011 à 16:08
Hello moi... Et oui je m'auto-réponds .
Bon et bien en ce samedi après-midi j'ai le cerveau un peu plus frais et par conséquent j'ai résolu mon problème , voici le code pour ceux qui seraient intéressés :