Bonjour,
Je vous explique ma problématique:
Via formulaire je permets à mes visiteurs de s'inscrire en donnant leur prénom et téléphone...
Chaque téléphone dans la bdd peut avoir 3 états:
-inscrit=1
-participé=1
-gagné=1
Je dois donc prendre ces états en considérations lors de mon INSERT:
Pour le téléphone entré dans le Input:
-si pas présent dans la bdd => on enregistre dans la bdd
-si présent avec l'état inscrit=1 => on enregistre pas et message d'erreur (déjà inscrit)
-si présent dans la bdd avec l'état participé=1 => on enregistre dans la bdd
-si présent dans la bdd avec l'état gagné=1 => on vérifie que le délai entre la date de gagné (un champs existant dans la bdd) >60 jours => si oui, on inscrit =/= sinon on n'inscrit pas avec message d'erreur (gagné il y a moins de 60 jours).
Je rencontre des soucis :-il ne semble pas réussir à voir si le téléphone est déjà existant dans la bdd ni son état.
donc => il inscrit systématiquement le téléphone
voici mon code ( de la partie validation uniquement:
<?
$message_erreur_formulaire = "Vous devez d'abord remplir le formulaire.";
// on teste si le formulaire a été soumis
if (!isset($_POST['submit']))
{
echo "<br><br><br><center><span class='bleu_italique'>";
echo "les coordonnées ont bien été enregistrées !" ;
echo "</span></center><br>";
$ip=$REMOTE_ADDR;
$support="Téléphone";
$inscripokvox = "1";
$userident = "Non identifiable (téléphone)";
$chiffres = '';
$lettres = '';
$chaine = $_POST['telephone'];
for($i = 0; $i < strlen($chaine); $i++)
{
if(is_numeric($chaine[$i]))
{
$chiffres .= $chaine[$i];
}
if(!is_numeric($chaine[$i]))
{
$lettres .= trim($chaine[$i]);
}
}
function Format_telephone($numero_tel)
{
// ne garde que les chiffres
$numero_tel = ereg_replace("[^[:digit:]]", "",$numero_tel);
$numero_tel = trim($numero_tel);
// ajout des points entre les numéros
if (strlen($numero_tel) == 10) {
$numero_tel = preg_replace('#(\d{2})#', '$1.', $numero_tel);
}
return $numero_tel;
}
$nouveau_tel = Format_telephone ($chiffres);
function no_special_character_v2($chaine2){ // les accents
$chaine2=trim($chaine2);
$chaine2= strtr($chaine2,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");
// les caracètres spéciaux (aures que lettres et chiffres en fait)
$chaine2 = preg_replace('/([^.a-z0-9]+)/i', '-', $chaine2);
$chaine2 = strtolower($chaine2);
return $chaine2;
}
$lettres2 = no_special_character_v2 ($lettres);
echo $nouveau_tel;
echo "<br/>";
echo $lettres2;
echo"<br/>";
include("../fichier de connection");
mysql_connect($host, $user, $pass);
mysql_select_db("$bdd")
or die("Ouverture base impossible");
$req_lire ="SELECT *,DATE_FORMAT(winvox, '%Y-%m-%d') as datewin FROM jeuvox WHERE telvox='$nouveau_tel' ";
mysql_query($req_lire) or die($req_lire. mysql_error());
$lire2 = mysql_query($req_lire) or die($req_lire."<br>\n".mysql_error());
while ($reponse = mysql_fetch_array($lire2))
{
$alreadytel = $reponse['telvox'];
$inscriptok = $reponse['inscriptokvox'];
$win = $reponse['datewin'];
}
$today = date("Y-m-d");
$diffdate = (strtotime(date("Y-m-d")) - strtotime($win)) / 86400 ;
echo "tel :" .$nouveau_tel. "<br/>today: " .$today. "<br/> jour de gain: " .$win. "<br/>diff : " .$diffdate. "<br/>déjà tel " .$alreadytel. "<br/>etat ok: " .$inscriptok;
if (isset($_POST['prenom']) AND isset($_POST['telephone']))
{
if ($_POST['prenom'] != NULL AND $_POST['telephone'] != NULL)
{
if ($nouveau_tel = $alreadytel AND $inscriptok = "1")
{
echo "Ce participant est déjà inscrit";
}
elseif ($nouveau_tel = $alreadytel AND $diffdate <= '60' )
{
echo "Ce participant a gagné il y a moins de 60 jours !";
}
else
{
$req_create ="INSERT INTO jeuvox (telvox,prenomvox,supportvox,inscripokvox,uservox)
VALUES ('$nouveau_tel','$prenom','$support','$inscripokvox','$userident')";
$add=mysql_query($req_create) or die(mysql_error());
echo $win. " - " .$diffdate. " - " .$alreadytel. " - " .$inscriptok. " - " .$win;
}
}
}
mysql_close;
};
?>
Pourriez-vous m'aider un peu à me dépatouiller?
En fait, je n'arrive pas à chopper le contenu de la variable dans ma boucle, ou bien il n'arrive pas à lire dans la bdd, mais je n'ai aucun message d'erreur...
Merci d'avance