enregistrer une select multiple - PHP - Programmation
Marsh Posté le 05-10-2011 à 14:24:05
Le SQL repose sur quatre commandes principales : Select, Insert, Update, et Delete.
La commande Insert permet d'insérer une ligne.
Pour avoir n lignes dans la base, il faut faire n insertions.
N.B. Pour avoir une réponse plus précise, veuillez donner plus de précisions :
- Quelle base de données (Oracle, MySQL, Access, ...)
- Liste des tables et des champs de ces tables concernées
- Exemples de données en entrée
Marsh Posté le 05-10-2011 à 14:29:57
En Mysql, INSERT INTO... VALUES(...) permet d'insérer plusieurs enregistrements en une seule requête SQL Par contre, pas possible d'avoir les ID après...
Marsh Posté le 05-10-2011 à 14:43:12
ok merci pour votre réponse.
Donc :
DB: MySql
les 2 tables que j'ai içi: table affectation (où je remplie la 'multiple select')
et table reference(où je doit récupérer ce qui est selectionnée)
les 2 tables contiennent le champ 'nom' c'est celui que je remplie et je récupère.
Et pour l'exemple de formulaire voilà ce que j'ai:
[php]<select name="nom[]" id="nom" multiple>
<option value="" selected >Selectionnez : </option>
<?php
$respo = mysql_query("SELECT * FROM partenaire ORDER BY nom ASC" );
while($affiche_respo= mysql_fetch_array($respo)){
echo '<option value="'.$affiche_respo['nom'].' '.$affiche_respo['prenom'].':'.$affiche_respo['c_ordremedecin'].'">'.$affiche_respo['nom'].' '.$affiche_respo['prenom'].' ('.$affiche_respo['c_ordremedecin'].')</option>';
}
?>
</select>[/php]
d'autre part voilà la requete insert :
[php]$qer = mysql_query('insert into aff(liste,cyc_visite,datetime,region,ville,secteur,nom,nomm,code) values("'.addslashes($_POST['liste']).'","'.addslashes($_POST['cyc_visite']).'","'.addslashes($_POST['datetime']).'","'.addslashes($_POST['region']).'","'.addslashes($_POST['ville']).'","'.addslashes($_POST['secteur']).'","'.addslashes($nomM).'","'.addslashes($_POST['nom']).'","'.addslashes($code3).'" )');[/php]
Marsh Posté le 05-10-2011 à 15:09:37
1) le * dans une requête est à éviter.
2) j'aurais tendance à dire que tu ne connais pas la notion de clé primaire, clé étrangère vue la tête de la table "aff"...
Marsh Posté le 06-10-2011 à 09:55:11
Si ton interrogation renvoie à mon point 2) que tu n'as pas compris, c'est que ma supposition se vérifie...
Marsh Posté le 06-10-2011 à 11:37:14
non j'ai compris ce que t'as dit ..mais mes interrogations c'est a propos de solution?? cad : je vais refaire mes tables ou quoi qu'il faut faire exactement!
merci
Marsh Posté le 06-10-2011 à 11:45:57
1. Récupération de la value pour la ligne sélectionnée :
$ligne_sel = ""; if (isset($_POST['nom'])) $ligne_sel = $_POST['nom']; |
N.B. au lieu de "nom", il aurait été préférable de choisir un nom moins ambigu pour la listbox.
2. Découpage de la ligne sélectionné dans plusieurs champs (parsing). Il existe plusieurs solutions pour cela. Par exemple avec une boucle sur chaque caractère :
|
3. Insertion :
$qer = mysql_query('insert into table_des_noms(nom,prenom) values("'.$nom_sel.'","'.$prenom_sel.'" )'); |
Marsh Posté le 06-10-2011 à 13:07:20
ok merci olivthill, je vais me baser sur ça et je vous tiendrez au courant!
Marsh Posté le 06-10-2011 à 14:40:04
Je faisais remarquer que de mettre comme clé étrangère le nom n'est pas une bonne idée : vaudrait mieux mettre un ID (un entier)
Marsh Posté le 05-10-2011 à 14:08:12
bonjour,
je veux savoir comment faire pour enregistrer ce que je selectionne dans mon select multiple mais en séparant chaque item tout seul ,cad chaque selectionnement s'enregistre dans son propre ligne dans la DB
Ex: j'ai selectionner eleve1,eleve2
je veux avoir dans la DB deux enregistrements/2 lignes
ligne1 :eleve1
ligne2 :eleve2
c'est claire je pense
merci à vous