Demandez une action 1 ou 2 suivant analysSQL

Résolu
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   -  
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je vous remercie de l'aide que vous pourrrez m'apporter pour mon soucis.

Donc en début de code je déclare mes variable qui me servirons pour le mail mais entre la déclaration et le mail.

j'aurais les requette SQL.

La vérification des champs est faite en Javascript ensuite le formulaire as donc pour :

Type_d_essai : deux case a cocher soit A soit B et je déclare dans le php :

$service=$_POST['Type_d_essai']

Donc ce a quoi je pensai avant de faire une recherche dans la BDD c'est de regarder si c'est A ou B de cocher.

en fonction de ce résultat donc A ou B alors je demande une requete pour cherché dans la table A si A est cocher ou la table B si B est cocher

Si il y a une présence d'infos alors pas d'enregistrement ni de mail.

Sinon y a pas de présence d'infos alors enregistrement dans la table correspondante au choix et envoi du mail.

Donc en fait ce que je ne voit pas c'est comment faire cette conditions. Après les requete pour enregistrez ou cherché c'est OK mais avant il y a cette conditions que je ne sais pas articulers.

Je n'arrive pas traduire ce que j'ai mis dans mon post 1 je veus dire la condition

je pensai à

if $service=A
alors cherché dans A
if aucune présence d'infos alors insert to
else
echo "vous avez déjà..."

else

if $service=B
alors cherché dans B
if aucune présence infos alors INSERT TO

else
echo "vous avez déjà..."

Comme on le voir je suis pas un as du PHP je débute donc je n'arrive pas trés bien a traduire ça en PHP alors que les requète je serai les écrire c'est vraiment la mise en place des condition qi me trouble le plus.

Amicalement.

Bon je m'aide moi même,

Donc dans mon sript entre la déclaration des variable et l'envoi du mail.

Je me connecte a ma basse de donnée SERVICE.

ensuite je veux dire a PHP de demandé a SQL je cherché dans la table correspondant au choix fais par $service=$_POST['Type_d_essai'].

Et là donc je sais pas comment lui dire de cherché dans la table correspondant au choix.

Là pour commencer je pensai à
if $service='A'

$reponse = mysql_query("SELECT * FROM A"); //requet qui demande de regarder tous dans la table A

else $service='A'

$reponse = mysql_query("SELECT * FROM A"); //requet qui demande de regarder tous dans la table B


ensuite je bloque car je veux pas affiché les données trouvé je veux juste que php vois si une des données du formulaire pour le service A ou B est déjà présente dans A pour une demande du service A ou dans B pour une demande de service B

Si il voit quelque chose alors :

echo'vous avez déjà eu le service A ou le service'; /// A ou B dépendra de ce que la personne demande et as déjà eu.


Si il voit pas de donné présente alors.

mysql_query=("INSER TO A (champs 1, champs 2) VALUE ('','$machin','$truc')")


Voilà, j'espère avoir rendu mon soucis plus clair j'ai mis en gras la zone du script où je ne sais quoi mettre car les exemple propose que des echo et comme je veux faire(demande a PHP de faire avec SQL) une analyse/comparaison pour faire l'action enfonction du résultat.

Merci à vous pour l'aide, je sais que mon morceau de code doit avoir quelque erreur mais c'est surtout la zone en gras qui me gêne.

Car le visiteur ne doit rien voir lui c'est soit c'est ok et je lui dit que sa demande est envoyé ou soit il a déja eu le droit au service qu'ils demande.

Merci beaucoup, amicalement.
A voir également:

39 réponses

chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
Alors j'ai corrigé l'histoire d'une variable qui déconnai.

Mais par contre le script ne fais toujours pas son travail.

Car lors de mon test je suis pas dans la base mais lui me dis que si et en plus il envoi le mail mais moi je veux pas qu'il envois un mail si la personne est dans la base.

Et je comprend pas pourquoi il ne m'enregistre pas vu que je suis pas dedans.

Merci a vous pour l'aide que vous m'apporterez car là en tant que débutant je sèche vraiment.
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
deux petites erreurs: pour faire un test d'égalité c'est == et pas = en php

et pour utiliser mysql_real_escape_string il faut être connecté à la BDD car cette fonction a besoin du link en 2 ième argument mysql_escape_string fait aussi bien

ensuite dans $table="ta_tableA"; il faut que tu remplace par le nom réel des tes tables correspondant à A et B

