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

Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Salut,

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

si tu que absolument que ce soit A ou B il vaut mieux des boutons radio, un seul coché possible

<form ..

<input type="radio" name="Type_d_essai" value="A">A<br />
<input type="radio" name="Type_d_essai" value="B">B
<input type="submit" name="envoyer" value="Envoyer">
</form>

et ton script de traitement

<?php

if(isset($_POST['Type_d_essai'])){ //un des boutons radio a bien été coché
	$Type_d_essai=$_POST['Type_d_essai'];
	switch ($Type_d_essai){
		//on va determiner dans quelle table on va en fct de la valeur reçue
		case "A":
			$table="table_A";
		break;
		case "B":
			$table="table_B";
		break;

	}

	//connexion serveur, selection base puis

	$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...

	}else{
		echo "message ......";
	}
}
1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Dis donc tu as bossé !

pour ton pb:

if($nb_enr=0){
	//insert into $table etc...
$query="INSERT TO $table (date, ip, artiste, nom, prenom, mail, titre)
        VALUE (CURDATE(),'$ip', '$artiste', '$nom', '$prenom', '$mail', '$email')"; //manquait le ; ici
	}else{
		echo "Vous avez deja beneficie du service offert";
		
		 
	}
	// On se déconnecte de MySQL (si tu as fait la connexion en dehors de la condition if ci dessus il faut donc faire la dec en dehors)
        mysql_close();
1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
non CURDATE() est une fonction de mysql elle est au format mysql c à d "yyyy-mm-dd" donc pas besoin de déclarer
1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
ce n'est pas le DOCTYPE qui peut géner ni les balises </html>

Si tu as une erreur en toute dernière ligne c'est qu'il te manque une } quelque part

verifies bien que tu ai les } correspondantes à toutes les {
1

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
 
Oui il te manque la partie soumission de la requette $query:

/////insert into $table etc...
$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());
//TEST: tu pourras supprimer la ligne ci dessous après
if($enr_base) echo "Insertion base réussi !";	  
		}
		
	else{
		echo 'Vous avez deja beneficie du service offert';	
	}
1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
alors pour verifier ça il ne faut pas utiliser COUNT()

cette fonction compte purement et simplement tous les enr présents dans la table quels qu'ils soient, même en changeant le nom des champs comptés

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
1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
non ta requette n'est pas correcte et il vaut mieux pas faire tout d'un coup si tu débutes fais plutot:

//connexion base etc...

//PUIS
//preparation du contenu de la requette
$query="SELECT * FROM $table WHERE artiste ='".$artiste."' AND nom='".$nom."' AND prenom='".$prenom."' AND etc......"; //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());
//le résultat de la req est stocké dans une zone mémoire accessible par la ressource $reponse
// tu peux y faire des actions: voir combien il y a de réponses, etc...
// et pour visualiser les résultats il faut faire un mysql_fetch_..... mais tu n'utilses pas cette fonctionnalité pour le moment

//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 ";

}else{
	//insert dans bDD  + mail
}
1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
voilà pour ton script , mais en passant par une fonction tu te compliques un peu

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); erreur
			$result=mysql_query($sql);
			if ($result && musql_num_rows($result) >0){
				$feedback = "ERREUR - Vous avez d&eacute;j&agrave; b&eacute;n&eacute;fici&egrave; du service.";
				//mets les caract accentues en code html  et pas de \n car ça va s'afficher dans la page html donc ce serait plutot <br />
                                   //echo"Vous avez déjà bénéficiè du service.\n";////est-ce possible ?
											  //pourquoi faire un echo alors que tu stockes ce message dans $feedback il faut faire echo $feedback plus tard
				return $feedback;
			} 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"); // la il faut que tu mettes ton chemin a toi !
				$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
						$feedback= $mail->ErrorInfo; /////Affiche le message d'erreur (ATTENTION:voir section 7)
					}
				$feedback = "Votre demande est enregistr&eacute; et envoy&eacute;e.\n";
                                            //echo"Votre demande est enregistré et envoyé.\n";  //pas besoin
				return $feedback;
				}
			}
		}
		
		//appel de la fonction:
		
		$feedback=new_ask ($ip, $nom $prenom, $artiste, $email, $titre);
		//affichage du resultat
		echo $feedback;
1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
oui c'est normal car les conditions WHERE verifient si tous les éléments correspondent, alors il faut mettre des OR

j'ai par contre mis AND pour le nom prenom car si il y a un inscript qui s'appelle Pierre les autres Pierre seront bloqués

