Accueil > Forum > > > > simple inscription à une newsletter
simple inscription à une newsletter
vendredi 4 février 2011 à 18:26:16 |
simple inscription à une newsletter

BBFUNK01
|
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) :
Code PHP : <?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... ;-) ;
|
|
samedi 5 février 2011 à 16:08:16 |
Re : simple inscription à une newsletter

BBFUNK01
|
Réponse acceptée !
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 :
Code PHP : <?php
include("parse_AS3.php");
$nom = $_POST['nom'];
$email = $_POST['email'];
$societe = $_POST['societe'];
$resultat = "inscription validée";
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=ma_base', 'root', 'root', $pdo_options);
$req = $bdd->prepare('INSERT INTO news(nom, email, societe) VALUES(:nom, :email, :societe)');
$idD = $bdd->query("SELECT id as NB FROM news ORDER BY id DESC LIMIT 1");
$res = $idD->fetch();
$LastID = $res['NB'];
$reponse = $bdd->query('SELECT id, nom, email FROM news');
while ($donnees = $reponse->fetch())
{
if(($donnees['nom'] == $nom) && ($donnees['email'] == $email)){
$reponse->closeCursor();
$tab_var[] = Parse("OK","0");
$tab_var[] = Parse("ID",$LastID);
$liste_var = implode("&",$tab_var);
echo $liste_var;
}else if(($donnees['nom'] != $nom) && ($donnees['email'] != $email) && ($donnees['id'] == $LastID)){
$req->execute(array(
'nom' => $nom,
'email' => $email,
'societe' => $societe
));
$tab_var[] = Parse("OK","1");
$liste_var = implode("&",$tab_var);
echo $liste_var;
}
}
$reponse->closeCursor();
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
A plus  ,
BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
|
|
samedi 5 février 2011 à 16:10:45 |
Re : simple inscription à une newsletter

BBFUNK01
|
Arrf,
pour ceux qui veulent dialoguer entre leur BDD et leur Flash comme moi, voici le fichier à inclure pour décoder les variables :
Code PHP : <?php
function Parse($variable,$valeur) {
$ajout_var = $variable."=".utf8_encode($valeur);
return $ajout_var;
}
?>
Le fichier que j'inclus comme ceci dans mon PHP dont je parle plus haut :
Code PHP : include("parse_AS3.php");
Bon week-end  ,
BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
|
|
Cette discussion est classée dans : donnees, simple, contrôle, email, if
Répondre à ce message
Sujets en rapport avec ce message
contrôle de date avec gestion des années bissextiles [ par akramodje ]
SVP , j'ai besoin d'un code me permettant le contrçole de date avec surtout la prise en compte d'année bissextiles!merçi de me repondre!!!
Probléme de Requéte ( surement simple ) [ par ITALIA ]
Je developpe actuellement un programme en vb6 attaquant une base Access 97...et j'ai un souci avec une requête SQL.J'ai deux tables PPM2004 et PPM2005
Insertion de fichiers dans une base de donnees [ par michimanon ]
Bonjour tout le monde svp je voudrais savoir comment inserer des fichiers (pdf,word,images et autres) dans
probleme de requete [ par Teclis01 ]
voici la requete qui ne passe pas ... $query = "UPDATE $table SET nom = '$nom_revendeur',email = '$email_revendeur'
BLOQUER DONNEES D'UNE TABLE [ par nawal59 ]
SltComment fait-on pour qu'aucun utilisateur ne puisse modifier les données d'une table qur access? (sans mettre de mot de passe)
Requete sur plage de caractère [ par pwoc ]
Je cherche a faire ressortir des Email invalide d'une base de donnée sur pas de caractère ne pouvant apparaitre dans una chaine... Comment faire avec
Select Distinct sur une colonne [ par thiosyiasar ]
Bonjour,Je veux récupérer une liste d'utilisateur dans une table utilisateur. (id, nom, prénom, email)L'application qui alimente la table ne prend pas
SQL server - Extraction de donnees [ par the_smurf ]
Bonjour,Voici mon probleme. J'utilise osql pour appeler une requete qui m'extraie des donnees de ma base sur sql server vers un fichier plat. Le souci
exporter des donnees de sqlserver 2005 vers access (dts) [ par tenrod ]
Salut a tous ,Voila je travail avec une base sql server 2005 et je voudrais exporter le résultat d'une requete (a partir de ma base sql server) dans u
Champs email [ par StephaneNet ]
Bonjour, Je dois creer une table des adherents de mon site et j'ai un champs email.Pour faire des test je rentre manuellement un mail dans ma table. M
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : ORACLE FORMSRE : ORACLE FORMS par csmahicham
Cliquez pour lire la suite par csmahicham
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|