Mise à jour d'enregistrement en évitant les doublons

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Mise à jour d'enregistrement en évitant les doublons

Re: Mise à jour d'enregistrement en évitant les doublons

par Michel67000 » 10 nov. 2010, 00:19

Finalement, j'ai fini par trouver la réponse...
Il suffit tout simplement de rajouter une seconde variable sur le nom de l'utilisateur :
$nom = (iSset($_POST['inscrit_nom']) ? $_POST['inscrit_nom'] : NULL);

et de rajouter cette variable dans le test :

$sql = " SELECT COUNT(*) AS resultat FROM eu_inscrit WHERE inscrit_email = '".$email."' AND inscrit_nom!= '".$nom."' ";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

$result = mysql_fetch_assoc($req);

if($result['resultat'] == 0)
{

Il suffit de faire la mise à jour !

Merci pour ton aide.

Re: Mise à jour d'enregistrement en évitant les doublons

par Michel67000 » 02 nov. 2010, 00:05

Dunbar,
J'ai essayé et j'arrive à bloquer la mise à jour lorsque l'utilisateur modifie son email (qui s'appelle "inscrit_email" dans la table) en prenant un email déjà utilisé (dans la table utilisateur qui s'appelle "eu_inscrit").
Le problème c'est que s'il ne modifie pas son adresse email... la mise à jour est bloquée car son email est déjà présent dans la table. La mise à jour d'un autre champ ne se fait pas, par exemple s'il veut changer son numéro de téléphone tout en gardant son adresse email (déjà enregistrée dans la table).
J'ai mis ci-dessous le code que tu m'as donné, que j'ai modifié en prenant les bons noms et que j'ai intégré dans le code de mise à jour de l'enregistrement (code généré par dreamweaver) :
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
	
 
$email = (iSset($_POST['inscrit_email']) ? $_POST['inscrit_email'] : NULL);

$sql =  " SELECT COUNT(*) AS resultat FROM eu_inscrit WHERE inscrit_email = '".$email."' ";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

        $result = mysql_fetch_assoc($req);

        if($result['resultat'] == 0)
        {
  $updateSQL = sprintf("UPDATE eu_inscrit SET inscrit_nom=%s, inscrit_prenom=%s, inscrit_sexe=%s, inscrit_annee=%s, inscrit_email=%s, inscrit_mdp=%s, inscrit_pays=%s, inscrit_qualite=%s, inscrit_sport=%s, inscrit_activite1=%s, inscrit_activite2=%s, inscrit_activite3=%s, inscrit_activite4=%s, inscrit_tel=%s, inscrit_taille=%s WHERE inscrit_id=%s",
                       GetSQLValueString($_POST['inscrit_nom'], "text"),
                       GetSQLValueString($_POST['inscrit_prenom'], "text"),
                       GetSQLValueString($_POST['inscrit_sexe'], "text"),
                       GetSQLValueString($_POST['inscrit_annee'], "date"),
                       GetSQLValueString($_POST['inscrit_email'], "text"),
                       GetSQLValueString($_POST['inscrit_mdp'], "text"),
                       GetSQLValueString($_POST['inscrit_pays'], "int"),
                       GetSQLValueString($_POST['inscrit_qualite'], "int"),
                       GetSQLValueString($_POST['inscrit_sport'], "int"),
                       GetSQLValueString(isset($_POST['inscrit_activite1']) ? "true" : "", "defined","1","0"),
                       GetSQLValueString(isset($_POST['inscrit_activite2']) ? "true" : "", "defined","1","0"),
                       GetSQLValueString(isset($_POST['inscrit_activite3']) ? "true" : "", "defined","1","0"),
                       GetSQLValueString(isset($_POST['inscrit_activite4']) ? "true" : "", "defined","1","0"),
                       GetSQLValueString($_POST['inscrit_telephone'], "text"),
                       GetSQLValueString($_POST['inscrit_taille'], "text"),
                       GetSQLValueString($_POST['inscrit_id'], "int"));

  mysql_select_db($database_web1592_db1, $web1592_db1);
  $Result1 = mysql_query($updateSQL, $web1592_db1) or die(mysql_error());
}
               
  $updateGoTo = "p_all_prive.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
    $updateGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $updateGoTo));
}
Comment faire pour permettre une mise à jour de l'enregistrement en conservant son adresse email ?

Merci pour ton aide.

Re: Mise à jour d'enregistrement en évitant les doublons

par Michel67000 » 01 nov. 2010, 20:51

Je vais essayer ce soir... mais ça me parait un peu compliqué à intégrer dans mon code.
Je ne comprend pas tout.
Merci pour ta réponse.

Re: Mise à jour d'enregistrement en évitant les doublons

par dunbar » 01 nov. 2010, 20:07

Salut,

De la manière suivante peut-être :)
$email = (iSset($_POST['email']) ? $_POST['email'] : NULL);

$sql =  " SELECT COUNT(*) AS resultat FROM user WHERE email = '".$email."' ";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

	$result = mysql_fetch_assoc($req);

	if($result['resultat'] == 0)
	{
		echo 'Ok E-Mail valide';
                }
                else
               {
    	              echo 'l\'email existe déjà.';
               }

Mise à jour d'enregistrement en évitant les doublons

par Michel67000 » 01 nov. 2010, 18:59

Bonjour,
J'ai créer une table 'utilisateur' dans laquelle les internautes mettent leurs informations personnelles :
nom, prénom, téléphone, email, mot de passe...
L'email et le mot de passe permettent à l'utilisateur du site de s'identifier. Lorsque ce dernier rempli son bulletin en ligne et le valide j'ai créé un comportement serveur qui vérifie le nouveau nom d'utilisateur afin d'éviter les doublons. En effet, 2 utilisateurs ne peuvent pas avoir le même email.
Jusque là... pas de problème !
La difficulté pour moi c'est de créer une page de mise à jour des informations personnelles de l'utilisateur qui ne lui permette pas de saisir un email déjà utilisé dans la table 'utilisateur'.
j'utilise Dreamweaver et j'ai des notions de débutant en PHPMysql. Quelqu'un pourrait me dire comment faire cette page de modification d'information qui, à l'aide d'une requête, ne permette pas à l'internaute de saisir dans le champ "email" une adresse email déjà présente dans la table?
Merci d'avance pour votre aide...