<?php
/////Vérification suivi de la Déclaration des variables
//si tu utilises mysql_escape_string il faut faire la connexion à la base avant et mettre le $link en deuxième argument
//dans ton cas utilises mysql_escape_string ça fait pareil
if(isset($_POST['Nom'])) $nom = mysql_escape_string(htmlspecialchars($_POST['Nom']));
if(isset($_POST['Prenom'])) $prenom = mysql_escape_string(htmlspecialchars($_POST['Prenom']));
if(isset($_POST['Nom_du_groupe_ou_nom_d_artiste'])) $artiste = mysql_escape_string(htmlspecialchars($_POST['Nom_du_groupe_ou_nom_d_artiste']));
if(isset($_POST['Mail'])) $email = mysql_escape_string(htmlspecialchars($_POST['Mail']));
if(isset($_POST['Nom_titre'])) $titre = mysql_escape_string(htmlspecialchars($_POST['Nom_titre'])); 
if(isset($_POST['Message'])) $message = mysql_escape_string(htmlspecialchars($_POST['Message']));

if(isset($_POST['Type_d_essai'])){ /////un des boutons radio a bien été coché
	$service = mysql_escape_string(htmlspecialchars($_POST['Type_d_essai']));
	
	switch ($service){
		/////on va determiner dans quelle table on va en fct de la valeur reçue
		
		//ci dessous il faut que tu mettes les noms de tes tables de la BDD: celle qui correspond à A et celle qui correspond à B
		case "A":
			$table="table_A";
		break;                                ///// Ici je sais si je dois mettre ="table_A"  ou ="A"
		case "B":
			$table="table_B";
		break;

	}


	/////Connexion au serveur et à la BDD
	$link = mysql_connect("mon_hôte", "Utilisateur", "mot_de_passe") 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){ //erreur  il faut == pour faire un test d'égalité
		/////insert into $table etc...
		$query="INSERT TO $table (date, ip, artiste, nom, prenom, mail, titre)
        VALUE (CURDATE(), '$REMOTE_ADDR', '$artiste', '$nom', '$prenom', '$mail', '$email', '$titre')";
		}else{
			echo 'Vous avez deja beneficie du service offert';	
		}
} /////l'accolade fermante qui manquait et bloquait.	OK
/////On se déconnecte de MySQL
        mysql_close();
?> 
0
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
Alain merci de ton aide,

Oui effectivement c'est == et non pas =

Par contre pour :

	/////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){ //erreur  il faut == pour faire un test d'égalité


J'ai fait une petite modif en remplaçant (*) par tous les champs sauf la date car si deux visiteur vienne le même jours le deuxième seras bloquer car la date sera dejà dans la BDD.

Par contre if($nb_enr==0) sa vérifie la présence des données entré par l'utilisateur sur le formulaire ou sa vérifie seulement si des données existe dans la BDD. Car je saisi pas ce point.

Par contre le soucis par exemple il me refusai lors des test mais il envoyai le mail. comment je peux remaniè pour envoyé le mail que si il y a eu non présence des donné dans la BDD.

Merci beaucoup de l'aide que tu m'apporte, petit a petit tu me fait beaucoup avancé et j'apprend des chose.

Amicalement.
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
if($nb_enr==0) sa vérifie la présence des données entré par l'utilisateur sur le formulaire ou sa vérifie seulement si des données existe dans la BDD.

regardes au dessus: $row = mysql_fetch_row($result);
$nb_enr = $row[0];


donc c'est bien le nombre d'enr dans la BDD

pour l' envoi du mail tu le mets dans la partie du if


if($nb_enr == 0){ //erreur  il faut == pour faire un test d'égalité
		/////insert into $table etc...
		$query="INSERT TO $table (date, ip, artiste, nom, prenom, mail, titre)
        VALUE (CURDATE(), '$REMOTE_ADDR', '$artiste', '$nom', '$prenom', '$mail', '$email', '$titre')";

//envoi du mail...

		}else{
			echo 'Vous avez deja beneficie du service offert';	
		}


0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
J'ai fait une petite modif en remplaçant (*) par tous les champs sauf la date car si deux visiteur vienne le même jours le deuxième seras bloquer car la date sera dejà dans la BDD.


non
0
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
Bon j'ai dû faire un loupé dans mon INSER TO car là j'ai testé il me dit le message as été envoyer , j'ai aucune erreur niveau SQL mais pas d'enregistrement dans la BDD.

Voici ma lignde code pour écrire les donnés du formulaires si aucune n'est déjà présente :

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