Petite remarque : le numéro IP d'un internaute change toutes les 24 heures

<!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é
//il te manquait les accolades qui corresponbdaient a ce test
	$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."'";
$query="SELECT * FROM $table WHERE ip='".$ip."' OR (nom='".$nom."' AND prenom='".$prenom."') OR artiste ='".$artiste."' OR mail='".$email."' OR 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.
							}
					}
}else{
	echo "Veuillez choisir A ou B ";
}				
?>
</body>
</html>
1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
oui bien sur tu peux enregistrer ta fonction dans une page fonctionPHP.inc.php par exemple et dans le script ou tu en as besoin tu mets

include ('fonctionPHP.inc.php');
1
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
Pour résumer un peu car le message est long.

Là ou je bloque car je débute en php et MySQL.

sur mon formulaire le choix du service A ou B est mis sur le .php grace a $service=['Type_d_essai']

donc je ne sais pas écrire en php comment dire a PHP d'analyser ce que trouve SQL et suivant si il trouve une concordance ou pas faire soit :

si oui concordance alors l' action sera echo'bla bla';

ou alors pas de correspondance donc il enregistre les infos dans les champs de la table de la BDD et m'envoi le mail avec les infos du formulaire.

Donc moi j'ai bien déclarer mes variable et le mail marche également et OK pour la connexion a la BDD.

voici l'ébauche du script pour la parti après la connexion a la BDD et avant l'envoi du mail.
En gras c'est là ou je bloque complètement.

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à je pense que se sera plus claire que le premier post, en fait y juste une parti qui me block.

Merci beaucoup pour votre aide et conseils.
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
nos post se sont "croisés"
0
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
Alain merci beaucoup pour ton conseil et ta réponse.

Donc d'accord je vais allez changez mes case a cocher et mettre des bouton radio, effectiivement j'avais pas pensez que sa génerai et que aussi quelqu'un pourrai cocher les deux.

Donc ensuite pour le comment faire pour analyser la bonne table donc le (*) veut dire tous les champs où fais-je devoir réécrire les champs de ma table.

En tous cas je vais testez ça car tu as bien cerné la parti qui me bloquait et surtout je vais analyser pour comprendre le fonctionnement de la logique.

Je repasse te donner mes résultat mais je vais mettre ton message en vert car il m'a bien aidé .

Donc merci beaucoup et je reviens après la mise en place et test.

amicalement.
0
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
Merci encore pour l'aide sur ce passage, y a pas a dire c'est logique mais je suis pas très logique donc je progresse doucement.

