Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/09/2011, 11h30   #1
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
Par défaut Mysql : Insertion de plusieurs types dans un seul champ

Bonjour,

je souhaite insérer dans ma base de données Mysql plusieurs cases, issues d'un formulaire mais il ne met pas à jour ma base (aucune insertion ne se fait, pas de message d'erreur et pourtan j'ai les infos à priori correctes ? )

Merci.

Voici l'affichage une fois le formulaire traité :
Code :
1
2
3
Bravo Fazpedro  vous êtes maintenant inscrit à la newsletter de Monsite
Mail : monmail@yahoo.fr
Types : Concert,Danse 
et le code du traitement :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php
session_start(); //On demarre une session
require("configuration.php"); //On insert le fichier qui contient les informations
 
// si l'utilisateur est connecté, c'est le bandeau membre sinon c'est le bandeau classique...
if (!isset($_SESSION['pseudo']) || $_SESSION['pseudo']=='')
{	// bandeau classique si pas connecté
	$bandeau = 'bandeau.php';	}
else		// bandeau membre si connecté
	{
		$bandeau = 'bandeau_membres.php';
	}
 
$pseudo_affiche = $_SESSION['pseudo']; // on récupère le pseudo
//On se connecte à MySQL
$sql = connect_sql();
$mail = mysql_real_escape_string(htmlentities($_POST['mail']));
if (preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $mail)) //Verifie que l'email entrée n'est pas une fausse.
	{
		$chaine = "abcdefghijklmnopqrstuvwxyz0123456789"; 
		$verification = mysql_query("SELECT COUNT(*) FROM pdf_membre WHERE mail='$mail'") or die (mysql_error());
		$donnees = mysql_fetch_array($verification)or die (mysql_error());
	if($donnees['COUNT(*)'] = 0) //On verifie que le mail existe
		{ 
			$reponse = '<b>'.'Le mail '.$mail.' n\'est pas connu dans la base !'.'</b>'.'<a href="javascript:history.back(1)">Retour au formulaire</a>';
		}
	else	// si le mail est bien connu
		{	
			if( empty($mail)) //On verifie que le mail est bien là
				{
					$reponse = 'le mail n\'est pas renseign&eacute;'.'<a href="javascript:history.back(1)">Retour au formulaire</a>';
				}
			else //Si tout est bon on met a jour la base des newsletter
				{
					//On recupère les informations saisies
					if (is_array($_POST['evenement1']) && count($_POST['evenement1'])>0)
						{
							$Events = implode(",",$_POST['evenement1']);
							mysql_query("SET NAMES 'utf8'");
							mysql_query("INSERT INTO lettre_membres ('pseudo', 'mail', 'type') VALUES ('$pseudo_affiche', '$mail', '$Events')");
 
							$reponse = 'Bravo '.'<strong>'.$pseudo_affiche.'</strong>'.', vous &ecirc;tes maintenant inscrit &agrave; la newsletter de'.'&nbsp;'.'<b>'.$nom_site.'</b>'.'<br />'.'<a href="' .$url_site. '">Retour &agrave; l\'Accueil</a>';
							$reponse .=  '<br />';
							$reponse .=  ' Mail : '.$mail.' ';
							$reponse .=  '<br />';
							$reponse .=  ' Types : ' .$Events.' ';
							$reponse .=  '<br />';
						}	 // fin de si tout est bon
						else
							{
								$select2 =  "";
								$reponse = 'le type n\'est pas renseign&eacute; !'.'<a href="javascript:history.back(1)">Retour au formulaire</a>';
							}
 
				} // fin de si le mail est bien connu
 
			mysql_close($sql); //On se deconnecte
		} // fin si email OK
 
	} // fin si email KO
 
else //Reponse si l'adresse e-mail est une fausse
	{
		$reponse = 'Votre adresse e-mail "' . $mail . '" n\'est pas correcte. <a href="javascript:history.back(1)">Retour au formulaire</a>';
	}
?>
 
<!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" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>MON SITE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php include($bandeau); ?> <!-- insère le bandeau principal en haut en fonction de la connexion -->
<div id="mainContent">
<br />
<br />
<? echo $reponse; ?> <!-- On affiche la reponse de tout le code du dessus -->
</div>
<br />
<br />
<br />
<br />
<br />
<br />
<?php include('bas_de_page.php'); ?> <!-- insère le bandeau principal en haut -->
</body>
</html>
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 12h30   #2
Candidat au titre de Membre du Club
 
