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

ecolom
Messages postés
68
Date d'inscription
vendredi 4 juin 2004
Dernière intervention
1 décembre 2012
- 17 oct. 2011 à 13:57 - Dernière réponse : ecolom
Messages postés
68
Date d'inscription
vendredi 4 juin 2004
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 

Votre réponse

2 réponses

Meilleure réponse
cs_nemo_1
Messages postés
60
Date d'inscription
jeudi 10 mars 2005
Dernière intervention
26 octobre 2011
- 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
Messages postés
68
Date d'inscription
vendredi 4 juin 2004
Dernière intervention
1 décembre 2012
- 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.