[SOLVED][HTTPServer] How to get the Combobox value?
lazarus / 38-Networking and Web Programming
----------------------------------------------------------------------
Focus77 · 2019-06-07 17:53
Hi everyone
I try to insert rows with "GET" Method.
All the fieldsvalues are added normally except the combobox one:
Code: Pascal [Select][+][-]window.onload = function(){var x1 =
document.getElementById("main_content_section"); if (x1) { var x =
document.getElementsByClassName("geshi");for (var i = 0; i Add('
');
The whole code:
Code: Pascal [Select][+][-]window.onload = function(){var x1 =
document.getElementById("main_content_section"); if (x1) { var x =
document.getElementsByClassName("geshi");for (var i = 0; i procedure
TFPWebModule1.insertRequest(Sender: TObject; ARequest: TRequest;
AResponse: TResponse; var Handled: Boolean); var Conn:
TSQLConnector; CLASSE,OPTION: TSQLQuery;
LId,LNom,LOption:String; begin Conn := TSQLConnector.Create(nil);
with Conn do begin ConnectorType := 'Firebird';
DatabaseName := 'E:/web/database/NOTES.fdb'; Username:='sysdba';
Password:='masterkey'; Transaction :=
TSQLTransaction.Create(Conn); end; CLASSE:=
TSQLQuery.Create(nil); OPTION:= TSQLQuery.Create(nil);
CLASSE.DataBase := Conn; OPTION.DataBase := Conn; with
AResponse.Contents do begin Clear; Add('');
Add(''); Add('
'); Add('
Example'); Add(''); Add(' ');
Add(' '); Add(''); OPTION.SQL.Text := 'select *
from OPTIONS'; OPTION.Open; CLASSE.SQL.Text := 'select *
from CLASSE'; CLASSE.Open;
LId:=ARequest.QueryFields.Values['Id'];
LNom:=ARequest.QueryFields.Values['Nom'];
LOption:=ARequest.QueryFields.Values['Option']; with
AResponse.Contents do Add(''); if (LId<>EmptyStr) then begin
CLASSE.Insert; CLASSE.FieldByName('COD_CLS_CL').AsString:=LId;
CLASSE.FieldByName('NOM_CLS').AsString:=LNom;
CLASSE.FieldByName('OPT_CL').AsString:=LOption;
CLASSE.ApplyUpdates(-1); conn.Transaction.CommitRetaining;
end; Add('
'); Add('
'); Add('
Id
'); Add('
Nom
'); Add('
Option
'); Add('
'); while not
CLASSE.EOF do begin Add('
'); Add('
'+CLASSE.FieldByName('COD_CLS_CL').AsString+'
');
Add('
'+CLASSE.FieldByName('NOM_CLS').AsString+'
');
Add('
'+CLASSE.FieldByName('OPT_CL').AsString+'
'); Add('
'); CLASSE.Next; end; Add('
');
Add(' '); Add(''); end; Handled:=True;
CLASSE.Close; CLASSE.Free; Conn.Free; end; Any idea?
----------------------------------------------------------------------
Focus77 · 2019-06-09 16:42
Hi everyone
Although I have improved the code, the problem still remains.
I think that the answer is with "CBOnChange" event, but I'm not sure
I can use it!
New code:
Code: Pascal [Select][+][-]window.onload = function(){var x1 =
document.getElementById("main_content_section"); if (x1) { var x =
document.getElementsByClassName("geshi");for (var i = 0; i procedure
TFPWebModule1.insertRequest(Sender: TObject; ARequest: TRequest;
AResponse: TResponse; var Handled: Boolean); var Conn:
TSQLConnector; CLASSE,OPTION: TSQLQuery;
LId,LNom,LOption:String; begin Conn := TSQLConnector.Create(nil);
with Conn do begin ConnectorType := 'Firebird';
DatabaseName := 'E:/web/database/NOTES.fdb'; Username:='sysdba';
Password:='masterkey'; Transaction :=
TSQLTransaction.Create(Conn); end; CLASSE:=
TSQLQuery.Create(nil); OPTION:= TSQLQuery.Create(nil);
CLASSE.DataBase := Conn; OPTION.DataBase := Conn; with
AResponse.Contents do begin Clear; Add('');
Add(''); Add(' '); Add(''); Add('
Insert'); Add(' '); Add('
'); Add(' How to insert
a new record?'); Add(' ');
Add(' ');Add(' ');Add(' '); OPTION.SQL.Text := 'select *
from OPTIONS'; OPTION.Open; CLASSE.SQL.Text := 'select *
from CLASSE'; CLASSE.Open;
LId:=ARequest.QueryFields.Values['Id'];
LNom:=ARequest.QueryFields.Values['Nom'];
LOption:=ARequest.QueryFields.Values['Option']; with
AResponse.Contents do Add(''); if (LId<>EmptyStr) then begin
CLASSE.Insert; CLASSE.FieldByName('COD_CLS_CL').AsString:=LId;
CLASSE.FieldByName('NOM_CLS').AsString:=LNom;
CLASSE.FieldByName('OPT_CL').AsString:=LOption;
CLASSE.ApplyUpdates(-1); conn.Transaction.CommitRetaining;
end; Add(' '); Add('
'); Add('
'); Add('
Id    
'); Add('
Nom
'); Add('
Option
 
'); Add('
'); while
not CLASSE.EOF do begin Add('
'); Add('
'+CLASSE.FieldByName('COD_CLS_CL').AsString+'
');
Add('
'+CLASSE.FieldByName('NOM_CLS').AsString+'
');
Add('
'+CLASSE.FieldByName('OPT_CL').AsString+
'
'); Add('
'); CLASSE.Next; end;
Add('
'); Add(' '); Add('');
end; Handled:=True; CLASSE.Close; OPTION.Close;
Conn.Free; end;
----------------------------------------------------------------------
Soner · 2019-06-09 17:17
You must answer the request. I don't worked with TWebModule but I
think it is the Event TWebModule.OnRequest.
It must be like this:
Code: Pascal [Select][+][-]window.onload = function(){var x1 =
document.getElementById("main_content_section"); if (x1) { var x =
document.getElementsByClassName("geshi");for (var i = 0; i Procedure
TWebModule1.OnRequest(Sender : TObject; ARequest : TRequest; AResponse
: TResponse; Var Handled : Boolean);begin
Writeln(ARequest.ContentFields.Values['Option']); //Option is your
combobox, you called it self.end;
I am using TFPHTTPServer directly without modules. It is easier to
maintenance the application.
----------------------------------------------------------------------
sash · 2019-06-09 18:40
Select's option value attribute should be filled
Code: HTML5 [Select][+][-]window.onload = function(){var x1 =
document.getElementById("main_content_section"); if (x1) { var x =
document.getElementsByClassName("geshi");for (var i = 0; i preferably with unique
key, this is what you get back in form submit request.
https://www.w3schools.com/html/tryit.asp?filename=tryhtml_elem_select
----------------------------------------------------------------------
Focus77 · 2019-06-09 22:18
Hi everyone!
The tip that the combobox is known by its name:
Code: Pascal [Select][+][-]window.onload = function(){var x1 =
document.getElementById("main_content_section"); if (x1) { var x =
document.getElementsByClassName("geshi");for (var i = 0; i Add('