Développeur Web
Inscription : juin 2009
Messages : 11
Détails du profil
Informations personnelles :
Âge : 27
Localisation : Madagascar

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2009
Messages : 11
Points : 13
Points : 13
Par défaut mysql_connect

A mon avis le connect_sql() ne va pas !!!

Il faut que tu ouvres une connexion et ensuite choisir la base de données où faire les requêtes, pour ce faire utilise mysql_connect() et mysql_select_db().

Voir les syntaxes ici et la
Begany est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 13h21   #3
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
@ Begany :

ce n'est pas le connect_sql() qui pose problème...
la connexion se fait bien par le biais d'un fichier externe :
Code :
1
2
 
require("configuration.php"); //On insert le fichier qui contient les informations
le problème doit être ci-dessous mais je ne vois pas quoi ?
Code :
1
2
3
4
5
6
//On recupère les informations saisies
					if (is_array($_POST['evenement1']) && count($_POST['evenement1'])>0)
						{
							$Events = implode(",",$_POST['evenement1']);
							mysql_query("SET NAMES 'utf8'");
							mysql_query("INSERT INTO lettre_membres ('pseudo', 'mail', 'type') VALUES ('$pseudo_affiche', '$mail', '$Events')");
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 13h58   #4
Membre éclairé
 
Avatar de ledisciple
 
Homme François
observateur de nuage niveau 2.3
Inscription : août 2008
Messages : 546
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 27
Localisation : France

Informations professionnelles :
Activité : observateur de nuage niveau 2.3

Informations forums :
Inscription : août 2008
Messages : 546
Points : 313
Points : 313
Si tu es sur de ta connexion ( ) essaye de faire
Code :
var_dump($_POST['evenement1')
pour savoir ce qu'il y a réellement dedant ( tableau, valeur etc)
__________________
_____________________________________________
Tours Football Club - Turonorum Civitas Libera
ledisciple est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 14h11   #5
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
Stocker plusieurs valeurs dans une seule colonne est une faute de modélisation de la BDD !
Si un membre peut être associé à plusieurs événements et qu'un événement peut être associé à plusieurs membres, il faut une table associative membre_evenement dont la clé primaire sera composée des identifiants du membre et de l'événement.

Quand vous cherchez une erreur pouvant être due à une requête SQL, commencez par afficher la requête, avec echo ou var_dump, avant de l'envoyer au serveur et essayez-là directement sur le serveur pour voir si elle fonctionne.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/09/2011, 14h20   #6
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 661
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 661
Points : 5 388
Points : 5 388
Le problème vient peut-être du séparateur. Essaye d'utiliser autre chose (#, |...)
Utiliser une fonction comme mysql_real_escape_string (ou encore mieux des requêtes préparées avec PDO) serait aussi une bonne idée.
Et sinon pour compléter le propos de Cinephil, on peut découper le code pour afficher une éventuelle erreur...
Code :
1
2
3
4
5
6
7
8
9
10
11
12
$requete = "INSERT INTO lettre_membres ('pseudo', 'mail', 'type') VALUES ('$pseudo_affiche', '$mail', '$Events')";
$res = mysql_query($requete);
if ($res !== false) {
	$reponse = 'Bravo '.'<strong>'.$pseudo_affiche.'</strong>'.', vous &ecirc;tes maintenant inscrit &agrave; la newsletter de'.'&nbsp;'.'<b>'.$nom_site.'</b>'.'<br />'.'<a href="' .$url_site. '">Retour &agrave; l\'Accueil</a>';
	$reponse .=  '<br />';
	$reponse .=  ' Mail : '.$mail.' ';
	$reponse .=  '<br />';
	$reponse .=  ' Types : ' .$Events.' ';
	$reponse .=  '<br />';
} else {
	$reponse = 'Erreur ! '.$requete.'<br/>'.mysql_error();
}
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 14h21   #7
Membre éclairé
 
Avatar de ledisciple
 
Homme François
observateur de nuage niveau 2.3
Inscription : août 2008
Messages : 546
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 27
Localisation : France

Informations professionnelles :
Activité : observateur de nuage niveau 2.3

Informations forums :
Inscription : août 2008
Messages : 546
Points : 313
Points : 313
Citation:
Envoyé par CinePhil Voir le message
Stocker plusieurs valeurs dans une seule colonne est une faute de modélisation de la BDD !
Si un membre peut être associé à plusieurs événements et qu'un événement peut être associé à plusieurs membres, il faut une table associative membre_evenement dont la clé primaire sera composée des identifiants du membre et de l'événement.
c'est peut-être fait exprès ...
__________________
_____________________________________________
Tours Football Club - Turonorum Civitas Libera
ledisciple est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 20/09/2011, 14h24   #8
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par ledisciple Voir le message
c'est peut-être fait exprès ...
Ben si c'est fait exprès c'est mal fait !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 16h59   #9
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
@ ledisciple :

j'ai mis le var_dump et voici le résultat :
Code :
array(2) { [0]=> string(7) "Concert" [1]=> string(5) "Danse" }
en fait c'est pour une newsletter, : ma base contient trois colonnes :
pseudo
mail
type d'événement

Comment faire ?
Merci d'avance.
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 18h31   #10
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 032
Points : 5 032
Citation:
Envoyé par ledisciple Voir le message
c'est peut-être fait exprès ...
On peut vouloir dénormaliser une table pour des raisons de performances mais en aucun cas cette façon de gérer les associations n'est meilleur: ni en terme d'espace ni de performances. C'est tout simplement un mauvais design.

Citation:
en fait c'est pour une newsletter, : ma base contient trois colonnes :
pseudo
mail
type d'événement
Avec une table de jointure comme cité plus haut.



Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
 
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
USE `mydb` ;
 
-- -----------------------------------------------------
-- Table `mydb`.`users`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`users` (
  `id` BIGINT(25) NOT NULL ,
  `name` VARCHAR(45) NOT NULL ,
  `mail` VARCHAR(45) NOT NULL ,
  PRIMARY KEY (`id`) ,
  UNIQUE INDEX `mail_UNIQUE` (`mail` ASC) ,
  UNIQUE INDEX `name_UNIQUE` (`name` ASC) )
ENGINE = InnoDB;
 
 
-- -----------------------------------------------------
-- Table `mydb`.`events`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`events` (
  `id` BIGINT(25) NOT NULL ,
  `name` VARCHAR(45) NOT NULL ,
  PRIMARY KEY (`id`) ,
  UNIQUE INDEX `name_UNIQUE` (`name` ASC) )
ENGINE = InnoDB;
 
 
-- -----------------------------------------------------
-- Table `mydb`.`users_has_events`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`users_has_events` (
  `users_id` BIGINT(25) NOT NULL ,
  `events_id` BIGINT(25) NOT NULL ,
  PRIMARY KEY (`users_id`, `events_id`) ,
  INDEX `fk_users_has_events_events1` (`events_id` ASC) ,
  INDEX `fk_users_has_events_users` (`users_id` ASC) ,
  CONSTRAINT `fk_users_has_events_users`
    FOREIGN KEY (`users_id` )
    REFERENCES `mydb`.`users` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_users_has_events_events1`
    FOREIGN KEY (`events_id` )
    REFERENCES `mydb`.`events` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;
 
 
 
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
Images attachées
Type de fichier : png db.png (5,9 Ko, 29 affichages)
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 21h07   #11
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
@ Benjamin Delespierre :

la requête SQL m'a créé deux tables :
users_has_events avec 2 champs : users_id & events_id

et users avec trois champs : id & name & mail

mais j'avoue que je n'ai pas compris comment les utiliser même en lisant la doc....
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 09h26   #12
Membre éclairé
 
Avatar de ledisciple
 
Homme François
observateur de nuage niveau 2.3
Inscription : août 2008
Messages : 546
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 27
Localisation : France

Informations professionnelles :
Activité : observateur de nuage niveau 2.3

Informations forums :
Inscription : août 2008
Messages : 546
Points : 313
Points : 313
C'est très bien de la part de Benjamin Delespierre de donner une requête pour créer des tables (quoique ..

Code :
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
.. il y a mieux quand même ...)

S'il te manque des explication n'hésite pas. Pose toutes les questions que tu veux, je me ferais une joie de redonner ce que certaines personnes de ce forum m'ont données
__________________
_____________________________________________
Tours Football Club - Turonorum Civitas Libera
ledisciple est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 10h17   #13
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par fazpedro Voir le message
@ Benjamin Delespierre :

la requête SQL m'a créé deux tables :
users_has_events avec 2 champs : users_id & events_id

et users avec trois champs : id & name & mail

mais j'avoue que je n'ai pas compris comment les utiliser même en lisant la doc....
Il faut faire des jointures entre les tables pour récupérer les informations.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 11h34   #14
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 032
Points : 5 032
Citation:
Envoyé par ledisciple Voir le message
C'est très bien de la part de Benjamin Delespierre de donner une requête pour créer des tables (quoique ..

Code :
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
.. il y a mieux quand même ...)
C'est une structure créé directement par MySQL Workbench, j'avoue que je n'ai même pas chercher à la modifier... Je n'ai même pas remplacé le nom par défaut de la db.

C'est surtout à titre d'exemple que je l'ai posté en fait.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2011, 15h11   #15
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
C'est bon, cela fonctionne bien :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php session_start();
$nompage = "newsletter_membre.php";
require ('./_protection_page.php');
require ("configuration.php"); //accès à la base de données
$sql = connect_sql();
$pseudo_membre = $_SESSION['pseudo'];
$requete = mysql_query("SELECT * FROM pdf_membre WHERE `pseudo`='$pseudo_membre'"); 
$result = mysql_fetch_array ($requete);
$mail_affiche = $result['mail'];
// si l'utilisateur est connecté, c'est le bandeau membre sinon c'est le bandeau classique...
if (!isset($_SESSION['pseudo']) || $_SESSION['pseudo']=='')
{	// bandeau classique si pas connecté
	$bandeau = 'bandeau.php';	}
else
{	// bandeau membre si connecté
	$bandeau = 'bandeau_membres.php';	}
?>
<!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" xml:lang="en" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>MON SITE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php include($bandeau); ?> <!-- insère le bandeau principal en haut en fonction de la connexion -->
<div id="mainContent">
<form name="form1" method="post" action="newsletter2.php">
<br />
<fieldset>
<legend> &nbsp; Inscription pour recevoir la newsletter &nbsp; </legend>
<br />
<label for="pseudo">Votre E-Mail :</label>
<br />
<input type="text" tabindex="1" name="mail" readonly="readonly" value="<? echo $mail_affiche; ?>" onfocus="this.className='ev_focus';" onblur="this.className='ev';valide(this, 'mail');" class="ev" /><span id="mail" style="color:red"></span>
<br /><br />
<?php
// début de la première requête sur le type d'événement
echo '<label>'.'Type d&rsquo; &eacute;v&eacute;nement souhait&eacute; &nbsp; : &nbsp; '.'</label>';
echo '<br />';
echo '<br />';
$affich_form = "SELECT * FROM type_ev" ;
$resultat = mysql_query($affich_form) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($resultat);
//On vérifie que la table contient quelque chose
if (mysql_num_rows($resultat) == 0)
	{
		echo '<input name="evenement1" type="checkbox" value="Aucun">'.'</input>';
	} // fin si rien dans la liste de type d'événement
else
	{
		while ( $list = mysql_fetch_array( $resultat ) )
		{
			echo '<input name="evenement1[]" type="checkbox" checked="checked" value="'.$list['Type_evenement'].'">'.$list['Type_evenement'].'</input>';
			echo '<br />';
		} // fin du while
	} // fin du else
// fin de la première requête sur le type d'événement
?>
<br /><br />
<input type="submit" tabindex="2" name="Submit" value="Inscription" />
</fieldset>
</form>
<br /><br /><br />
<?php include('bas_de_page.php'); ?> <!-- insère le bas de page  -->
</body>
</html>
Traitement :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php
session_start(); //On demarre une session
require("configuration.php"); //On insert le fichier qui contient les informations
require ('./_protection_page.php');
// si l'utilisateur est connecté, c'est le bandeau membre sinon c'est le bandeau classique...
if (!isset($_SESSION['pseudo']) || $_SESSION['pseudo']=='')
{	// bandeau classique si pas connecté
	$bandeau = 'bandeau.php';	}
else		// bandeau membre si connecté
	{
		$bandeau = 'bandeau_membres.php';
	}
 
$pseudo_affiche = $_SESSION['pseudo']; // on récupère le pseudo
//On se connecte à MySQL
$sql = connect_sql();
$mail = mysql_real_escape_string(htmlentities($_POST['mail']));
if (preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $mail)) //Verifie que l'email entrée n'est pas une fausse.
	{
		$chaine = "abcdefghijklmnopqrstuvwxyz0123456789"; 
		$verification = mysql_query("SELECT COUNT(*) FROM pdf_membre WHERE mail='$mail'") or die (mysql_error());
		$donnees = mysql_fetch_array($verification)or die (mysql_error());
	if($donnees['COUNT(*)'] = 0) //On verifie que le mail existe
		{ 
			$reponse = '<b>'.'Le mail '.$mail.' n\'est pas connu dans la base !'.'</b>'.'<a href="javascript:history.back(1)">Retour au formulaire</a>';
		}
	else	// si le mail est bien connu
		{	
			if( empty($mail)) //On verifie que le mail est bien là
				{
					$reponse = 'le mail n\'est pas renseign&eacute;'.'<a href="javascript:history.back(1)">Retour au formulaire</a>';
				}
			else //Si tout est bon on met a jour la base des newsletter
				{
					if (is_array($_POST['evenement1']) && count($_POST['evenement1'])>0)
						{
							$Events = implode(",",$_POST['evenement1']);
							mysql_query("SET NAMES 'utf8'");
 
							//On recupère le pseudo et on compare si il est deja present
							$select_pseudo = ("SELECT pseudo FROM lettre_membres WHERE pseudo='$pseudo_affiche';");
							$result_pseudo = mysql_query($select_pseudo) or die ('Erreur : '.mysql_error() );
							$affiche_pseudo = mysql_fetch_array($result_pseudo);
							$verif_pseudo = $affiche_pseudo["pseudo"];
					if ($verif_pseudo == $pseudo_affiche) // present on met a jour
						{
							$requete1 = "UPDATE lettre_membres SET type='$Events'";
							$res1 = mysql_query($requete1);
							if ($res1 !== false) 
								{
									$reponse = 'Bravo '.'<strong>'.$pseudo_affiche.'</strong>'.', votre newsletter  a &eacute;t&eacute; mise &agrave; jour !'.'</b>'.'<br />'.'<a href="' .$url_site. '">Retour &agrave; l\'Accueil</a>';
									$reponse .=  '<br />';
									$reponse .=  ' Mail : '.$mail.' ';
									$reponse .=  '<br />';
									$reponse .=  ' Types : ' .$Events.' ';
									$reponse .=  '<br />';
								}
							else
								{
									$reponse = 'Erreur ! '.$requete.'<br/>'.mysql_error();
								}
 
						}
					else	// pas present on cree le user
						{
							$requete = "INSERT INTO lettre_membres (pseudo, mail, type) VALUES ('$pseudo_affiche', '$mail', '$Events')";
							$res = mysql_query($requete);
							if ($res !== false) 
								{
									$reponse = 'Bravo '.'<strong>'.$pseudo_affiche.'</strong>'.', vous &ecirc;tes maintenant inscrit &agrave; la newsletter de'.'&nbsp;'.'<b>'.$nom_site.'</b>'.'<br />'.'<a href="' .$url_site. '">Retour &agrave; l\'Accueil</a>';
									$reponse .=  '<br />';
									$reponse .=  ' Mail : '.$mail.' ';
									$reponse .=  '<br />';
									$reponse .=  ' Types : ' .$Events.' ';
									$reponse .=  '<br />';
								}
							else
								{
									$reponse = 'Erreur ! '.$requete.'<br/>'.mysql_error();
								}
 
							}
 
					}	 // fin de si tout est bon
						else
							{
								$reponse = 'le type n\'est pas renseign&eacute; !'.'<a href="javascript:history.back(1)">Retour au formulaire</a>';
							}
 
				} // fin de si le mail est bien connu
 
			mysql_close($sql); //On se deconnecte
		} // fin si email OK
 
	} // fin si email KO
 
else //Reponse si l'adresse e-mail est une fausse
	{
		$reponse = 'Votre adresse e-mail "' . $mail . '" n\'est pas correcte. <a href="javascript:history.back(1)">Retour au formulaire</a>';
	}
?>
 
<!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" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>MON SITE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php include($bandeau); ?> <!-- insère le bandeau principal en haut en fonction de la connexion -->
<div id="mainContent">
<br />
<br />
<? echo $reponse; ?> <!-- On affiche la reponse de tout le code du dessus -->
</div>
<?php include('bas_de_page.php'); ?> <!-- insère le bandeau principal en haut -->
</body>
</html>
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h32.


 
 
 
 
Partenaires

Hébergement Web