[RESOLU] Plusieurs genre pour un utilisateur

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 : [RESOLU] Plusieurs genre pour un utilisateur

Re: Plusieurs genre pour un utilisateur

par pjl » 14 juin 2013, 14:51

En-faite je me suis mal exprimé.

A partir de sa:

Code : Tout sélectionner

<label for="genrefilm">Quels genre de film pr&eacute;f&eacute;rez-vous?</label> <br /><input type="checkbox" name="qst1[]"/>Animation <input type="checkbox" name="qst1[]"/>Aventure <input type="checkbox" name="qst1[]"/>Comdie
j'aimerais pouvoir inscrire les réponses dans la bdd
pour après pouvoir les resortirs sur une page dans un tableau des réponses données par l'utilisateurs
En complément de ce qu'a dit Moogli, je dirai que tu sembles prendre le problème à l'envers.
Il faut d'abord définir sa base de données, faire ses tables, les remplir de données exemple puis tester ses requêtes et seulement après passer à l'interface de consultation-saisie qui dans ton cas sera en PHP.

Re: Plusieurs genre pour un utilisateur

par moogli » 02 juin 2013, 19:45

la table genre doit avoir au moins deux champs, une clef primaire et un libellé (sinon c'est la merde)
par exemple : idgenre, nomGenre
et 'gout' (id*,idgenre*)

Il est préférable de donner des noms significatifs aux tables et nom de champs. gout cela ne veux rien dire (à part peux être pour toi).
Pense aussi, si possible, à l'unicité d'un nom de champs, cela t'évitera bien des soucis.
Bien entendu cela n'est pas valable en cas de FK (une même info porte le même nom dans toutes les tabels, du moment qu'il y a la fk).

donc plutot que id utilise idutilisateur (ou userid enfin quelque chose de parlant ;) ).


dans le formulaire les checkbox sont affichées à partir de la table genre.
c'est la clef primaire (idgenre) que tu passe en value des checkbox

ensuite, à la validation du formulaire
- tu insère l'utilisateur dans la table
- récupère l'id utilisateur
- tu boucle que les checkbox (foreach) pour insérer les données dans la table. pense aux requêtes préparée pour cela ;)


quand a ton code :
ce type de chose est à éviter
$dn = mysql_num_rows(mysql_query('select id from users where username="'.$username.'"'));

il faut tester impérativement le retour de mysql_query afin d'éviter des erreurs inutile et traiter correctement les erreurs SQL.

De plus l'extension mysql est dépréciée il est préférable d'utilise l'extension mysqli

@+

Re: Plusieurs genre pour un utilisateur

par nyny974 » 02 juin 2013, 19:06

Ducoup j'ai sa : 'users' (id* ,nom ,prenom ,username ,password ,email ,remarque)
'genre' (typegenre*)
'gout' (id*,typegenre*)
<tr>
			<td align="left">Vos genre de film préférer :</td>
		</tr>
			<tr>
				<td align = 'center'><input type='checkbox' name='gout[]' value='Animation'id="Animation">Animation</td>
				<td align = 'center'><input type='checkbox' name='gout[]' value='Aventure'>Aventure</td>
			</tr>
			<tr>
				<td align = 'center'><input type='checkbox' name='gout[]' value='Comédie'>Comédie</td>
				<td align = 'center'><input type='checkbox' name='gout[]' value='Comédie Dramatique'>Comédie Dramatique</td>
			</tr><tr>
				<td align = 'center'><input type='checkbox' name='gout[]' value='Documentaire'>Documentaire</td>
				<td align = 'center'><input type='checkbox' name='gout[]' value='Drame'>Drame</td>
			</tr><tr>
				<td align = 'center'><input type='checkbox' name='gout[]' value='Espionnage'>Espionnage</td>
				<td align = 'center'><input type='checkbox' name='gout[]' value='Fantastique'>Fantastique</td>
			</tr><tr>
				<td align = 'center'><input type='checkbox' name='gout[]' value='Policier'>Policier</td>
				<td align = 'center'><input type='checkbox' name='gout[]' value='Thriller'>Thriller</td>
			</tr>
et
<?php
	// affectation  dans des variables
		$username =$_POST["username"];
		$nom =$_POST["nom"];
		$prenom =$_POST["prenom"];
		$password =$_POST["password"];
		$email =$_POST["email"];
		$remarque =$_POST["remarque"];
		

	// connexion au serveur MySQL
	mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());

	// ouverture de la base ..... 
	mysql_select_db('rex')  or die('Erreur de selection '.mysql_error()); 
	//On verifie que le formulaire a ete envoye
