enregistrer une select multiple

enregistrer une select multiple - PHP - Programmation

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  :jap:

Reply

Marsh Posté le 05-10-2011 à 14:08:12   

Reply

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

Reply

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...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

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]

Reply

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"... :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 05-10-2011 à 17:54:12    

Reply

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...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

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  :jap:

Reply

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 :


$ligne_sel_lg = strlen($ligne_sel);
 
// Le nom est la chaine de caractère avant le premier espace
$nom_sel = "";
for($i = 0; $i < $ligne_sel_lg; $i++) {
  $c = $ligne_sel[$i];
  if ($c == " " ) break;
  $nom_sel .= $c;
}
 
// Le prenom se trouve apres jusqu'au deux points
$prenom_sel = "";
for(; $i < $ligne_sel_lg; $i++) {
  $c = $ligne_sel[$i];
  if ($c == ":" ) break;
  $prenom_sel .= $c;
}


 
3. Insertion :

$qer = mysql_query('insert into table_des_noms(nom,prenom) values("'.$nom_sel.'","'.$prenom_sel.'" )');


Message édité par olivthill le 06-10-2011 à 11:47:29
Reply

Marsh Posté le 06-10-2011 à 13:07:20    

ok merci olivthill, je vais me baser sur ça et je vous tiendrez au courant!

Reply

Marsh Posté le 06-10-2011 à 13:07:20   

Reply

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) ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed