Eviter les doublons par rapport à un formulaire. [Résolu]

ecolom 68 Messages postés vendredi 4 juin 2004Date d'inscription 1 décembre 2012 Dernière intervention - 17 oct. 2011 à 13:57 - Dernière réponse : ecolom 68 Messages postés vendredi 4 juin 2004Date d'inscription 1 décembre 2012 Dernière intervention
- 22 oct. 2011 à 22:55
Bonjour à tous,

me voilà de nouveau dans les embarras ( manque de connaissances quand tu nous tiens.. )
En fait, j'ai créé un formulaire d'inscription à une formation et j'aimerai que les personnes qui réservent ne puissent s'inscrire qu'une seule fois.
J'ai détourné le problème en adaptant un NULL dans la zone user de la DB mais celà ne me convient pas car j'ai un envoie d'Email au submit du formulaire.
Avec cette action, si je fais un encodage double, le formulaire reste à blanc et ne fait pas d'Update dans la DB mais l'Email est envoyé.
Comment puis-je faire pour vérifier dans la db si le user existe.
Si user n'existe pas , maj db + envoie Email
Si user existe , message = => Vous avez déjà encodé votre réservation.
Ci-dessous une partie de mon code.
Je suis preneur de toutes les infos que vous pourriez me transmettre ou d'exemple de prog.
D'avance, merci

<?
include("./include/param.inc.php");
// Creation des variables des zones de la page
$date_encodage = mysql_real_escape_string($_REQUEST['date_encodage']);
$date_reservation = mysql_real_escape_string($_REQUEST['date_reservation']);
$nom_users = mysql_real_escape_string($_REQUEST['name_users']);
$email_users = mysql_real_escape_string($_REQUEST['email_users']);
// Test si les 2 zones sont différentes de Blanc

if ($_REQUEST['date_reservation'] != "" and $_REQUEST['name_users'] != "")

{

// Si le test est ok insertion des datas dans la DB
mysql_query("INSERT INTO int_org (date_encodage,
date_reservation,
nom_users,
email_users
VALUES('$date_encodage',
'$date_reservation',
'$nom_users',
'$email_users'
)");
// On envoie l email
mail($emailcrd,
$sujet,
$codehtml,
"From: $expediteur\r\n".
"Reply-To: $reponse\r\n".
"Content-Type: text/html; charset="iso-8859-1"\r\n");
// -----------------------------------------------------------------------------------------------------------------------------------
// Email envoyé à l utilisateur
$email = $_REQUEST['email_users'];
$sujet = "Intelligence Organisationnelle - $date_reservation ";
$expediteur = "info@g.com";
$reponse = $expediteur;
// Corps du texte HTML
$codehtml=
"<html>" .
"" .
"Intelligence Organisationnelle - Organizational Intelligence
\n".
" Nom / Name : $nom_users
" .
"Email : $email_users
" .
"Dates :$date_reservation
" .
"Lien : http://crd1045/agenda_reservations/intelligence_organisationnelle
" .
"-------------------------------------------------------------------------------------------------------
" .
" ==> Message généré automatiquement via le formulaire de réservation Intelligence Organisationnelle
" .
"==> Message generated automatically from Organizational Intelligence form
" .
"" .
"</html>";
// On envoie l email
mail($email,
$sujet,
$codehtml,
"From: $expediteur\r\n".
"Reply-To: $reponse\r\n".
"Content-Type: text/html; charset="iso-8859-1"\r\n");
}
// -----------------------------------------------------------------------------------------------------------------------------------
// Select pour preparer l affichage du contenu de la DB
$result=mysql_query("SELECT * FROM int_org order by date_reservation ASC,nom_users DESC");
$i=0;
while( $row=mysql_fetch_array($result) )
{
if($i>0)
{

echo "<tr valign=bottom>";
echo "<td bgcolor=#3333CC background='./images/strichel.gif' colspan=6 width=1 height=1></td>";
echo "</tr>";
}
{
echo "<tr height=20 valign=center>";
echo "<td align=center> ".$row['date_reservation']."</td>";
echo "<td align=center> ".$row['nom_users']."</td>";
echo "<td align=center> ".$row['email_users']."</td>";
echo "<td class=tabval></td>";
echo "</tr>";
$i++;
}
}
?>
[code=php]
/code




Encore merci pour votre aide. Je continue de chercher de mon côté.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
cs_nemo_1 60 Messages postés jeudi 10 mars 2005Date d'inscription 26 octobre 2011 Dernière intervention - 17 oct. 2011 à 14:26
3
Merci
Chalute,

Voilà ce que je te suggere:

<?php
function verify_user_by($nom, $prenom){
   if(!empty($nom, $prenom)){
      $query = "SELECT COUNT(id) FROM tableusers";
      $query ." WHERE nom '". $nom . "' "
      $query ." AND prenom '". $prenom . "' ";
      $query .= " LIMIT 1";
      $result_set = mysql_query($query) or die("Mysql query
    failed");
      //REMEMBER
      //If result_set is empty, the fetch will return false.
      //To avoid that, do an if statement
      if($demande = mysql_fetch_assoc($result_set)){
 return $demande; 
      }else{

      }
   }
?>


En gros si tu as un retour de ta function ba l'user existe déjà sinon tu peux l'inscrire.

Voilà le prototype

$user_exists = verify_user_by($nom, $prenom);
if(!empty($user_exists) && $user_exists == 1){
//Faire l'inscription + envoie mail
}else{
//Ooooops!
echo "Tu veux pas revendre des billets toi par hasard?";
}

En gros c'est ce que j'aurai fait!

Bon courage.

Merci cs_nemo_1 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de cs_nemo_1
Meilleure réponse
ecolom 68 Messages postés vendredi 4 juin 2004Date d'inscription 1 décembre 2012 Dernière intervention - 22 oct. 2011 à 22:55
3
Merci
Merci Nemo1.
Entre temps, j'ai pu trouver un code que j'ai adapté dans mon programme.

// Verifie que les zones date de reservation etnom soient remplies
if ($_REQUEST['date_reservation'] != "" and $_REQUEST['name_users'] != "")
{
$sql1 = "SELECT * FROM int_org WHERE nom_users='$nom_users'";
$req1 = mysql_query ($sql1) or die ('erreur sql
'.$sql1.'
'.mysql_error());

//vérifie si le nombre de lignes trouvées est 0 si oui, c'est que ce pseudo n'est pas encore utilisé> ok
if(mysql_num_rows($req1) == 0)
{
$sql2 = "INSERT INTO int_org (date_encodage,
date_reservation,
nom_users,
email_users
)
VALUES('$date_encodage',
'$date_reservation',
'$nom_users',
'$email_users'
)";
$req2 = mysql_query($sql2) or die('Erreur SQL :
'.$sql2);

etc...

Merci pour ta réponse

Merci ecolom 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de ecolom

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.