Donc j'ai mis en place tous ça et remplacé par un bouton radion et j'en ai profité pour mettre le
if(isset......

Pour vérifié toutes les autre variable comme ça j'aurais la vérif côté client avec le javascript que j'avais mis et on m'avais conseillé de le faire côté serveur et comme en réflex(je pense) tu me l'as remis alors je l'ai fais a tous.

Ensuite j'ai combler les tous et aussi avec mes valeur, mais a l'INSERT TO j'ai un problème sur mes VALUE.

l'erreur c'est:

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\wamp\www\monsite\ma_page.php on line 63

et la ligne 63 est :

 VALUE ('$_SERVER['REMOTE_ADDR']', '$artiste', '$nom', '$prenom', '$mail', '$email')"


Je pense que j'ai mal écris cette ligne car je veux aussi enregistré l'IP pour éviter les filou car quand c'est gratuit certain abuse, donc sa empêche un peu.

Donc je vois par et comprend pas l'erreur.sa me semble venir de la manière dont j'ai écrit le tous.

Mais pour le '$_SERVER['REMOTE_ADDR']' , y a pas a le déclarer avant non?
c'est pareil j'ai aussi un champs date mais je pêche pour savoir comment la récupérer.et l'ajouter dans value

Sinon pour bien comprendre le switch et la suite.

Le "row" correspond en fait aux données de la table c'est ça ?

En tous cas c'est presque bon manque juste a mieu écrire ma ligne 63 et pouvoir mettre la date car après c'est le "else" en cas de présence d'une donnée et après je déconnecte la base puis c'est le mail.

Merci pour l'aide que tu m'apporte et le temps que tu peux me consacrer.

Amicalement.
0
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
Pour l'IP c'est bon en fait il fallait que je la déclare.

exemple :
$ip = $REMOTE_ADDR;

Maintenant mon problème qui persiste c'est sur la fin je suis perdu dans mes " {}"
c'est sa qui me fou cette erreur cité plus haut je crois .
Ah et il me reste la date et après je pourrai voire si sa marche vraiment ou pas jusqu'au bout.

Pour l'histoire des " {}" voici a partir de la dernière ouverture avec { et la fin de cette parti du code avant la parti mail.

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


Si quelqu'un arrive a repérer le loupé je le reercie et si vous avez une infos pour récupérer la date .

Merci a vous tous pour l'aide et encore merci a Alain tu m'as vraiment aidé et j'ai appris quelque chose.

Amicalement.
0
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
Dis donc tu as bossé ! 


Disons que demandé de l'aide est une chose mais pas cherché en même temps a côté c'est ne pas avancé.

Donc d'accord je vois le pb par contre pour le (CURDATE() je n'ai pas besoin de le déclare avant?
Quelle en sera le format de la date?

Comme tu as pus le voir pour l'adressse ip j'ai du déclarer la variable $ip, je veux dire par là que pour moi c'est dans la même veine.

Oui je demande car en même temps j'essaye de bien comprendre car même si le site est dans l'ensemble, static je prevoit le fait d'avoir des modif a faire donc si je comprend pas les code qui le compose je suis mal barré.

En tous merci beaucoup de l'aide que tu m'apporte, je vais corrigé ça et faire le test.

Amicalement.
0
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
D'accord donc là tous est bon j'ai corrigé.

Mais je comprend plus se qui se passe.ce script me fait $ù*µù jusque bout du bout du code et c'est le cas de le dire.

Donc avant l'ajout de la parti pour MySQL tous marchai ensuite ajout de la partis et grace a ton aide sa passe du moins sa en a l'air car pas d'erreur signalé.

Mais j'ai encore un parse error sur la dernière ligne donc du coup j'ai enlever tous ce qui touchais a l'html comme le doctype et les balise html de fin.

Mais encore l'ereur Parse error sur a chaque fois la dernière balise ou tags.

et pareil sur la dernier ligne qui du coup était le tage fermant le php c'est a dire ?>

Voici la fin de mon script dont la dernière condition qui a attrait a la parti mail qui pourtant marchais impec.

	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';
}
?>


Le tag ouvrant le PHP est : <?php

Pour infos pour le mail j'utilise la class ajouter PHPmailer et pourtant elle marchait.

D'où peut venir cette erreur car là je suis perdu.

Sinon demain je pourrai mettre tous mon script sans la parti Doctype ou avec au moins on vera tous.
Mais je le ferais demain car faudra que j'enlève mes infos donc là ce soir avec mes blocage que j'ai eu toute la journée pas le courage.

Mais si l'erreur peut être trouvé sans ouf je serais soulager.

Par contre j'ai une autre question concernant le déroulement du script est ce que celui s'arretera si l'infos son déjà dans la BDD ?

Car si les infos y son déjà je veut stopper le script donc sur le fameux

echo 'vous avez dejà beneficie de l\'essai offert'

et je veux pas que le script continue et m'envoye ce mail.

le
 else
  {
echo 'vous avez dejà beneficie de l\'essai offert'
}


Fait automatiquement stopper la suite ou je dois mettre quelle que chose en plus pour stoppé le script si il affiche se message.

Encore merci Alain pour l'aide et les chose que tu m'as appris et le temps que tu m'accorde.

Amicalement.
0
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
Merci alain, donc je remettrai mon doctype.

Comme j'y ai passer toutes la journées je regarderai demain toutes mes "{}"

Car là sa peux me passé sous les yeux.

je reste positif sa me permet pour le coup de bien étudié mon code donc sa va pas me faire de mal.

Merci beaucoup alain de l'aide que tu m'apporte, je regarde bien tous sa demain avec ma tête fraiche et reposé et je donnerai mon retour.

Amicalement.

PS: je crois que je vais en rêvé toute la nuit de ce script car j'y suis pas depuis des heur mais quelque jours, je vais le connaitre par coeur sur le bout des doit au point-virgule près.
Un peu d'humour avant de me reposé.

Bonne soirée et encore merci du temps que tu m'accorde, de l'aide et conseils que tu m'approte.

A demain pour mon feedback.
0
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
Bon j'ai corrigé l'accolade mais je suis pas sur de l'avoir bien mis au bonne endroit.

Sinon j'ai une erreur au moment de choisir la table en fonction du choix fait par l'utilisateur :

Voici l'erreur indiqué:
Notice: Undefined variable: table in Chemin en locale\monsite\mon_script.php on line 43
Erreur : 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 '' at line 1