Bon j'ai du mettre au début $ip = $_SERVER['REMOTE ADDR'] sinon il était pas content.

Merci pour l'aide que tu m'apporte.
0
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
if($nb_enr==0) sa vérifie la présence des données entré par l'utilisateur sur le formulaire ou sa vérifie seulement si des données existe dans la BDD.

regardes au dessus: $row = mysql_fetch_row($result);
$nb_enr = $row[0];


donc c'est bien le nombre d'enr dans la BDD


Tu veux dire que sa regarde si les coordonné du visiteur (tous, nom, prenom etc sauf la date) sont déjà présente dans la table.

C'est pour ça que j'ai voulu chagé le (*) car sinon sa va regarder la date et si deux personne différente donc avec des infos différente vienne le même jours la vérification va dire:

La date existe donc le deuxième visiteur ou autre le même jours ne pourron pas avoir droit a l'offre de service.

En fait l'idé c'est par exmple : Pierre DUPONT IP-20 LeChanteur1 pierre@machin Sachanson
demande l'offre offert A

Je veux pas (du limiter les possibilité) qu'il retente de demander l'offre A: si par exemple il change un truc :

Pierre DUPONT IP-20 LeChanteur1 pierre@machin Sachanson4

Là l'analyse va voir que Pierre DUPONT IP-20 LeChanteur1 pierre@machin son dans la table A.

Donc message de refus et pas de mail qui me soit envoyer.
0
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
il faut que tu fasse un

SELECT * FROM $table WHERE artiste ='".$artiste."' AND nom='".$nom."" AND prenom=..... etc

$artiste $nom ......etant les valeurs saisies dans le formulaire

puis avec mysql_num_rows tu auras le nombre déja existant correspondant et agir en conséquence


D'accord mais mais je comprend pas c'est : j'aurais le nombre existant ok mais y a pas une fonction pour voir la présence et agir en fonction de oui ou non.

Par contre j'ai corrigé pour l'enregistrement mais ensuite j'ai bougé ma parti mail mais j'ai un parse erreur car une fois de plus le chagement ma enbroullé les pinceau.

Voici le problème car la parti mail fini elle aussi par un if et else:

actuellement après changement a partir de INSERT:

$query="INSERT TO $table (date, ip, artiste, nom, prenom, mail, titre)
        VALUE (CURDATE(), '$ip', '$artiste', '$nom', '$prenom', '$email', '$titre')";
	$enr_base=mysql_query($query) or die ("Pb insertion ".mysql_error());
	/////On se déconnecte de MySQL
        mysql_close();
		/////Envoi du mail par compte  avec PHPmailer
	require ("Chemin_de_la_classr\class.phpmailer.php");
	$mail = new PHPmailer();
	$mail->IsSMTP();
	$mail->Host='hote_smtp';
	$mail->SMTPAuth=TRUE;
	$mail->Username='identifiant';
	$mail->Password=password';
	$mail->From='mon mail';
	$mail->AddAddress("$email");
	$mail->AddReplyTo('loic.mei@dbmail.com.com');	
	$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 'Vous avez deja beneficie du service offert';	
	}	
    else{
	  echo 'Votre demande d\'informations a ete envoyer'; /////message en cas de réussite.
    }
	}
?>

Je vois pas comment bien positionné pourtant toutes la journé j'ai pas mal bougé mais j'ai des parse error.

Merci de ton aide Alain

Amicalement.
0
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
Donc pour revenir a la vérification de la présence des infos du formulaire par rapport a la table je fais donc :

