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 :

récupérer des données séparé par un point virgule [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 44
    Points : 31
    Points
    31
    Par défaut récupérer des données séparé par un point virgule
    Bonjour a tous,
    Alors voila je vais essayer de m'expliquer clairement

    j'ais une base de donées type membre avec divers champ

    pseudo / e-mail / catégorie

    Maintenant je souhaite récupéré les e-mail selon la catégorie choisie sachant que dans le champ catégorie les donées sont stockée par un séparateur

    ex : jambon;saucisson;frite ect....

    Ces données provienne du formulaire qu'ils ont rempli a l'inscription avec des checkbox qui propose les diférentes catégories.


    Donc voici le code que j'ais pondu pour l'envoie du mail au membres souhaitant recevoir les infos concernant les catégorie choisies inutile de vous notifier que cela ne fonctionne pas ...

    code php pour l'envoi de l'email :
    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
    		/////////////////////////////////////////////////
    		// Sinon ont traite les donnnées du formulaire //
    		/////////////////////////////////////////////////
     
    		$titre		= $_POST['titre'];
    		$cat    	= $_POST['cat'];
    		$message 	= $_POST['message'];
     
     
    		//////////////////////////////////////////////////////////////////////////////
    		// Ont récupere l'adresse e-mail des membres qui ont choisi cette catégorie //
    		//////////////////////////////////////////////////////////////////////////////
     
    		$requete_membres = mysql_query('SELECT * FROM site_membres WHERE categorie = "'.explode(";", $cat).'" AND  newsletter = "ok"');
     
    		/////////////////////////////////////////////////////////////////////////////
    		// Préparation de l'envoie a tout les membres ayant choisi cette catégorie //
    		/////////////////////////////////////////////////////////////////////////////
     
    		while ($retour_membres = mysql_fetch_array($requete_membres)){
     
    		$membres_email = $retour_membres['email'];
    		$membres_pseudo = $retour_membres['pseudo'];		
     
    		////////////////////////////////////////
    		// Envoie de l'e-mail au destinataire //
    		////////////////////////////////////////
     
      		$headers ='From: newsletter'."\n"; 
      		$headers .='Reply-To:<newsletter@jamboneau.fr>'."\n";
      		$headers .='Content-Type: text/html; charset="iso-8859-1"'."\n"; 
      		$headers .='Content-Transfer-Encoding: 8bit'; 
      		$message ='<html><head>
     
    			<title>Ce message provient de jamboneau.fr</title>
         			</head>
         				<body>
         					<p>Bonjour '.$membres_pseudo.'</p>
        					<p>'.$message.'</p>     
         				</body>
         			</html>'; 
     
     
         	mail($membres_email, 'www.jamboneau.fr newsletter', $message, $headers);
     
         	}//fin de l'envoi des emails

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ta conception de base de données est mauvaise : on n'insere pas plusieurs éléments dans un même champs.
    Cela obligerait a faire des comparaisons partielles sur la chaine ce qui est long.

    Il te faut une table listant les catégories possibles (categorie_id, categorie_nom) et une table recensant les categories des utilisateurs (id, categorie_id, utilisateur_id)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    mainteant c'est a l'inscription que cela va me posé un problème.
    J'arrive a trouvé comment enregistrer ces données séparement.

    inscription.php
    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
     
     
    if ($validation == NULL)
    	{
     
    	///////////////////////////
    	// Formulaire de contact //
    	///////////////////////////
     
    	echo '<form action="http://www.jamboneau.fr/index.php?page=Inscription&envoie=ok" method="post">
     
    		   <div id="contactform"> 
     
    		    <label>E-mail *<span>Obligatoire</span></label>
    			<input type="text" class="text" value="" name="email" />			
     
    			<label>Pseudo*<span>Obligatoire</span></label>
    			<input type="text" class="text" value="" name="pseudo" />
     
    			<label>Mot de passe*<span>Obligatoire</span></label>
    			<input type="password" class="text" value="" name="mdp" />';
     
     
    	/////////////////////////////////////
    	// Checkbox des catégories du site //
    	/////////////////////////////////////		
     
     
    	$requete_cat = mysql_query('SELECT * FROM site_cat ORDER BY nom') ;
     
    	while ($reponse_cat = mysql_fetch_array($requete_cat)) {echo''.$reponse_cat['nom'].'<input type="checkbox" name="cat[]" value ="'.$reponse_cat['nom'].'"/>';}
     
    	echo '	Autoriser indexduweb.fr a m\'envoyer la newsletter des catégories sélectionées <input type="radio" name="newsletter" value="ok" />
     
    	<div style="text-align : center;">
    	     			<input type="submit" value="Envoyer" style="margin-top : 20px;" />
    	     		</div></form>	
    		 </div>';
    	}else
    		{
     
    		/////////////////////////////////////////////////
    		// Sinon ont traite les donnnées du formulaire //
    		/////////////////////////////////////////////////
     
    		$email		= $_POST['email'];
    		$pseudo     = $_POST['pseudo'];
    		$passe 		= md5($_POST['mdp']);
    		$cat 		= implode(" ; ", $_POST['cat']);
    		$newsletter = $_POST['newsletter'];
     
     
    		////////////////////////////////////
    		// Control des champs obligatoire //
    		////////////////////////////////////
     
    		if ($email == NULL)
    			{
    			echo '<script type="text/javascript">window.setTimeout("location=(\'/index.php?page=Inscription\');",2000);</script>
    			<div style="font-family : arial; font-size : 12px; margin-left : 20px; margin-right : 20px;">
    			<b>Veuillez remplir le champ "E-mail"</b><br />
    			Vous allez être rediriger d\'ici 3 secondes... sinon <a href="/index.php?page=Inscription">cliquez-ici</a></div>';
    			}
    			else{
     
    		if ($pseudo == NULL)
    			{
    			echo '<script type="text/javascript">window.setTimeout("location=(\'/index.php?page=Inscription\');",2000);</script>
    			<div style="font-family : arial; font-size : 12px; margin-left : 20px; margin-right : 20px;">
    			<b>Veuillez remplir le champ "Pseudo"</b><br />
    			Vous allez être rediriger d\'ici 3 secondes... sinon <a href="/index.php?page=Inscription">cliquez-ici</a></div>';
    			}
    			else{
     
    		if ($passe == NULL)
    			{
    			echo '<script type="text/javascript">window.setTimeout("location=(\'/index.php?page=Inscription\');",2000);</script>
    			<div style="font-family : arial; font-size : 12px; margin-left : 20px; margin-right : 20px;">
    			<b>Veuillez remplir le champ "Mot de passe"</b><br />
    			Vous allez être rediriger d\'ici 3 secondes... sinon <a href="/index.php?page=Inscription">cliquez-ici</a></div>';
    			}
    			else{
     
     
    		if ($cat == NULL)
    			{
    			echo '<script type="text/javascript">window.setTimeout("location=(\'/index.php?page=Inscription\');",2000);</script>
    			<div style="font-family : arial; font-size : 12px; margin-left : 20px; margin-right : 20px;">
    			<b>Veuillez sélectionner au moins une "Catégorie"</b><br />
    			Vous allez être rediriger d\'ici 3 secondes... sinon <a href="/index.php?page=Inscription">cliquez-ici</a></div>';
    			}
    			else{							
     
     
    		/////////////////////////////////
    		// Ajout du membre dans la BDD //
    		/////////////////////////////////
     
    		 $ajout_membres = mysql_query('INSERT INTO site_membres SET pseudo = "'.$pseudo.'" ,mdp = "'.$passe.'" , email = "'.$email.'" , categorie = "'.$cat.'" , newsletter ="'.$newsletter.'"');
     
    		 ////////////////////////////////////////////////
    		 // Ajout des catégorie choisies par le membre //
    		 ////////////////////////////////////////////////
     
     
    // Ici comment j'insère les donnée
    Exemple je créer la table que tu ma consseillée (id, categorie_id, utilisateur_id)

    j'utilise explode pour récupérer les données et j'insert en boucle ou mon raisonement depuis le depart est faux et implode et explode servent a rien ?

    PS : désolé pour les fautes d'orthographes sa ne doit pas être agréable a lire.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faut mettre l'id dans tes cases à cocher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $requete_cat = mysql_query('SELECT id, nom FROM site_cat ORDER BY nom') ;
     while ($reponse_cat = mysql_fetch_array($requete_cat)) {
          echo' $reponse_cat['nom'].'<input type="checkbox" name="cat[]" value ="'.$reponse_cat['id'].'"/>';
    }

    Il faut revoir ton insertion qui n'est pas bonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $email = mysql_real_escape_string($_POST['email']);
    $pseudo= mysql_real_escape_string($_POST['pseudo']);
    $passe = md5($_POST['mdp']);
    $ajout_membres = mysql_query("INSERT INTO site_membres (pseudo, mdp, email) VALUES ('$pseudo', '$passe' , '$email')");
    et une boucle pour inserer les catégories :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if ($user_id = mysql_insert_id()) {
    foreach ($_POST['cat'] as $cat_id) {
         $cat_id = intval($cat_id);
         if ($cat_id) {
             mysql_query("INSERT INTO ta_table (categorie_id, utilisateur_id) VALUES ($cat_id, $user_id)");
         }
    }
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    Merci encore une fois sabotage pour ton aide

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

Discussions similaires

  1. Lecture fichier séparé par un point-virgule
    Par clampin dans le forum Débuter
    Réponses: 1
    Dernier message: 27/08/2009, 15h23
  2. récupérer des valeurs séparées par un point virgule
    Par Spaccio dans le forum Requêtes
    Réponses: 9
    Dernier message: 10/04/2009, 11h22
  3. Récupérer des mots séparés par un espace dans un .txt
    Par elnino67 dans le forum Débuter
    Réponses: 2
    Dernier message: 28/05/2008, 22h13
  4. Réponses: 8
    Dernier message: 26/06/2007, 09h12
  5. Comment récupérer des valeur séparé par ; ?
    Par Nico128 dans le forum Delphi
    Réponses: 12
    Dernier message: 14/01/2007, 12h42

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