IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Mysql : Insertion de plusieurs types dans un seul champ [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 504
    Points : 128
    Points
    128
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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>

  2. #2
    Membre à l'essai
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Points : 14
    Points
    14
    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

  3. #3
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 504
    Points : 128
    Points
    128
    Par défaut
    @ 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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')");

  4. #4
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    Si tu es sur de ta connexion ( ) essaye de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($_POST['evenement1')
    pour savoir ce qu'il y a réellement dedant ( tableau, valeur etc)

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    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.

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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();
    }

  7. #7
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    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 ...

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    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 !

  9. #9
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 504
    Points : 128
    Points
    128
    Par défaut
    @ ledisciple :

    j'ai mis le var_dump et voici le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  10. #10
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    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.

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 Images attachées  

  11. #11
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 504
    Points : 128
    Points
    128
    Par défaut
    @ 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....

  12. #12
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    C'est très bien de la part de Benjamin Delespierre de donner une requête pour créer des tables (quoique ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  13. #13
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    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.

  14. #14
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  15. #15
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 504
    Points : 128
    Points
    128
    Par défaut
    C'est bon, cela fonctionne bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Création d'etat avec plusieurs valeurs dans un seul champ
    Par k.p-j dans le forum IHM
    Réponses: 3
    Dernier message: 02/05/2012, 16h07
  2. Mettre plusieurs valeurs dans un seul champ hidden asp
    Par gabdeschenes dans le forum ASP.NET
    Réponses: 3
    Dernier message: 28/10/2009, 18h52
  3. [MySQL] Insertion de plusieurs valeurs dans un même champ de MySQL
    Par Monsieur K dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 20/09/2009, 15h50
  4. inserer plusieurs resultat dans un seul champ
    Par nicerico dans le forum Requêtes
    Réponses: 3
    Dernier message: 30/03/2009, 10h39
  5. "concaténer" plusieurs lignes dans un seul champ
    Par djobert dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/12/2008, 18h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo