Insert array dans mysql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Insert array dans mysql

Re: Insert array dans mysql

par moogli » 26 mars 2015, 23:51

salut,

Sur le principe pour un modèle correcte il te faut une table contenant les news letter (ou les types de news letter) et une table de liaison entre les deux.

table newsletter
idnewsletter
titre varchar(50) not null,
ce que tu veux

userNewsLetter
iduser
idnewsletter

Tu crée dynamiquement les options des news letter en passant les id dans les values des checkbox
a la validation du formulaire tu insère id utilisateur et id des newsletter dans la dernière table.

@+

Insert array dans mysql

par amdawb » 26 mars 2015, 16:36

Bonjour,
À travers un formulaire,les utilisateurs peuvent s'inscrire à des neswletters thèmatiques (8 en tout).

D'abords, ils renseignent leur nom, email, civilité(Madame ou Monsieur), acceptation d'offres de sites partenaires et enfin acceptation des Conditions Générales d'Utilsation.
Ensuite ,un mail de confirmation leur est envoyé avec un lien pour activation/validation.

Le traitement côté serveur (php) et en JavaScript de ces données POSTées ne me pose pas de difficulté, et sont enregistrées dans une table 'newsletterusers'.

Structure table 'newsletterusers' :
`userID` int(11) NOT NULL AUTO_INCREMENT,
  `civilite` varchar(10) NOT NULL,
  `nom` varchar(26) NOT NULL,
  `email` varchar(30) NOT NULL,
  `infosite` varchar(1) NOT NULL,
  `infopart` varchar(1) NOT NULL,
  `validated` int(1) NOT NULL DEFAULT '0',
  `validkey` varchar(255) NOT NULL,
  PRIMARY KEY (`userID`)
Sachant que chaque utilisateur peut choisir une ou plusieures newsletters, je voudrais enregistrer cet array dynamique dans ma bdd, et ansi offrir la possibilité de modifier ultérieurement les options (choix).

Qusetion 1 : Comment organiser l'enregistrement de cet tableau ? Dans la même table 'newsletteruwsers'
ou créer une nouvelle table 'optionsnewsletter' ?
Question 2 : Comment y enregistrer les options choisies ?

Merci pour vos éclairages.
Voici mon essai:
<?php
	if(isset($_POST['submit'])){
		
		if(isset($_POST['option'])){
			$option=$_POST['option'];
		}else {
			$option = Array ();
		}

		require("config-db.php");
		mysql_connect($adresse,$nom,$motdepasse);
		mysql_select_db($database); 

		$sql = "INSERT INTO optionsnewsletter (";
		$length = count($option);
		$i = 1;
		foreach($option as $column=>$value){  
			$appendToSql = ',';
			if($i==$length){$appendToSql = '';}
			$col .= $column.$appendToSql;
			$val .= $value.$appendToSql;
			$i++;
		}
		$sql .= $col.") ";
		$sql .= " VALUES (".$val.") ";
		$req = mysql_query($sql) or die("Erreur SQL!<br>".$sql.'<br>'.mysql_error());
	}
?>
<form id="themes"  action="" method="post">
	<input id="actualites" type="checkbox" name="option[]" value="Actualités"
	<?php if($_POST && in_array('Actualités',$option)){ echo "checked";} ?>/>
	
	<input id="sante" type="checkbox" name="option[]" value="Santé et Bien-être"
	<?php if($_POST && in_array('Santé et Bien-être',$option)){ echo "checked";} ?>/>
	
	<input id="hightech" type="checkbox" name="option[]" value="Hight-tech"
	<?php if($_POST && in_array('Hight-tech',$option)){ echo "checked";} ?>/>
	<!-- .......-->
	
	<button id="submit" name="submit" type="submit">JE M'INSCRIS</button>
</form>