Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

PHP/SQL:script lue mais sans faire les bonne chose.


chtilo
 Share

Messages recommandés

Bonjours a tous,

 

Et merci pour l'aide que vous pourrez m'apportez, car sa fait un moment que je cherche et que l'on m'aide mes pas de solution trouvé. Je précise que je suis débutant en PHP/Mysql.

 

Voici le topo de mon code:

Mon formulaire est fait en HTML avec vérif en javascript, ensuite, traité par PHP pour déclaré les variable et les vérifié.

Toujours dans ce script suivant le choix du visiteur sur le formulaire, avec les bouton radio, il y a recherche d'infos dans la BDD, dans la Table correspondant au choix du visiteur, si déjà ces infos alors on stoppe tout avec un message disant que : il a djà eu l'offre.

Si aucune infos dans la BDD alors le script continu en enregistrant ces infos du formulaire + la date + son IP, et envoi d'un mail à moi avec ces infos et son message pour sa demande du service offert.

 

Donc le problème de mon code PHP c'est :

 

1:(le plus important) _il ne se déroule pas comme il le devrait, il n'écrit pas dans la table de la BDD et il envoi tout le temps un mail donc je n'arrive pas a ajouté une condition entre la parti BDD et l'envoi de mail.

 

2:La parti qui fait la recherche dans la table correspondante vient d'une aide qu'on m'as apporter mais le SELECT COUNT prend en compte tous mais je voudrais qu'il ne recherche pas la présence de la date pour permettre a deux personne différente mais a la même date de demandé le service offert.

Mais si après count je mets le titres de mes champs alors sa bloque avec une erreur .

 

Donc le soucis là c'est lors d'un test en local avec wamp et PHPMyAdmin je fais comme ci j'étais un visiteur qui voulais bénéficier du service offert.

Je rempli le formulaire(j'ai aucune de mes infos dans la BDD, je precise) et Hop j'envoi.

 

Et là il me dit que j'ai déjà beneficié du service(donc que je suis dans la BDD hors ce n'est pas le cas) et il m'envoi un mail(alors que je voudrais que si la personne est dans la BDD alors le script s'arrête avant l'envoi de mail.

 

Donc le soucis c'est que la parti MySQL ne travail pas vraiment ou alors y a un loupé dans ce code mais on me l'as fais donc je pige pas.

 

Il y a rien dans la BDD et surtout comment je peux mettre en condition la parti mail.

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ITB.Audio/envoi</title>
</head>
<body>
<?php
/////Vérification suivi de la Déclaration des variables

if(isset($_POST['Nom']))
$nom = ($_POST['Nom']);
if(isset($_POST['Prenom'])) 
$prenom = ($_POST['Prenom']);
if(isset($_POST['Nom_du_groupe_ou_nom_d_artiste'])) 
$artiste = ($_POST['Nom_du_groupe_ou_nom_d_artiste']);
if(isset($_POST['Mail']))
$email = ($_POST['Mail']);
if(isset($_POST['Nom_titre']))
$titre = ($_POST['Nom_titre']); 
if(isset($_POST['Message']))
$message = ($_POST['Message']);
if(isset($_POST['Type_d_essai'])) /////un des boutons radio a bien été coché service A ou B
$service = ($_POST['Type_d_essai']);
switch ($service){
	/////on va determiner dans quelle table on va en fct de la valeur reçue
	case "A":
		$table="A";
	break;
	case "B":
		$table="B";
	break;

}


/////Connexion au serveur et à la BDD
mysql_connect("mon_hôte", "mon_identifiant", "mon_password") or die("erreur de connexion au serveur");

mysql_select_db("ma_BDD") or die("erreur de connexion a la base de donnees");

/////Recherche de la présence des infos dans la table concerné par le choix
$query="SELECT COUNT(*) FROM $table ";
$result = mysql_query($query) or die ('Erreur : '.mysql_error() );

$row = mysql_fetch_row($result);

$nb_enr = $row[0];


if($nb_enr=0){
/////insert into $table etc...
$query="INSERT TO $table (date, ip, artiste, nom, prenom, mail, titre)
       VALUE (CURDATE(), '$REMOTE_ADDR', '$artiste', '$nom', '$prenom', '$email', '$titre')";
	}
else{
	echo 'Vous avez deja beneficie du service offert';	
}

/////On se déconnecte de MySQL
       mysql_close();


/////Envoi du mail par compte messagerie avec PHPmailer
require ("path_de_la_class\class.phpmailer.php");
$mail = new PHPmailer();
$mail->IsSMTP();
$mail->Host='mon_smtp';
$mail->SMTPAuth=TRUE;
$mail->Username='identifiant';
$mail->Password='password';
$mail->From='mon_mail'; 
$mail->AddAddress("$email");
$mail->AddReplyTo('Mon adresse');	
$mail->Subject="Demande d'essai offert de $artiste,$nom";
$mail->Body="Je suis $prenom,$nom.
Notre groupe est :$artiste.
Nous souhaitons profiter de l'essai offert de $service.
$message ";
if(!$mail->Send()){ /////Teste le return code de la fonction
  echo $mail->ErrorInfo; /////Affiche le message d'erreur (ATTENTION:voir section 7)
   }
   else{
  echo 'Votre demande d\'informations a ete envoyer'; /////message en cas de réussite.
   }
?>
</body>
</html>

 

Voilà, je vous remercie vraiment de l'aide que vous pourrez m'apportez car le problème semble assez corsé.

 

Amicalement.

Lien vers le commentaire
Partager sur d’autres sites

if($nb_enr=0)

 

l'opérateur de comparaison d'égalité est == (ou != pour l'inégalité)

 

pour la condition VRAI de ton test, tu définis une chaine de caractère $query mais jamais tu ne l'exécutes.

(d'ailleurs il y a une erreur de syntaxe SQL dans ta $query)

 

pour ton SELECT COUNT, je te renvoie à la doc MySQL pour que tu cernes correctement ton besoin. Quel est-il? tu veux offrir un service une fois par jour par adresse IP? par nom d'utilisateur?

SELECT COUNT(DISTINCT date) FROM $table WHERE nom=$nom;

si le résultat de cette requête est égal à 1, la personne a déjà utilisé le service sinon non.

 

http://dev.mysql.com/doc/refman/5.0/fr/functions.html

http://dev.mysql.com/doc/refman/5.0/fr/counting-rows.html

 

Au passage, tu ne réalises aucun test sur les variables passées à MySQL.

Lien vers le commentaire
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

 Share

  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×
×
  • Créer...