patingfree
Messages postés48Date d'inscriptionvendredi 13 novembre 2009StatutMembreDernière intervention30 septembre 2010
-
23 août 2010 à 12:07
patingfree
Messages postés48Date d'inscriptionvendredi 13 novembre 2009StatutMembreDernière intervention30 septembre 2010
-
24 sept. 2010 à 10:30
Bonjour à tous,
Je dispose d'un formulaire avec 3 champs textes que je desire remplir automatiquement après la selection d'une ligne d'enregistrement (3 elements sur la ligne) provenant de la liste d'une fenêtre popup.
Cette popup est ouverte après la selection d'un element contenu dans une liste sur mon formulaire.
problème: lorsque je selectionne la ligne, elle renseigne les 3 champs de mon formaulaire avec les 3 elements qui devrait être séparés.
Comment affecter à chaque champ de mon formulaire sa valeur respective.
le code du formulaire
<FORM NAME = "formulaire" METHOD="POST" ACTION="">
Type de produit,
<select name="type_produit"><option value="" selected="selected">-- Sélectionnez un type de produit --</option>
<?php
// Fonction de connexion à la base de données
connexion_DB('db');
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 9 sept. 2010 à 21:56
Bonjour,
commençons par la différence entre
<script language= "javascript"> et <script type="text/javascript">, plutôt que de long discours lien vers l'élément SCRIPT vu par la W3C.
pour ce qui est du code HTML et non PHP il suffit, une fois que la page est chargée par le navigateur, de regarder la page généré par le PHP donc en faisant afficher la source comme je te l'ai indiqué.
quant à la mise en forme des codes et leur colorisation, promène la souris sur la barre de titre de la boîte de saisie du texte, la 12éme icône te permet de mettre les balises suivant ton choix après sélection du texte.
Après application, j'ai toujours une liste noire et je ne comprends plus rien.
si tu as tout bien respecté il n'y a aucune raison que tu ne vois pas d'option dans le SELECT
Pour être prise en compte la ligne
tab[2].innerHTML = Ajout_Opt( 1, 1000, 1);
doit être placée avant la ligne
O_Dest.appendChild( tab[2])
sinon c'est la gabegie
Si tu ajoutes les OPTIONs après avoir ajouté le SELECT au document il te faut passer par la création via un new Option( text, value);, ce qui peut donner une fonction du style
//--------------------------------------------
function Ajout_Option( obj_, min_, max_, inc_){
max_++; // incremente pour le test
obj_.options.length = 0; // vide le SELECT
obj_.options[0] = new Option("---"); // Ajoutes 1st Option selected par defaut
for( var i min_, k 1; i < max_; i+= inc_, k++){
obj_.options[k] = new Option( i);
}
}
patingfree
Messages postés48Date d'inscriptionvendredi 13 novembre 2009StatutMembreDernière intervention30 septembre 2010 13 sept. 2010 à 16:01
J'ai oublié de préciser que la liste de selection provient d'une fenêtre popup et les résultats se logent dans un formulaire(fenêtre ouvrante)
fenêtre popup(list_pro_serveur.php)
<HTML>
<HEAD>
<TITLE>popup des produits</TITLE>
<script type= "text/javascript">
//-- Constante pour lisibilite--//
var REFERENCE = 0;
var DESIGNATION = 1;
var PRIX = 2;
//--------------------------------
function Fct_Select( this_, dest_){
var Obj = this_;
//-- Recup de la TR parent dans la TABLE
while(( Obj = Obj.parentNode).tagName !== "TR"){}
//-- Recup numero ligne
var RowNum = Obj.rowIndex;
//-- recup Valeur
var Val = parseFloat( this_.options[this_.selectedIndex].value);
//-- Message pour DEBUG
var szMsg = 'Nous sommes sur la ligne -> ' +RowNum;
szMsg +'\nValeur du SELECT(' +this_.id +') ' +Val;
alert( szMsg);
//-- Si dest_ en parametre alors affectation valeur
if( dest_ != null){
document.getElementById('dest_ +RowNum').value = Val;
//-- Replace sur ligne 0
this_.selectedIndex = 0;
}
}
//--------------------------------------------
function Ajout_Option( obj_, min_, max_, inc_){
max_++; // incremente pour le test INF dans boucle
obj_.options.length = 0; // vide le SELECT
obj_.options[0] = new Option("- ? -"); //Ajoutes 1st Option
for( var i min_, k 1; i < max_; i += inc_, k++){
obj_.options[k] = new Option( i, i);
}
}
//--------------
function Ajout(){
//-- Recup SELECT et choix
var O_Select = document.getElementById('liste');
var Choix = O_Select.selectedIndex;
//-- Quitte si 1st ligne
if( Choix < 1) return;
//-- Recup data ligne select
var szTmp = O_Select.options[Choix].text;
var Tab = szTmp.split("|");
//-- Recup Objet Parent pour insertion
var O_Parent = window.opener ? window.opener.document : window.document;
var O_Table = O_Parent.getElementById('table');
//-- Creation de la ligne
var RowNum = O_Table.rows.length; // Get index pour les IDs
var O_Row = O_Table.insertRow(-1);
//-- Creation des cellules
var O_Col = [];
for( var i = 0; i < 6; i ++){
O_Col[i] = O_Row.insertCell( -1);
}
//-- CREATION des Champs
var Obj;
var Ind = 0; //-- index pour les O_Col de appendChild
//-- Creation INPUT et Ajout
Obj = O_Parent.createElement( 'INPUT');
O_Col[Ind++].appendChild( Obj);
//-- Initialisation diverses
Obj.id Obj.name 'reference_' +RowNum; Obj.type = "text"; Obj.size = '12'; Obj.value = Tab[ REFERENCE];
<FORM>
<SELECT name="liste" id="liste" onChange="Ajout()" >
<option value="" selected="selected">-- Sélectionnez une valeur --</option>
<?php
//connection au serveur:
$connect = mysql_connect( '127.0.0.1', 'root', '' );
//sélection de la base de données:
mysql_select_db('bd',$connect) ;
$sql = "SELECT *
FROM produit
WHERE reference like 'S%'";
$query = mysql_query($sql);
<script type ="text/javascript">
function OuvrirPopup(page,nom,option) {
ff = window.open(page,nom,option);
if (ff && ff.focus)
ff.focus();}
</SCRIPT>
</HEAD>
<FORM NAME = "formulaire" METHOD="POST" ACTION="">
Type de produit,
<select name="type_produit">
<option value="" selected="selected">-- Sélectionnez un type de produit --</option>
<?php
// Fonction de connexion à la base de données
connexion_DB('bd');
patingfree
Messages postés48Date d'inscriptionvendredi 13 novembre 2009StatutMembreDernière intervention30 septembre 2010 25 août 2010 à 11:51
Bonjour petroleteam,
je tiens à te remercier pour avoir pris le temps de te pencher sur mon problème.Mille merci! j'ai trouvé une solution avec l'aide d'un ami et d'un tuto depuis mais j'ai un autre souci
voila la fonction qui m'a permis de resoudre ce problème:
function Reporter(l) {
var list = document.getElementById('liste').options[document.getElementById('liste').selectedIndex].text;
/*alert(list);*/
var long = list.length;
/*alert(long);*/
var delim= list.indexOf(" ",0);
/*alert(delim);*/
var refer = list.substring(0,delim);
/* alert(refer);*/
var suivant = delim+1;
/* alert(suivant);*/
var delimi = list.indexOf(" ",suivant);
/* alert(delimi);*/
var desi1 = list.substring(suivant,delimi);
/*alert(desi1);*/
var suivant = delimi+1;
/*alert(suivant);*/
var delimit = list.indexOf(" ",suivant);
/* alert(delimit);*/
var desi2 = list.substring(suivant,delimit);
/*alert(desi2);*/
var design = desi1+desi2;
/*alert(design);*/
var suivant = delimit+1;
var prix = list.substring(suivant,long);
/* alert(prix);*/
Mon souci actuel est:
je dispose d'un formulaire avec des champs textes et une liste(type de produit) qui ouvre une popup qui contient aussi une liste(reference designation prix) .Lorsque je selectionne une ligne dans la popup, les informations viennent se loger dans les champs textes respectifs sur le formulaire et après le choix de la remise se crée une nouvelle ligne vierge dans le formulaire .Lorsque je selectionne un autre element de la liste du popup, les enregistrements ne se logent pas dans les champs de la deuxième ligne mais plutot la première.
Je voudrais qu'après la selection d'une seconde ligne dans la popup, une autre ligne de champ se crée sur le formulaire avec les enregistrements selectionnés.C'est un véritable souci pour moi car je découvre à peine javascript et je ne sais comment resoudre ce problème.Aidez moi svp , suis en galère!
code du formulaire
//liste du formulaire
<td>
<select name="type_produit">
<option value="" selected="selected">-- Sélectionnez un type de produit --</option>
<?php
// Fonction de connexion à la base de données
connexion_DB('facturation');
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 25 août 2010 à 13:54
il ne faut pas oublier de changer les IDs et NAMEs pour pouvoir faire une réelle création, c'est donc à gérer dans la fonction.
un petit exemple pour le principe, pardon un des principes
<html>
<head>
<script type="text/javascript">
var Num = 0; // Num pour gestion Ligne
//--------------
function Ajout(){
//-- Recup le select
var O_Liste = document.getElementById('selection');
//-- Recup la ligne selectionnee
var Index = O_Liste.selectedIndex;
//-- Recup le libelle
var szTmp = O_Liste.options[Index].text;
//-- Deploie la chaine
var Tab = szTmp.split(" ");
//-- Recup Objet pour insertion
var O_Dest = document.getElementById('insertion');
//-- Recup objet pour mise a jour
var O_Input = new Array();
O_Input[0] = document.getElementById('champ0_' +Num);
//-- Si n'existe pas
if( !O_Input[0]){
//-- Creation INPUT
O_Input[0] = document.createElement( 'INPUT');
//-- Ajout
O_Dest.appendChild( O_Input[0]);
//-- Affectation Name et ID
O_Input[0].id = 'champ0_' +Num;
O_Input[0].name = 'champ0_' +Num;
//-----------------
//-- DEUXIEME CHAMP
O_Input[1] = document.createElement( 'INPUT');
//-- Ajout
O_Dest.appendChild( O_Input[1]);
//-- Affectation Name et ID
O_Input[1].id = 'champ1_' +Num;
O_Input[1].name = 'champ1_' +Num;
//-- Retour ligne juste for plus de clarete
O_Dest.appendChild( document.createElement('BR'));
//-- Incrementation pour prochain
Num ++;
}
//-- Ajout des données
O_Input[0].value = Tab[0];
O_Input[1].value = Tab[1];
}
</script>
</head>
<select id="selection" name="selection">
<option>Data_01 001 Ligne_01</option>
<option>Data_02 002 Ligne_02</option>
<option>Data_03 003 Ligne_03</option>
<option>Data_04 004 Ligne_04</option>
</select>
</html>
c'est très optimisable, mais c'est pour le principe
PS : Merci d'utiliser les balises de codage pour plus de lisibilité.
patingfree
Messages postés48Date d'inscriptionvendredi 13 novembre 2009StatutMembreDernière intervention30 septembre 2010 25 août 2010 à 14:10
Merci encore une fois de m'avoir répondu.J'aimerais poser une question que tu trouveras peut être stupide
le code ci dessous est ce pour le formulaire ou la fenêtre popup? car les lignes contenues dans le select proviennent de la popup
patingfree
Messages postés48Date d'inscriptionvendredi 13 novembre 2009StatutMembreDernière intervention30 septembre 2010 26 août 2010 à 13:20
Bonjour PetroleTeam,
J'ai deux select avec des codes php.j'ai esssayé ceci et ça ne marche pas.La liste s'affiche mais sans elements.
/-- Recup Objet pour insertion
var O_Dest = window.opener.document.getElementById('table');
//-- Recup objet pour mise a jour
var tab = new Array();
tab[0] = window.opener.document.getElementById('reference_' +num);
//-- Si n'existe pas
if( !tab[0]){
//-----------------
//-- PREMIER CHAMP
//-- Creation INPUT
tab[0] = window.opener.document.createElement( 'INPUT');
//-- Ajout
O_Dest.appendChild( tab[0]);
//-- Affectation Name et ID
tab[0].id = 'reference_' +num; tab[0].name = 'reference_' +num; tab[0].size = '10';
//-- DEUXIEME CHAMP
tab[1] = window.opener.document.createElement( 'INPUT');
//-- Ajout
O_Dest.appendChild( tab[1]);
//-- Affectation Name et ID
tab[1].id = 'designation_' +num; tab[1].name = 'designation_' +num;
//-----------------
//-- TROISIEME CHAMP
tab[2] = window.opener.document.createElement( 'SELECT');
//-- Ajout
O_Dest.appendChild( tab[2]);
//-- Affectation Name et ID
tab[2].id = 'qte_' +num; tab[2].name = 'qte_' +num;
//-- QUATRIEME CHAMP
tab[3] = window.opener.document.createElement( 'INPUT');
//-- Ajout
O_Dest.appendChild( tab[3]);
//-- Affectation Name et ID
tab[3].id = 'pu_' +num; tab[3].name = 'pu_' +num;
//-- Incrementation pour prochain
num ++;
}
//-- Ajout des données
var selec_val = "<?php $fin= 1000; echo "<option selected>---</option>"; for ($i=1; $i<=$fin; $i++){ echo "<option>$i</option>";echo "
"; } ?>";
tab[0].value = refer;
tab[1].value = design;
tab[2].value = selec_val;
tab[3].value = prix;
patingfree
Messages postés48Date d'inscriptionvendredi 13 novembre 2009StatutMembreDernière intervention30 septembre 2010 26 août 2010 à 17:55
j'ai un veritable souci avec le javascript
ce code permet de compter de 1 à 1000 en php
<select name="qte" id="qte">
<?php
$fin= 1000;
echo "<option selected>---</option>";
for ($i=1; $i<=$fin; $i++){
echo "<option>$i</option>";
echo "
";
}
?>
</select>
comment puis je afficher le $i en javascript
y' a t'il moyen d'integrer la propriété innerhtml dans ce code pour la construction des lignes et colonnes
merci pour votre aide.
patingfree
Messages postés48Date d'inscriptionvendredi 13 novembre 2009StatutMembreDernière intervention30 septembre 2010 8 sept. 2010 à 13:40
bonjour petroleteam,
milles excuses pour le silence!j'étais en voyage pour des obsèques
Pour revenir à nos moutons, mon problème n'est toujours pas resolu!je n'arrive toujours pas à recupérer le select
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 8 sept. 2010 à 18:38
Bonjour,
...je n'arrive toujours pas à recupérer le select...
- ou est ce que tu ne récupères pas le SELECT ?
- l'ajout des lignes fonctionne t-il correctement ?
- le SELECT a-t-il un NAME?
- as tu une page en ligne que l'on puisse se rendre compte ?
patingfree
Messages postés48Date d'inscriptionvendredi 13 novembre 2009StatutMembreDernière intervention30 septembre 2010 8 sept. 2010 à 19:06
voilà le code de ma fenêtre popup dans laquelle après avoir avoir opéré un choix, la ligne est générée sur le formulaire
<HTML>
<HEAD>
<TITLE>popup des produits</TITLE>
<SCRIPT language="javascript">
function Quantite(){
var fin = 1000;
//var qtite = "<option selected>----</option>";
for( var i=0; i< fin; i++){
var qtite +="<option>" +i+"</option>";}
}
<!--
var num = 0;
function Ajout(){
var list = document.getElementById('liste').options[document.getElementById('liste').selectedIndex].text;
/*alert(list);*/
var long = list.length;
/*alert(long);*/
var delim= list.indexOf(" ",0);
/*alert(delim);*/
var refer = list.substring(0,delim);
/* alert(refer);*/
var suivant = delim+1;
/* alert(suivant);*/
var delimi = list.indexOf(" ",suivant);
/* alert(delimi);*/
var desi1 = list.substring(suivant,delimi);
/*alert(desi1);*/
var suivant = delimi+1;
/*alert(suivant);*/
var delimit = list.indexOf(" ",suivant);
/* alert(delimit);*/
var desi2 = list.substring(suivant,delimit);
/*alert(desi2);*/
var design = desi1+desi2;
/*alert(design);*/
var suivant = delimit+1;
var prix = list.substring(suivant,long);
//-- Recup Objet pour insertion
var O_Dest = window.opener.document.getElementById('table');
var num = 0;
//-- Recup objet pour mise a jour
var tab = new Array();
tab[0] = window.opener.document.getElementById('reference_' +num);
//-- Si n'existe pas
if( !tab[0]){
//-----------------
//-- PREMIER CHAMP
//-- Creation INPUT
tab[0] = window.opener.document.createElement( 'INPUT');
//-- Ajout
O_Dest.appendChild( tab[0]);
//-- Affectation Name et ID
tab[0].id = 'reference_' +num; tab[0].name = 'reference_' +num; tab[0].size = '10';
//-- DEUXIEME CHAMP
tab[1] = window.opener.document.createElement( 'INPUT');
//-- Ajout
O_Dest.appendChild( tab[1]);
//-- Affectation Name et ID
tab[1].id = 'designation_' +num; tab[1].name = 'designation_' +num;
//-----------------
//-- TROISIEME CHAMP
tab[2] = window.opener.document.createElement( 'SELECT');
//-- Ajout
O_Dest.appendChild( tab[2]);
//-- Affectation Name et ID
tab[2].id = 'qte_' +num; tab[2].name = 'qte_' +num;
//-- QUATRIEME CHAMP
tab[3] = window.opener.document.createElement( 'INPUT');
//-- Ajout
O_Dest.appendChild( tab[3]);
//-- Affectation Name et ID
tab[3].id = 'pu_' +num; tab[3].name = 'pu_' +num;
<html>
<head>
<script language="javascript">
function OuvrirPopup(page,nom,option) {
ff = window.open(page,nom,option);
if (ff && ff.focus)
ff.focus();
}
function recupSelection(src, dest)
{
var valeur = src.options[src.selectedIndex].value;
if (valeur = '')
return;
dest.value = src.options[src.selectedIndex].value;
src.selectedIndex = 0;
var qte = document.getElementById('qte').value;
var puht = document.getElementById('puht').value;
var remise = document.getElementById('remise').value;
var thtva = puht*qte* (1- (remise/100));
var val_tva_produit = thtva * 0.18;
var tva_produit document.getElementById('tva_produit').value val_tva_produit;
var val_ttc_produit = thtva + val_tva_produit;
var ttc_produit document.getElementById('ttc_produit').value val_ttc_produit;
var val_total_ht = 0;
var val_total_ht = val_total_ht + thtva ;
alert(val_total_ht);
var total_ht document.getElementById('total_ht').value val_total_ht;
var val_tva_fact = total_ht * 0.18;
var tva_fact document.getElementById('tva').value val_tva_fact;
var net document.getElementById('net_a_payer').value total_ht + tva_fact;
}
</SCRIPT>
</HEAD>
<FORM NAME = "formulaire" METHOD="POST" ACTION="">
Type de produit,
<select name="type_produit">
<option value="" selected="selected">-- Sélectionnez un type de produit --</option>
<?php
// Fonction de connexion à la base de données
connexion_DB('facturation');
<table id = "table" border="0" align="left" cellspacing="1" cellpadding="0">
Total hors taxe,
Tva 18%,
Net a payer,
----
,
,
</tr>
</table>
</table>
</FORM>
</HTML>
Après la sélection d'une ligne dans la popup les colonnes renseignées se créent sur le formulaire sauf que les valeurs contenues dans le select ne sont pas récupérées.