La ligne concerné dans le code:

$query="SELECT COUNT(*) FROM $table ";


Par contre dans le switch je savais pas comment mettre le nm de ma table a: $table="table_matable"; ou
$table="matable";

Ensuite j'ai rajouté des ligne de sécurité sur mes déclaration, vérification mais a chque fois j'ai pour chaqu'une :

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'machin' (using password: NO) in Chemin en locale\monsite\mon_script.php on line 12

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in Chemin en locale\monsite\mon_script.php on line 12

Pourtant j'ai vu qu'il fallait mettre ça pour sécurisé mais j'ai peut être mis au mauvaise endroit mais en même temps mon formulaire est en HTML donc y a que là que je peux mettre.

Bon voici le code, déclaration des variables et SQL j'ai donc changé certain nom par du fictif.

<?php
/////Vérification suivi de la Déclaration des variables

if(isset($_POST['Nom']))
$nom = mysql_real_escape_string(htmlspecialchars($_POST['Nom']));
if(isset($_POST['Prenom'])) 
$prenom = mysql_real_escape_string(htmlspecialchars($_POST['Prenom']));
if(isset($_POST['Nom_du_groupe_ou_nom_d_artiste'])) 
$artiste = mysql_real_escape_string(htmlspecialchars($_POST['Nom_du_groupe_ou_nom_d_artiste']));
if(isset($_POST['Mail']))
$email = mysql_real_escape_string(htmlspecialchars($_POST['Mail']));
if(isset($_POST['Nom_titre']))
$titre = mysql_real_escape_string(htmlspecialchars($_POST['Nom_titre'])); 
if(isset($_POST['Message']))
$message = mysql_real_escape_string(htmlspecialchars($_POST['Message']));
if(isset($_POST['Type_d_essai'])){ /////un des boutons radio a bien été coché
	$service = mysql_real_escape_string(htmlspecialchars($_POST['Type_d_essai']));
	switch ($service){
		/////on va determiner dans quelle table on va en fct de la valeur reçue
		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
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){
/////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.	
/////On se déconnecte de MySQL
        mysql_close();
?> /////fermeture ici mais normalement la suite c'est pour le mai; là je ferme pour faire propre.
		


Les accolade en gras sont celle qui me génait dans le dernier post et en l'occurence la fermeture de cette accolade donc est-elle(celle qui ferme) au bonne endroit?

Par contre j'ai eu un problème avec l'IP car je devais pas la déclarer, du moins sinon j'avais une erreur donc j'ai toute suite,
'$REMOTE_ADDR'
dans les VALUE.

Le message d'erruer qui vas avec est dans le post en deux partie celle au début avec les deux ligne et l'autre pour le pb de table.

Merci beaucoup de l'aide et conseils que vous m'apporterez car là je suis perdu car hormis le passage où Alain ma aidé et fait le switch le reste c'est pris sur des tutos pourtant.

Merci, amicalement.
0
chtilolo Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   2
 
Bon j'ai corrigé les chose qui empêchai de faire marcher le script.

Mais maintenat celui ne fait pas bien ce qu'il dois faire, je veux dire il semble ne pas respecté les "conditio" mise en place, et de plus il refuse une variable qui pourtant est déclarer.

Voici le test que j'ai fais je preice que c'est en local avec Wamp.

Je chois par exemple le service A.
Donc comme c'est la première fois que je viens, on va dire, donc normalement il doit m'enregistré dans la table du service A et il ne doit pas m'afficher "vous avez déjà bénéficié du service"
Et ensuite il envoi le mail avec les données du formulaire.

Là le problème c'est qu'il me met le message :"vous avez déjà bénéficié du service"
Alors que je suis pas dans la BDD(j'ai regarder les 2 table pour êtes sur)
Et il 'm'envoi le mail et de plus une variable qui fonctionnai ne fonctionne plus.

Alors que normalement il devrai m'enregistré dans la base, ne pas m'affiché le message:"vous avez déjà bénéficié du service" (d'où le else dans le code)
Et m'envoyé le mail.

Ensuite pour suivre le résonnement que prend le script, si il me dit que :"vous avez déjà bénéficié du service"
Il devrait pas continuer la suite du script qui est l'envoi du mail.

Là je dois avoué que je comprend pas si disfonctionnement dans le déroulement du script, les condition sont là donc y a pas de raison.

Et de plus le fait d'être en local avec Wamp ne doit pas empêché se genre de test.

Merci beaucoup pour l'aide que tu pourra m'apporté.

Amicalement.

0