Tableau en Php javascript

hilquatar Messages postés 6 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 19 avril 2011 - 25 mars 2011 à 15:53
hilquatar Messages postés 6 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 19 avril 2011 - 30 mars 2011 à 11:09
Bojour!

j'ai en fait une listbox avec un lien <> au dessus et <<Retirer>> en dessous pour ajouter et enlever une
ligne de la listebox. une ligne contient des valeurs recupérées depuis plusieurs listboxs et des champs de text
juque là ça va, j'ai utilisé javascript pour faire cela

mais mon problème c'est que je ne sais pas comment faire, au moment de l'envoi du formulaire, pour enregistrer ces données vers ma base de données.

serait-il plus facille de créer un tableau pour stocker toutes les valeurs enregistrées à chaque fois qu'on clique sur Ajouter et d'en retirer quand on clique sur Supprimer?
Si oui, comment réaliser cela??
mon tableau déclaré dans la fonction Ajouter() se vide à chaque fois que je clique sur Ajouter. je ne sais pas ou dois-je le déclarer vu que la page est du php.

ou auriez-vous d'autre solution??
help please!
merci

4 réponses

007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
28 mars 2011 à 20:47
Ce n'est pas utile de s'encombrer avec un tableau puisque le DOM constitue lui-même ce tableau. Il suffit de construire les nouveaux éléments dans l'objet form en indexant leurs noms et identifiants.

Par exemple pour ajouter les éléments d'une listbox
var idx=1; // Si une à l'ouverture de la page
// Pour ajouter 
function plusUne(){var c='';
   idx++;// la suivante
   c+='';
   c+='';
   // ...
   document.getElementById('myForm')?.innerHTML+=c;
}

Cette méthode permettra d'enregistrer les données avec des instructions telles que
foreach ($_POST as $k=>$v) if (substr($k,0,9)=='nm_prenom') {
   $nos=substr($k,9);
   // enregistrement des champs correspondants à $nos
   $pre=$v;
   $nom=£_POST["id_nom".$nos];
   // ...
}
0
hilquatar Messages postés 6 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 19 avril 2011
29 mars 2011 à 11:32
c'est gentil d'avoir répondu, mais est-ce que tu pourrais développer un peu plus? je débute en js et je ne vois pas trop le rapport avec ce que je voulais avoir. je vais être un peu plus clair en te montrant ce que j'ai:
voici mes composants qui se trouve dans la "form" subscrip
<label>Langue</label>
<SELECT name='frm_c_lang_id' id='frm_c_lang_id'>
<option value='1' >Français</option>
<option value='2' >Néerlandais</option>
<option value='3' >Anglais</option>
<option value='4' >Allemand</option>
</SELECT>
<label>Niveau</label>
<SELECT name='frm_c_lang_level_id' id='frm_c_lang_level_id'>
<option value='1' >A1</option>
<option value='2' >A2</option>
<option value='3' >B1</option>
<option value='4' >B2</option>
<option value='5' >C1</option>
<option value='6' >C2</option>
</SELECT>,

----

Ajouter,

----

<select name="list_langue" id="list_langue" size="5" style="width: 500px;">
</select>,

----

Retirer




et voici les fonction qui rajoute et supprime une ligne
function ajouter_langue(val1,val2,list_id){
var valeur1 = getElmtValue(val1);
var valeur2 = getElmtValue(val2);
var ligne = valeur1+ ' - '+valeur2;
ajouter(ligne,list_id);

}
function ajouter(ligne,objet_id){
 			nouvel_element = new Option(ligne,ligne,false,false);
 			var objet = document.subscrip.elements[objet_id];
objet.options[objet.length] = nouvel_element;
}
function effacer(objet_id){
var compteselect=0;
var ma_liste = document.subscrip.elements[objet_id];
for(yo=0;yo<ma_liste.length;yo++){
if(ma_liste.options[yo].selected == true){
compteselect++;
}
if(compteselect>0){
for(yo=0;yo<ma_liste.length;yo++){
if(ma_liste.options[yo].selected == true){
ma_liste.options[yo] = null;
}  
}
effacer();
}
}
}

maintenant quand l'utilisateur à fait son choix je voudrai enregistrer ces choix vers ma bd! mais je ne sais pas comment
0
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
29 mars 2011 à 18:59
Je n'avais pas bien compris la question.

Il suffit de mettre ces deux listes dans le formulaire (subscript) en précisant la méthode POST ou GET, le fichier a appeler lors de l'envoi ou la soumission (a priori le même avec un suffixe php dont le nom doit figurer l'attribut action) et de la soumettre avec un bouton approprié (input type button ou submit à voir) d'enregistrer le tout sur un serveur acceptant le PHP en prévoyant l'entête suivante sur ce fichier (remplacer POST par GET selon la méthode employée...

<?php
// Pour préciser le jeux de caractères de la page
header('Content-Type: text/html; charset=iso-8859-1');

// Code minimal pour voir ce qui arrive sur le serveur 
if (!empty($_POST)){
   foreach($_POST as $k=>$v) echo "
 $k => $v";
// Ensuite voir les tutoriels pour se connecter à une base de données et utiliser ses tables ou bien constituer des simples fichiers textes 
}
?>
0
hilquatar Messages postés 6 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 19 avril 2011
30 mars 2011 à 11:09
merci!
en fait j'ai déjà celà, et je sais comment enregistrer des données vers une base de données.
dans le code que j'ai donné, quand je rajoute une ligne dans la liste ça m'affiche
par Exemple: " 3 - 3" mais pas "Anglais - B1". ce que je veux c'est pourvoir afficher le nom de la langue avec son niveau dans la listbox mais enregistré son "id" dans la base de données qui ne sont que les valeurs de chaque listbox.
0
Rejoignez-nous