Mettre deux éléments dans une même case de BDD

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 : Mettre deux éléments dans une même case de BDD

Re: Mettre deux éléments dans une même case de BDD

par moogli » 24 avr. 2013, 23:50

mais mon projet m'interdit que créer d'autres tables que celles indiquées.
Un projet qui empêche une normalisation ? en quoi on ne peux pas créer une table de plus ?
c'est pas gênant d'avoir une table de plus et cela te simplifie la vie.

Une bonne application commence par une bonne modélisation. coté sgbd tu peux te tourner vers le modèle entité - association de la méthode merise. ce modèle pourra aussi t'aider pour la partie si tu compte t'orienter vers un modèle objet.

@+

Re: Mettre deux éléments dans une même case de BDD

par ZeNerzhul » 24 avr. 2013, 12:32

Bonjour,

2 méthodes pour faire cela. Et je rappel que tu ne pourras pas te servir de ton champ pour faire un quelconque croisement plus tard. Bref, ca ne te servira que de stockage.

1) tu serialises ton tableau de résultat et tu le place dans ton champ. A la récupération tu désérialises quand tu le récupères.

2) tu implode tes données avant la sauvegarde => $machaine = implode( ';', $montableau ) avec un caractère séparateur que tu es certain de ne jamais trouver dans tes données de tableau. A la récupération tu explode $montableau = explode( ';', $machaine ) tes données pour les remettre dans ton tableau.

Re: Mettre deux éléments dans une même case de BDD

par polim78 » 24 avr. 2013, 01:01

Merci pour la réponse.
J'ai refléchi à votre proposition qui paraissait fort intéressant mais mon projet m'interdit que créer d'autres tables que celles indiquées.
Ainsi, j'ai pensé à si on ne pouvait pas faire un tableau dans un tableau (plus précisement dans la case voulu) ce qui nous permettrait de pouvoir réutiliser nos valeurs .
Qu'en pensez-vous.

Re: Mettre deux éléments dans une même case de BDD

par moogli » 23 avr. 2013, 23:36

salut,


on ne fait ce genre de chose simplement parce que c'est pas utilisable après.

utilise une autre table qui servira de jointure entre les tables.

plus d'info http://sqlpro.developpez.com/cours/sqlaz/jointures/


@+

Mettre deux éléments dans une même case de BDD

par polim78 » 23 avr. 2013, 20:42

Bonsoir, alors je m'explque.

Voici mon code de la table ajout_personnel.php
<form action="ajout_reussie.php" method="post" enctype="multipart/form-data" name="formulaire" >
<table>
<tr id=event><td>Batiment</td><td><select style="width:250px" name="Code_Bat[]" multiple="multiple">
							<option value="">--TOUT--</option>
							<option value="BAT-A">BATIMENT A CAL</option>
							<option value="BAT-B">BATIMENT B CAL</option>
							<option value="BAT-C">BATIMENT C CAL</option>
							<option value="BAT-IUFC">INSTITUT UNIVERSITAIRE DE LA FACE ET DU COU</option></select></td>
</tr> </table></form>

Celui de ma table ajout_reussi.php
if(($_POST['Code_Bat']) != ""){
		$bd->exec("INSERT INTO`personnel_batiment` (`Id_Batiment`, `Id`, `Code_Bat`) VALUES ('', '". $Id['Id']."' , '".$_POST['Code_Bat']."');");
		}
Alors comme vous l'avez sans doute remarqué. C'est une liste déroulante à choix multiple. Ainsi je voudrais savoir lorsque je sélectionne plusieurs éléments de ma liste déroulante, comment faire pour qu'ils apparaissent dans la base de données non pas comme deux éléments distincts mais comme un seul séparé par une virgule par exemple.

En gros :

Si je sélectionne BAT-A et BAT-B
J'aurais "BAT-A , BAT-B".
Peut-être la fonction "implode" ?

J'espère avoir été clair. Merci pour les réponses.