if(mysql_query(mysql_num_rows(SELECT * FROM $table WHERE artiste ='".$artiste."'"))>=1)"' AND nom='".$nom."'"))>=1)"" AND prenom="'".$prenom."'"))>=1) etc
{
echo'vous avez dejà bénéficié du service'.$service.
else{
////insertion dans $table

/////envoi du mail
echo'votre demande est enregistrez et envoyer
}
else{
le mail n'as pu être envoyer et...
}

La requête est bonne?

Car là en fait pour chaque vérif d'une variable c'est soit false soit true ou soit 1 soit 0 qu'en pense tu.

Merci de ton aide .

amicalement
0
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
Bonjours alain et encore merci de l'aide que ttu m'apporte.

Donc là je vais récapituler ce que tu propose, car je veux comprendre les choses :
//preparation du contenu de la requette

$query="SELECT * FROM $table WHERE ip='.$ip.' AND nom='.$nom.' AND prenom='.$prenom.' AND artiste ='.$artiste.' AND mail='.$email.' AND titre='.$artiste.'"; //la tu complétes avec tous les champs que tu veux verifier avec un AND à chaque fois bien sur

//soumission de la requette avec trace d'erreur
$reponse=mysql_query($query) or die ("Erreur requette: ".$query."  ".mysql_error());

Là j'ai rempli avec mes valeur souhaité, là on prépare la requête.

//soumission de la requette avec trace d'erreur
$reponse=mysql_query($query) or die ("Erreur requette: ".$query."  ".mysql_error());


///Là on dit que $nb_enr, sera les resultat de la recherche.
$nb_enr=mysql_num_rows($reponse);


///Là c'est pour vérifié si une des données est déjà dans la $table donc si oui 1 si non 0
if($nb_enr >0){
	echo "Vous avez d&amp;eacute;ja b&eacute;n&eacute;fici&eacute; du service ";

}else{
	//insert dans bDD  + mail
}


Je crois avoir compris.

Sinon voici sur quoi je partais après avoir fais plusieur recherche, le problème c'est que je suis pas sur si les echo que je veux placer son bon.
A l'origine y avais pas de "echo", ce présent c'est moi qui l'ai est mis .Qu'en pense tu?
function new_ask ($ip, $nom $prenom, $artiste, $email, $titre)
{
	global $feedback;

	                /////Là j'ai mis || car je vérifie seulement si un parmis tous est là donc je met pas &&,non?
		if ($ip || $nom || $prenom || $artiste || $email || $titre){

			/////Une des données existe-t-elle déjà dans $table ?
			$sql="SELECT * FROM $table WHERE ip='.$ip.' AND nom='.$nom.' AND prenom='.$prenom.' AND artiste ='.$artiste.' AND mail='.$email.' AND titre='.$artiste.'";
			$result=mysqql_query($sql);
			if ($result && musql_num_rows($result) >0){
				$feedback .= "ERREUR - Vous avez déjà bénéficiè du service.\n";
                                   echo"Vous avez déjà bénéficiè du service.\n";////est-ce possible ?
				return false;
			} else {
			$sql = "INSERT TO $table (date, ip, artiste, nom, prenom, mail, titre)
                    VALUE (CURDATE(), '$ip', '$artiste', '$nom', '$prenom', '$email', '$titre')";
			$result = mysql_query($sql);
				if (!result) {
				$feedback .= "ERREUR - (BDD) : ".mysql_error() .".\n";
				} else {
					/////Envoi du mail par compteavec PHPmailer
				require ("Chemin_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_adresse';
				$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)
					}
				$feedback .= "Votre demande est enregistré et envoyé.\n";
                                            echo"Votre demande est enregistré et envoyé.\n";
				return true;
				}
			}
		}


Voilà le code que je travaillai, mais des chose me mettai le doute :

1)les echo sont -il possible où je les veut

2)le mail est-il envoyer seulement si y a l'enregistrement, comme je le voudrai.

3)$feedback pourquoi y a t-il un "." avant le = , et si je comprend lui n'affiche rien c'est juste pour "parler au script.

Voilà merci beaucoup Alain de l'aide que tu m'apporte et le temps que tu me consacre, je prépare un autre code avec ce que tu m'as écris, et j'attend ton retour sur le code que j'ai mis car il 'm'a aidé a comprendre certaine chose même si au final je l'utilise pas.

Mais par contre pour le mail comment faire pour l'envoyer seulement si il y a pas les données et présente dans la $table et si on enregistre donc?

Merci beaucoup, amicalement
0
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
Alors j'ai mis de côté l'autre script que j'avais entamé, mais si tu as un truc a dire dessu je suis preneur , c'est au moins pour comprendre.

Sinon donc j'ai repris avec se que tu m'as dit.

Et sa semble passé jusque INSERT TO où j'ai une erreur de syntax j'ai essayer plein de chose et je trouve pas,

Voici ma Syntax, j'ai refais le truc de la date et là elle s'affiche dans l'erreur alors avec le CURDATE y avait pas.
Erreur requette: INSERT INTO mixing (date, ip, artiste, nom, prenom, mail, titre). VALUE (06/05/2009, 127.0.0.1, The Groupe, TEST, test, l'adresse du test, Ma chanson) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '. VALUE (06/05/2009, 127.0.0.1, The Groupe, TEST, test, loi' at line 1

Je me demande si par hazard j'ai pas mal choisi le type de champs pour le mail, mais je vois pas quoi choisir, là je suis en VARCHAR.

j'ai fais des test avec INSERT TO et INSERT INTO mais pareil c'est a partir de VALUE qu'il aime pas.

Merci beaucoup Alai pour l'aide que tu m'apporte, car j'avance et j'apprend et je comprend a force certaine chose et aussi comment reflechir mais c'est pas simple.

Amicalement.
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
première chose tu as des erreurs de concaténation dans $query=:


quand tu mets un point dans une chaine pour concatener il faut mettre " devant si la chaine comence par "

exemple:
" blabla ".$variable." blabla  "



dans la requette il faut (sans variables

WHERE nom='jacques'

donc avec une variable si tu veux obtenir ça il faut:

"               WHERE nom='".$prenom."' "
0
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
Tu parlais, pour le script que j'ai trouvé dans mes recherche?

Sinon là j'ai repris bien les chose avec ta proposition mais problème sur la syntax INSERT TO que voici

J'ai fais ça:

$query="INSERT INTO $table (date, ip, artiste, nom, prenom, mail, titre).
                    VALUE ($date, $ip, $artiste, $nom, $prenom, $email, $titre) ";
			$result=mysql_query($query) or die ("Erreur requette: ".$query."  ".mysql_error());

Et c'est là où j'ai l'erreur de syntax.

Donc y aurai t-il ici aussi une histoire de concaténation.

l'erreur est :

Erreur requette: INSERT INTO mixing (date, ip, artiste, nom, prenom, mail, titre). VALUE (06/05/2009, 127.0.0.1, The Groupe, TEST, test, l'adresse du test, Ma chanson) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '. VALUE (06/05/2009, 127.0.0.1, The Groupe, TEST, test, loi' at line 1

Donc il semble qu'il comprenne les valeur sauf mail que j'ai moi-même remplacé pour caché.

Donc là je vois pas le problème de MySQL car dans le message d'erreur il as réussi a récupérer les valeur.

Où est mon erreur dans ma requête?

Merci Alain pour ton aide.Amicalement
0
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
On c'est croisé et de plus je me perd dans l'affichage avec les post par rapport au page
0
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
Oui effectivement sa complique de passé par une fonction car en plus je vois qu'il faut en plus appeler cette fonction chose qui n'était pas préciser dans ce que j'ai vu.

Du coup c'est pourquoi je repart sur le script que l'on voyai ensemble.

Mais la avec ce script c'est que j'avais appris certaine chose qui n'était pas clair pour moi.

D'ailleur l'appel de la fonction me pertube, je veux dire si après avoir déclarer mes variable j'écris la fonction, normalement elle s'éxecute sans appele non.

Où alors je créer cette fonction toute seul dans un fichier par exemple new_ask.php
ensuite d'en mon envoi-essai-offert, je fais comme je fais pour appeler la class php mailer avec un require.

Ais-je compris ou suis-je un peu en confusion sur le fonctionnement d'une class et d'une fonction?

Merci de l'aide que tu m'apporte.

Amicalement.

J'ai relus la page où j'ai vu ce script et effectivement on appel la fonction.
0
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
Bon y a du progrés maintenant sa s'enregistre dans la BDD mais

Le problème c'est que j'ai fais un test pour vérifié que je puisse pas faire une demande si une des infos est déja dans la base.

Et bien là le problème c'est que même si je retente avec les même infos il me réenregistre donc le script ne vérifie rien

Et donc malheuresement il envoi le même.

Normalement la vérification devait dire stop si une des données est déjà dans la table et donc fin du script pas de mail mais un
echo"vous avez déjà eu le service.

Là par contre je comprend plus quoi touché de plus pour la date il me mets que des 0.

A ton avis d'où vient se problème pendant la vérif.

Si tu veux je te remet le script complet qui la a plus ou moins marcher:

<!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
$date = date('d/m/Y');
$ip = ($_SERVER['REMOTE_ADDR']);
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 = ($_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("localhost", "root", "tchiotlolo") or die("erreur de connexion au serveur");

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

//preparation du contenu de la requette
$query="SELECT * FROM $table WHERE ip='".$ip."' AND nom='".$nom."' AND prenom='".$prenom."' AND artiste ='".$artiste."' AND mail='".$email."' AND titre='".$artiste."'";
//soumission de la requette avec trace d'erreur
$reponse=mysql_query($query) or die ("Erreur requette: ".$query."  ".mysql_error());
//pour voir combien de réponses correspondant aux conditions de la requette:
$nb_enr=mysql_num_rows($reponse);

//et la tu fais tes tests

if($nb_enr >0){
	echo "Vous avez d&amp;eacute;ja b&eacute;n&eacute;fici&eacute; du service ";
//insert dans bDD  + mail
	}else{
	$query="INSERT INTO $table(date, ip, artiste, nom, prenom, mail, titre)".
                    "VALUE( '$date', '$ip', '$artiste', '$nom', '$prenom', '$email', '$titre') ";
			$result=mysql_query($query) or die ("Erreur requette: ".$query."  ".mysql_error());
	/////Envoi du mail par compte  avec PHPmailer
				require ("Chemin de la class\class.phpmailer.php");
				$mail = new PHPmailer();
				$mail->IsSMTP();
				$mail->Host='smtp_a_moi';
				$mail->SMTPAuth=TRUE;
				$mail->Username='perso';
				$mail->Password='perso';
				$mail->From='mon_mail';
				$mail->AddAddress("$email");
				$mail->AddReplyTo('mon_mail');	
				$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 &agrave; &eacute;t&eacute; envoyer'; /////message en cas de réussite.
							}
					}
?>
</body>
</html>


Voilà, j'ai remplacer mes infos perso par du fictif et les chemin par path ais-je mal réécris quelque chose.

Merci Alain pour ton aide, amicalement.

PS:pour la date c'est OK j'ai remis "curdate"
0
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
Alain merci et bien vu pour le nom et prenom j'y avais pas pensé du tout.

Par contre pour le Where, pendant mes test, quand je dis que j'ai retesté je veux dire avec toutes les même infos et ils m'avais ré-enregistré.

Par exemple j'ai fais 3 fois sur le service A avec tous pareil Nom prenom etc..
Et il m'as réenregistrez.

Je vais faire la correction des OR au lieu des AND.

Sinon je vais étudier le retour de script que tu as fait , celui qui marche par une fonction, pour moi comprendre, mais bon je me concentre sur celui que l'on a vu ensemble.

Je viens te donner un retour une fois que j'ai corriger mais avant je vais laissé juste une entrés dans mes table.

merci de ton aide et du temps que tu me consacre.

Amicalement.
0
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
Alain, ça y est tous marche bien.

J'aurais plus que a mettre en forme les message suivant si c'est ok ou pas.

Pour m'entrainer a bien comprendre le fonctionnement et la reflexion a avoir je vais a côté essayer de faire la même chose avec la "fonction", car malgré je reste toujours pas très a l'aise avec la reflexion a avoir quand on fait du PHP.

Mais pour cette dernière je me pose la question :

La fonction doit-elle obligatoirement être dans le script où on l'appelle où peut on l'enregistré a part et l'appeler sur un autre script PHP?

Je veux dire comme je peux le faire avec la class PHPmailer qui est dans un fichier PHP et que j'appelle sur une autre page.

Merci infiniment Alain poour ta patience, l'aide et les conseils que tu m'a apporter pour mettre en place ce script.

Amicalement.
0
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
Donc en fait c'est la seul chose qui du coup justifirai de faire une fonction plutôt qu'un script.

Alors du coup cette idée est bien pour que je comprenne mieux le fonctionnement du PHP, mais dans ma situation et comme tu le disai, faire le script où j'en ai besoin suffis complètement.

Surtout que pour mon site parmis mes 4 formulaire c'est le seul qui as se fonctionnement les autre n'on pas besoin d'avoir une vérification de la présence des données entré au formulaire dans la base de données.

D'ailleur je ne pense pas enregistré les données des autres formmulaire, comme tu as du surement le comprendre, cette idée sur ce formulaire est surtout de limiter au mieux les abus.

Car sur une à 10 demande on peut gérer seul mais il faut avoué que au-délà un BDD avec du PHP rend bien pratique pour automatiser le contrôle.

En tous cas pour ce qui est du PHP tant que l'on as pas saisi comment on doit pensé les chose c'est pas simple du tous.

Encore un grand merci Alain pour tous ce temps que tu m'as accorder, et toutes l'aide que tu m'as donné, et aussi les choses que tu m'as aidé a comprendre, car j'étais comme tu as pu le lire un débutant j'avais besoin d'un script qui n'est pas simple du tous a ce niveaux.

Amicalement.
0