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

Messages postés
68
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
1 décembre 2012
- - Dernière réponse : ecolom
Messages postés
68
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
1 décembre 2012
- 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 

2 réponses

Meilleure réponse
Messages postés
60
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
26 octobre 2011
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_nemo_1
Messages postés
68
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
1 décembre 2012
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ecolom