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/02/2011, 03h32   #1
Futur Membre du Club
 
Inscription : mai 2010
Messages : 44
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 44
Points : 15
Points : 15
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 :
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
nox77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2011, 05h59   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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)
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2011, 15h19   #3
Futur Membre du Club
 
Inscription : mai 2010
Messages : 44
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 44
Points : 15
Points : 15
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 :
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.
nox77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2011, 17h26   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Il faut mettre l'id dans tes cases à cocher :
Code :
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 :
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 :
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)");
     }
}
}
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2011, 17h35   #5
Futur Membre du Club
 
Inscription : mai 2010
Messages : 44
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 44
Points : 15
Points : 15
Merci encore une fois sabotage pour ton aide
nox77 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 12h34.


 
 
 
 
Partenaires

Hébergement Web