begin process at 2012 05 27 05:44:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

MySQL

 > 

Débutant(s)

 > 

simple inscription à une newsletter


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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&#8230; ?
        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


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales