Pessoal, bom dia para todos.
Seguinte.. eu trampo numa empresa de e-RH online (HRsmart)
Temos uma ferramenta gringa e adptamos formulários de acordo com as necessidades de cada cliente.
Eu tenho sérios problemas pois nao entendo muito de CGI, mas conheço bem html e asp, porem o asp nao tem nada haver com o CGI, entao eu expliquei e nao expliquei ao msm tempo... rs... vamos la!!
Os formulários trabalham em parceria com mySQL, portanto (HTML, CGI, mySQL)... entao vamos a minha duvida de sempre !!
Tenho o formulário pronto, ai um cliente pediu pra adicionar um campo, dois, tres, que seja. Até a criação dos campos no mySQL é tranquilo. O Que eu nao consigo fazer é o básico: CADASTRAR, ALTERAR
Anexo, tem um arquivo no qual eu uso bastante. Entao pelo que notei, ele (UNICO ARQUIVO) faz alteracao e cadastra.
O que eu preciso realmente entender, ou nem preciso entender, só me digam como eu adiciono um novo campo, altero e etc... já tentei e tals tipo (onde tem o nome do form) colocar ao lado e tal... mas queria mesmo é ter a certeza de que estou fazendo.
Obrigado
Vamos tentar:
começando por aqui:
use CGI;
my $co = new CGI;
Essas duas linhas definem o nome e da variavel chave e a recepção dos dados do formulario. Com estas duas formulas declaradas você pode receber N campos do formulario exemplo:
use CGI;
my $formulario = new CGI;
$email = $formulario->param('nome_do_campo_no_html_que_sera_recebido_aqui');
#exemplo:
$email = $formulario->param('email');
como você pode ver:
$applicantid = $co->param('applicantid');
mais adiante vamos ao que você quer:
elsif($action eq 'update' && $applicantid ne '' && $jobid ne '') {
my $sth=$dbh->prepare("UPDATE applicantinterviewform SET name = ?, address1 = ?, address2 = ?, city = ?, state = ?, country = ?, zip = ?, phone1 = ?, phone2 = ?, phone3 = ?, email = ?, clr =?, currentemployer = ?, reasonforleaving = ?, payrate = ?, benefits = ?, dateavailable = ?, formeremployee = ?, reasonforleavingeds = ?, lastmanager = ?, skills = ?, notes = ?, workauthorization = ?, workauthorizationexplanation = ?, offeractivity = ?, travelavailability = ?, backgroundcheck = ?, livingexpenses = ?, cashadvances = ?, offerdiscussed = ?, nextstep = ? WHERE applicantid = ? AND jobid = ?");
my($updated)=$sth->execute($name,$address1,$address2,$city,$state,$country,$zip,$phone1,$phone2,$phone3,$email,$clr,$currentemployer,$reasonforleaving,$payrate,$benefits,$dateavailable,$formeremployee,$reasonforleavingeds,$lastmanager,$skills,$notes,$workauthorization,$workauthorizationexplanation,$offeractivity,$travelavailability,$backgroundcheck,$livingexpenses,$cashadvances,$offerdiscussed,$nextstep,$applicantid,$jobid);
$sth->finish();
$dbh->disconnect();
push(@unhide,"updated") if($updated>0 && $updated ne '0E0');
push(@unhide,"notupdated") if($updated<=0 || $updated eq '0E0');
goto RENDER_PAGE;
}
elsif($action eq 'insert' && $applicantid ne '' && $jobid ne '') {
my $sth=$dbh->prepare("INSERT INTO applicantinterviewform SET name = ?, address1 = ?, address2 = ?, city = ?, state = ?, country = ?, zip = ?, phone1 = ?, phone2 = ?, phone3 = ?, email = ?, clr =?, currentemployer = ?, reasonforleaving = ?, payrate = ?, benefits = ?, dateavailable = ?, formeremployee = ?, reasonforleavingeds = ?, lastmanager = ?, skills = ?, notes = ?, workauthorization = ?, workauthorizationexplanation = ?, offeractivity = ?, travelavailability = ?, backgroundcheck = ?, livingexpenses = ?, cashadvances = ?, offerdiscussed = ?, nextstep = ?, applicantid = ?, jobid = ?");
my($added)=$sth->execute($name, $address1, $address2, $city, $state, $country, $zip, $phone1, $phone2, $phone3, $email, $clr, $currentemployer, $reasonforleaving, $payrate, $benefits, $dateavailable, $formeremployee, $reasonforleavingeds, $lastmanager, $skills, $notes, $workauthorization, $workauthorizationexplanation, $offeractivity, $travelavailability, $backgroundcheck, $livingexpenses, $cashadvances, $offerdiscussed, $nextstep, $applicantid, $jobid);
$sth->finish();
$dbh->disconnect();
push(@unhide,"added") if($added>0);
push(@unhide,"notadded") if($added<=0);
goto RENDER_PAGE;
}
Agora temos esses 2 elsif que são chamados quando o que pedem esta ok com a verificação vamos la:
o 1 é o de atualizar "update" ou editar como muitos chamam:
elsif($action eq 'update' && $applicantid ne '' && $jobid ne '') {
Quanto o valor da variavel $action for igual a 'update' e $applicantid não estiver vazio e nem o $jobid estiver vazio, ele ira atualizar algum registro.
my $sth=$dbh->prepare("UPDATE applicantinterviewform SET name = ?, address1 = ?, address2 = ?, city = ?, state = ?, country = ?, zip = ?, phone1 = ?, phone2 = ?, phone3 = ?, email = ?, clr =?, currentemployer = ?, reasonforleaving = ?, payrate = ?, benefits = ?, dateavailable = ?, formeremployee = ?, reasonforleavingeds = ?, lastmanager = ?, skills = ?, notes = ?, workauthorization = ?, workauthorizationexplanation = ?, offeractivity = ?, travelavailability = ?, backgroundcheck = ?, livingexpenses = ?, cashadvances = ?, offerdiscussed = ?, nextstep = ? WHERE applicantid = ? AND jobid = ?");
UPDATE applicantinterviewform = significa que ele ira atualizar algo nessa tabela
SET name = ?, = o que sera atualizado (o meio que esse sistema usa é muito bom pois utiliza o famoso "place holder" que impede a manipulação de dados e acesso ao banco de dados). Como você pode ver ele tem o nome do campo um igual e a interrogação separando outros campos por virgula isso significa que você ira fornecer o valor do nome e outros dados depois na execução da query do MySQL.
WHERE applicantid = ? AND jobid = ? = significa que ele so ira atualizar quando ele encontrar alguem com o applicantid e jobid iguais aos fornecidos.
my($updated)=$sth->execute($name,$address1,$address2,$city,$state,$country,$zip,$phone1,$phone2,$phone3,$email,$clr,$currentemployer,$reasonforleaving,$payrate,$benefits,$dateavailable,$formeremployee,$reasonforleavingeds,$lastmanager,$skills,$notes,$workauthorization,$workauthorizationexplanation,$offeractivity,$travelavailability,$backgroundcheck,$livingexpenses,$cashadvances,$offerdiscussed,$nextstep,$applicantid,$jobid);
Está é a query sendo executada e passando todos os valores referentes as interrogações...
Espero ter ajudado, achei um topico legal aqui no forum explicando um pouco mais sobre perl e MySQL de uma olhada pode esclarecer alguma outra duvida sua:
http://forum.wmonlin...howtopic=128573