if(isset($_POST['username'], $_POST['password'], $_POST['email'], $_POST['nom'], $_POST['prenom'], $_POST['remarque']) and $_POST['username']!='')
         {         
		            //On echape les variables pour pouvoir les mettre dans une requette SQL
				$username = mysql_real_escape_string($_POST['username']);
				$password = mysql_real_escape_string($_POST['password']);
				$email = mysql_real_escape_string($_POST['email']);
				$nom = mysql_real_escape_string($_POST['nom']);
				$prenom = mysql_real_escape_string($_POST['prenom']);
				$remarque = mysql_real_escape_string($_POST['remarque']);
                    //On verifie sil ny a pas deja un utilisateur inscrit avec le pseudo choisis
				$dn = mysql_num_rows(mysql_query('select id from users where username="'.$username.'"'));
				if($dn==0)
				{
					//On recupere le nombre dutilisateurs pour donner un identifiant a lutilisateur actuel
					$dn2 = mysql_num_rows(mysql_query('select id from users'));
					$id = $dn2+1;
					//On enregistre les informations dans la base de donnee
					if(mysql_query('insert into users(id, username, password, email, nom, prenom, remarque) values ('.$id.', "'.$username.'", "'.$password.'", "'.$email.'", "'.$nom.'", "'.$prenom.'", "'.$remarque.'")'))
					{
						//Si ca a fonctionne, on naffiche pas le formulaire
						$form = false;
?>
<div class="message">Vous avez bien &eacute;t&eacute; inscrit. Vous pouvez dor&eacute;navant vous connecter sur la page d'accueil.<br />
<a href="index-2.html">Acceuil</a></div>
<?php
					}
					else
					{
						//Sinon on dit quil y a eu une erreur
						$form = true;
						$message = 'Une erreur est survenue lors de l\'inscription.';
					}
				}
				else
                                {
                                        //Sinon, on dit que le pseudo voulu est deja pris
                                        $form = true;
                                        $message = 'Un autre utilisateur utilise d&eacute;j&agrave; le nom d\'utilisateur que vous d&eacute;sirez utiliser.';
                                }
			}
else
{
	$form = true;
}
if($form)
{
	//On affiche un message sil y a lieu
	if(isset($message))
	{
		echo '<div class="message">'.$message.'</div>';
	}

	//On affiche le formulaire
	}

?>		
Comment je peux inscrire le réponse de gout dans la bdd ? pour en ressortir un tableau sur une page

Re: Plusieurs genre pour un utilisateur

par moogli » 31 mai 2013, 19:47

salut,


le principe reste le même :
- une table utilisateur (avec une clef primaire disons iduser)
- une genre (avec aussi une clef primaire ;), disons idgenre )
- une table genreUtilisateur (ou mieux nommée) qui n'aura que deux champs iduser et idgenre . Ils seront effectivement des clefs étrangères. je te conseil aussi de mettre en clef primaire les deux champs afin d'éviter les doublons dans la table.

ce qui peux donner :
create table genreUtilisateur  (
iduser int not null,
idgenre int not null,
primary key (iduser,idgenre )
);
-- Ajout des FK
alter table genreUtilisateur  add constraint fk_user foreign key(iduser ) references utilisateur (iduser);
alter table genreUtilisateur  add constraint fk_user foreign key(idgenre ) references genre (idgenre );

A adapter bien sur );


@+

Re: Plusieurs genre pour un utilisateur

par nyny974 » 31 mai 2013, 18:23

En-faite je me suis mal exprimé.

A partir de sa:

Code : Tout sélectionner

<label for="genrefilm">Quels genre de film pr&eacute;f&eacute;rez-vous?</label> <br /><input type="checkbox" name="qst1[]"/>Animation <input type="checkbox" name="qst1[]"/>Aventure <input type="checkbox" name="qst1[]"/>Comdie
j'aimerais pouvoir inscrire les réponses dans la bdd
pour après pouvoir les resortirs sur une page dans un tableau des réponses données par l'utilisateurs

Re: Plusieurs genre pour un utilisateur

par ghost5922 » 31 mai 2013, 17:44

Bonjour,

tu veux pouvoir catégoriser les films ?

films : id,id_user,idcat,title,etc
users : id,title,etc
category : id,title,statut,etc


Dragon genre animation

films : 1(id generer),1(id user),|5|(ici tous les id categories séparer par des |),dragon (le titre),etc

Plusieurs genre pour un utilisateur

par nyny974 » 31 mai 2013, 17:32

Bonjour à tous,

Je recherche de l'aide sur la démarche a suivre pour pouvoir inscrire dans ma bdd plusieurs genre (de film, comme animation, fantastique) pour un utilisateur qui les aura cocher via un formulaire.
J'ai donc une table 'users' ( id,username,..)
Je peux donc pas mettre un champs 'genre' vu qu'il peut y avoir plusieurs données dans ce champs , si j'ai bien compris ?
J'ai donc fait une table 'genre' (animation, action, ...) j'imagine qu'il faut faire une clé étrangère 'genre' dans users ?
J'utilise 'phpmyadmin' et je voie pas le code a faire réaliser tout sa.

Merci.