Eviter les doublons par rapport à un formulaire.

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

2 réponses

cs_nemo_1 Messages postés 60 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 26 octobre 2011
17 oct. 2011 à 14:26
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.
3
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
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
3
Rejoignez-nous