Destaque

Como devemos encarar nossa vida profissional Algumas pessoas me perguntam que tipo de trabalho elas poderiam fazer pra ganhar dinheiro, para estas pessoas sempre mostro este texto: "Não paute sua vida, nem sua carreira, pelo dinheiro. Ame seu ofício com todo o coração. Persiga fazer o melhor. Seja fascinado pelo realizar, que o dinheiro...

Read more

Como a realidade aumentada poderá mudar sua vida no... GPS mais desenvolvido, redes sociais revolucionárias e novas maneiras de fazer compras. Faça um passeio pela realidade aumentada e veja como esta tecnologia pode mudar a nossa vida nos próximos anos. Quando assistimos aos filmes de ficção com ambientação no futuro é comum vermos carros voadores,...

Read more

Delphi: Redimesionar form child em MDI Esta rotina redimensiona o formulário Child de uma aplicação MDI para preencher todo a área do form pai. procedure TForm1.SetBounds(ALeft, ATop, AWidth, AHeight: Integer); var MainForm: TForm; Rect: TRect; //OurWidth: Integer; //OurHeight: Integer; begin if Showing then begin MainForm :=...

Read more

ASP e SQL Server: Pegar o retorno do campo ID da tabela... Bom Pessoal, vamos idealizar Uma Rotina Muito Usada, tipo Uma Vendas de Produtos, existem Onde a Tabela de Vendas da EA tabela de itens das Vendas, EO Grande Problema É Como gravar nd tabela itens de Vendas Vendas o ID da tabela, tem aqui uma Solução sem gambiarras código Tabajara Nem. Rotina ESSA...

Read more

PHP: Convertendo datas no PHP com MySql

0

Postado em : 31-07-2009 | By : Paulo H Oliveira | In : PHP

Aqui está uma solução completa para manipulação de dados para usar no PHP com Mysql

Para gravar no banco faremos uma função:

<?php
function formatadata($data){
$dataarray=split(‘/’,&data);
$datanova=&dataarray[2].’-’.&dataarray[1].’-’.&dataarray[0];
return $datanova;
}
?>

Agora para mostrar na pagina a data no formato correto PT_BR:

<?php echo date(‘d/m/Y’, strtotime($data));?> mostrará no formato dd/mm/aaaa

Delphi: Transação DBExpress (Vários exemplos)

0

Postado em : 19-07-2009 | By : Paulo H Oliveira | In : Delphi
var
Transacao: TTransactionDesc;
begin
SQLDataSet1.CommandText:= ‘select ID, NOME from CLIENTES where ID = :id;
SQLDataSet1.ParamByName(‘id’).AsInteger:= 1;
ClientDataSet1.Open; // Note que apenas o TClientDataSet deve ser aberto
with ClientDataSet1 do
begin
Append;
FieldByName(‘ID’).AsInteger:= 2005;
FieldByName(‘NOME’).AsString:= ‘ClubeDelphi’;
Post;
Transacao.TransactionID:= 1;
Transacao.IsolationLevel:=  xilReadCommitted;
SQLConnection1.StartTransaction(Transacao);
if  ApplyUpdates(0) = 0 then
SQLConnection1.Commit(Transacao)
else SQLConnection1.Rollback(Transacao);
end;
==============================================
var
TudoOK: Boolean;
Transacao: TTransactionDesc;
begin
TudoOK:= False;
Transacao.TransactionID:= 1;
Transacao.IsolationLevel:=  xilReadCommitted;
SQLConnection1.StartTransaction(Transacao);
// Aplicando os updates
if ClientDataSet1.ApplyUpdates(0) = 0 then
if ClientDataSet2.ApplyUpdates(0) = 0 then
if ClientDataSet3.ApplyUpdates(0) = 0 then
if ClientDataSet4.ApplyUpdates(0) = 0 then
TudoOK:= True;
// Note que TudoOK só será true se não houver nenhum erro em nenhum dos Updates
if TudoOK then
begin
SQLConnection1.Commit(Transacao);
ShowMessage(‘Atualizações OK.’);
end
else
begin
SQLConnection1.Rollback(Transacao);
ShowMessage(‘Ocorreram erros. Alterações descartadas.’);
end;
end;
==============================================
var
Transacao: TTransactionDesc;
begin
with SQLDataSet1 do
begin
CommandText:= ‘insert into CLIENTES (ID, NOME) values (:id, :nome)’;
ParamByName(‘id).AsInteger:= 2005;
ParamByName(‘nome’).AsString:= ‘ClubeDelphi’;
Transacao.TransctionID:= 1;
Transacao.IsolationLevel:=  xilReadCommitted;
SQLConnection1.StartTransaction(Transacao);
try
ExecSQL;
SQLConnection1.Commit (Transacao);
except
on E: Exception do
begin
SQLConnection1.Rollback(Transacao);
ShowMessage(‘Ocorreram erros.’ + #13 + E.Message);
end;
end;
end;
end;

var

Transacao: TTransactionDesc;

begin

SQLDataSet1.CommandText:= ‘select ID, NOME from CLIENTES where ID = :id;

SQLDataSet1.ParamByName(‘id’).AsInteger:= 1;

ClientDataSet1.Open; // Note que apenas o TClientDataSet deve ser aberto

with ClientDataSet1 do

begin

Append;

FieldByName(‘ID’).AsInteger:= 2005;

FieldByName(‘NOME’).AsString:= ‘ClubeDelphi’;

Post;

Transacao.TransactionID:= 1;

Transacao.IsolationLevel:=  xilReadCommitted;

SQLConnection1.StartTransaction(Transacao);

if  ApplyUpdates(0) = 0 then

SQLConnection1.Commit(Transacao)

else SQLConnection1.Rollback(Transacao);

end;

Read the rest of this entry »

Delphi: Redimesionar form child em MDI

0

Postado em : 19-07-2009 | By : Paulo H Oliveira | In : Delphi

Esta rotina redimensiona o formulário Child de uma aplicação MDI para preencher todo a área do form pai.

procedure TForm1.SetBounds(ALeft, ATop, AWidth,
AHeight: Integer);
var
MainForm: TForm;
Rect: TRect;
//OurWidth: Integer;
//OurHeight: Integer;
begin
if Showing then begin
MainForm := Application.MainForm;
// Obtem o retângulo da área cliente MDI
Windows.GetWindowRect(MainForm.ClientHandle, Rect);
// Calcular largura e altura da área cliente
//OurWidth := Rect.Right – Rect.Left;
//OurHeight := Rect.Bottom – Rect.Top;
// Calcula a nova posição
//ALeft := (OurWidth – Width) div 2;
//ATop := (OurHeight – Height) div 2;
end;
inherited SetBounds(0, 0, Rect.Right-Rect.Left-5, Rect.Bottom-Rect.Top-5);
//inherited SetBounds(ALeft, ATop, AWidth, AHeight);
end;

procedure TForm1.SetBounds(ALeft, ATop, AWidth,

AHeight: Integer);

var

MainForm: TForm;

Rect: TRect;

//OurWidth: Integer;

//OurHeight: Integer;

begin

if Showing then begin

MainForm := Application.MainForm;

// Obtem o retângulo da área cliente MDI

Windows.GetWindowRect(MainForm.ClientHandle, Rect);

// Calcular largura e altura da área cliente

//OurWidth := Rect.Right – Rect.Left;

//OurHeight := Rect.Bottom – Rect.Top;

// Calcula a nova posição

//ALeft := (OurWidth – Width) div 2;

//ATop := (OurHeight – Height) div 2;

end;

inherited SetBounds(0, 0, Rect.Right-Rect.Left-5, Rect.Bottom-Rect.Top-5);

//inherited SetBounds(ALeft, ATop, AWidth, AHeight);

end;

TurboPascal: Efeito Matrix

0

Postado em : 19-07-2009 | By : Paulo H Oliveira | In : TurboPascal
Program MATRIX;
Uses Crt;
Var
col,lin,ql,cont,aux:integer;
letra:char;
Begin
Clrscr;
Repeat
col:=1+Random(79);
lin:=1+Random(23);
ql:= Random(10);
for cont:= lin to lin+ql do
Begin
if cont<24 then
Begin
letra:= chr(Random(255));
for aux:=1 to 2 do
Begin
if aux= 1 Then
Textcolor(10)
else
Textcolor(2);
gotoxy(col,cont);
write(letra);
delay(50);
end;
end;
end;
until keypressed;
end.

Program MATRIX;

Uses Crt;

Var

col,lin,ql,cont,aux:integer;

letra:char;

Begin

Clrscr;

Repeat

col:=1+Random(79);

lin:=1+Random(23);

ql:= Random(10);

for cont:= lin to lin+ql do

Begin

if cont<24 then

Begin

letra:= chr(Random(255));

for aux:=1 to 2 do

Begin

if aux= 1 Then

Textcolor(10)

else

Textcolor(2);

gotoxy(col,cont);

write(letra);

delay(50);

end;

end;

end;

until keypressed;

end.

Delphi: Várias dicas de impressão pelo TPrinter

0

Postado em : 19-07-2009 | By : Paulo H Oliveira | In : Delphi
if PrintDialog1.Execute then begin
vPrinterLinha := 0;
vFormulario := 66;
Canvas.Font.Name := ‘Courier New’;
Canvas.Font.Size := 8;
Printer.BeginDoc;
with Printer do begin
vPrinterLinha := 1;
vAltura := Canvas.TextHeight(‘A’);
cdsRel.Last;
cdsRel.First;
try
for vI := 1 to cdsRel.RecordCount do begin
vString := cdsRel.Fieldbyname(‘LinRel’).Value;
Canvas.TextOut(0, (vI – 1) * vAltura, vString);
inc(vPrinterLinha);
cdsRel.Next;
if vPrinterLinha > vFormulario – 3 then begin
Printer.NewPage;
vPrinterLinha := 1
end;
end;
finally
EndDoc;
end;
end;
end;
———————————————————————
Impressão com o TPrinter ( Via gerenciador de impressão)
Delphi
procedure TForm1.BitBtn1Click(Sender: TObject);
var
Linha:integer;
Tamanho:integer;
Coluna:integer;
begin
Printer.Orientation := poLandscape;
Printer.BeginDoc;
Printer.Canvas.Pen.Width := 5;
Printer.Canvas.Font.Name := ‘Times New Roman’;
Printer.Canvas.Font.Size := 10;
Linha := 20;
Coluna:= 20;
Tamanho := Printer.Canvas.TextWidth(‘a’);
Table1.First;
while not Table1.Eof do
begin
if Linha = 20 then
begin
Coluna := 20;
Printer.Canvas.TextOut(0,Linha,’Relação de Clientes’);
Linha := Linha – Printer.Canvas.Font.Height + 5 ;
Printer.Canvas.TextOut(Coluna,Linha,’Cod’);
Coluna:= Coluna + (Tamanho * 5 );
Printer.Canvas.TextOut(Coluna,Linha,’Nome’);
Coluna:= Coluna + (Tamanho * 30);
Printer.Canvas.TextOut(Coluna,Linha,’Endereço’);
Coluna:= Coluna + (Tamanho * 30);
Linha := Linha – Printer.Canvas.Font.Height + 5 ;
end;
Coluna := 20 ;
Printer.Canvas.TextOut(Coluna,Linha,Table1.FieldByName(‘Codigo’).AsString);
Coluna:= Coluna + (Tamanho * 5 );
Printer.Canvas.TextOut(Coluna,Linha,Table1.FieldByName(‘Nome’).AsString);
Coluna:= Coluna + (Tamanho * 30);
Printer.Canvas.TextOut(Coluna,Linha,Table1.FieldByName(‘End’).AsString);
Coluna:= Coluna + (Tamanho * 30);
Linha := Linha – Printer.Canvas.Font.Height + 5 ;
Table1.Next;
if Linha > Printer.PageHeight-20 then
Begin
Printer.NewPage;
Linha := 20;
end;
end;
Printer.EndDoc;
end;
———————————————————————-
procedure TFOrcamento.ImprimirClick(Sender: TObject);
Var
Linha, Coluna, Quantidade : Integer;
IndiceHorizontal, IndiceVertical, Total, TotalGeral : Real;
Codigo : String;
Begin
With IBQimprime do
begin
close;
sql.Clear;
sql.Add(‘ Select orcamento.*, orcamentodet.*, empresa.fantasia, empresa.fone, atendente.nome ‘ +
‘ from orcamento ‘ +
‘ left join orcamentodet on orcamento.id = orcamentodet.idorcamento ‘+
‘ left join empresa on orcamento.idempresa = empresa.id ‘ +
‘ left join atendente on orcamento.idatendente = atendente.id ‘+
‘ where orcamento.id = ‘ + QuotedStr(DBEdit2.Text));
open;
end;
Imprimir.Enabled := False;
Cursor := crHourGlass;
IndiceHorizontal := Printer.PageWidth / 960;
IndiceVertical := Printer.PageHeight / 792;
Printer.canvas.font.Name := ‘Arial’;
Printer.Orientation := poPortrait;
Printer.BeginDoc;
Linha := 0;
Quantidade := 0;
TotalGeral := 0;
With IBQimprime do
Begin
First;
While not eof do // para imprimir toda a tabela
Begin
With Printer.Canvas do
Begin
If Linha = 0 then
Begin
Printer.canvas.font.Name := ‘Monotype Corsiva’;
Printer.canvas.font.style:=[fsitalic];
Font.Size := 20;
Coluna := Round(15 * IndiceHorizontal);
TextOut(Coluna, Linha, IBQimprimeFANTASIA.text);
Coluna := Round(720 * IndiceHorizontal);
TextOut(Coluna, Linha, DateToStr(Now));
Linha := Linha + Round(23 * IndiceVertical);
Coluna := Round(250 * IndiceHorizontal);
Printer.canvas.font.Name := ‘Arial’;
Printer.canvas.font.style:=[];
Font.Size := 20;
TextOut(Coluna, Linha, ‘Emissao do Orçamento ‘);
Linha := Linha + Round(28 * IndiceVertical);
Font.Size := 9;
Coluna := 0;
TextOut(Coluna, Linha, ‘CÓDIGO’);
Coluna := Round(90 * IndiceHorizontal);
TextOut(Coluna, Linha, ‘QUANT’);
Coluna := Round(170 * IndiceHorizontal);
TextOut(Coluna, Linha, ‘VALOR’);
Linha := Linha + (Round(25 * IndiceVertical));
End;
Coluna := 0;
Codigo := IntToStr(IBQimprimeIDPRODUTO.Value);
TextOut(Coluna, Linha, Codigo);
Coluna := Round(90 * IndiceHorizontal);
TextOut(Coluna, Linha, floattostr(IBQimprimeQTDE.Value));
Total := IBQimprimeTOTAL1.Value;
TotalGeral := TotalGeral + Total;
Quantidade := Quantidade + 1;
Coluna := Round(170 * IndiceHorizontal);
TextOut(Coluna, Linha, FloatToStrF(Total, ffFixed, 10, 2));
Linha := Linha + Round(20 * IndiceVertical);
If Linha >= 600 then
Begin
Linha := 0;
Printer.NewPage;
End;
End;
IBQimprime.Next;
End;
End;
Printer.Canvas.Font.Size := 10;
Linha := Linha + Round(25 * IndiceVertical);
If Linha > 600 then
Printer.NewPage;
Coluna := 0;
Printer.Canvas.TextOut(Coluna, Linha, ‘QUANTIDADE TOTAL DE ÍTENS: ‘ + IntToStr(Quantidade));
Linha := Linha + Round(25 * IndiceVertical);
Printer.Canvas.TextOut(Coluna, Linha, ‘VALOR TOTAL: ‘ + FloatToStrF(TotalGeral, ffCurrency, 10, 2));
Printer.EndDoc;
Cursor := crDefault;
———————————————————————–
implementation
Uses Printers;
{$R *.DFM}
procedure TForm1.BtnScanPrintersClick(Sender: TObject);
begin
if Printer.PrinterIndex = -1 then
ShowMessage(‘Não há impressoras instaladas.’);
ListBox1.Items := Printer.Printers;
ListBox1.ItemIndex := Printer.PrinterIndex;
end;
procedure TForm1.Button1Click(Sender: TObject);
Var
I, Linha, HeightLine: Integer;
begin
Memo2.Lines.Clear;
// Zera a variável
Linha := 0;
// Verifica se tem alguma impressora instalada
if Printer.PrinterIndex = -1 then
Exit;
try
With Printer do
begin
if ListBox1.ItemIndex = -1 then
begin
ShowMessage(‘Lista de impressoras não disponível.’);
Exit;
end;
PrinterIndex := ListBox1.ItemIndex;
Printer.Title := ‘Impressão de Teste’;
BeginDoc;
Memo2.Lines.Add(‘Imprimindo…’);
// Calcula a altura da linha
HeightLine := Trunc(Printer.Canvas.TextHeight(‘My’)*1.1);
for I := 0 to Memo1.Lines.Count -1 do
begin
Canvas.TextOut(50, Linha, Memo1.Lines[I]);
// Calcula a altura da próxima linha
Linha := Linha + HeightLine;
// Se passou do final da página
if Linha >= Printer.PageHeight then
begin
Printer.NewPage;
Linha := 0;
end;
end;
// Termina Impressão
EndDoc;
Memo2.Lines.Add(‘Impressão finalizada com sucesso.’);
end;
except
ShowMessage(‘Erro ao tentar imprimir ou impressora não disponivel.’);
Memo2.Lines.Add(‘Impressão finalizada com erro.’);
end;
end;
————————————————————————
uses Printers;
begin
Printer.BeginDoc;
Printer.Canvas.TextOut(iColuna, iLinha, ‘texto a ser exibido’);
Printer.EndDoc;
end;

if PrintDialog1.Execute then begin

vPrinterLinha := 0;

vFormulario := 66;

Canvas.Font.Name := ‘Courier New’;

Canvas.Font.Size := 8;

Printer.BeginDoc;

with Printer do begin

vPrinterLinha := 1;

vAltura := Canvas.TextHeight(‘A’);

cdsRel.Last;

cdsRel.First;

try

for vI := 1 to cdsRel.RecordCount do begin

vString := cdsRel.Fieldbyname(‘LinRel’).Value;

Canvas.TextOut(0, (vI – 1) * vAltura, vString);

inc(vPrinterLinha);

cdsRel.Next;

if vPrinterLinha > vFormulario – 3 then begin

Printer.NewPage;

vPrinterLinha := 1

end;

end;

finally

EndDoc;

end;

end;

end;

Read the rest of this entry »

Javascript: Executar um EXE

0

Postado em : 19-07-2009 | By : Paulo H Oliveira | In : Javascript
<script TYPE=”text/javascript”>
function Executar(Servidor, Caminho, DirTrabalho) {
var param = “/inc/TerminalService/rodar.asp?Servidor=”+Servidor+”&Caminho=”+escape(Caminho)+”&DirTrabalho=”+escape(DirTrabalho);
//        alert(Caminho);
window.open(param,’_blank’,”);
}</script>
<a HREF=”java script:Executar(‘SERVIDOR’, ‘C:/Terminal/arquivo.exe’,”);”>Teste</a>

<script TYPE=”text/javascript”>

function Executar(Servidor, Caminho, DirTrabalho) {

var param = “/inc/TerminalService/rodar.asp?Servidor=”+Servidor+”&Caminho=”+escape(Caminho)+”&DirTrabalho=”+escape(DirTrabalho);

//        alert(Caminho);

window.open(param,’_blank’,”);

}</script>

<a HREF=”java script:Executar(‘SERVIDOR’, ‘C:/Terminal/arquivo.exe’,”);”>Teste</a>

Delphi: Funções Matemáticas

0

Postado em : 19-07-2009 | By : Paulo H Oliveira | In : Delphi

Funções Matematicas do Delphi

O artigo irá mostrar as principais funções matemáticas utilizadas tanto pelo Delphi quanto no Kylix. Para quem é amante da matemática e utiliza o recurso da informática (na programação) para calcular, não pode deixar de ler este artigo que contém várias funções para cálculo, tais como: cáculo de ângulos, médias e muito mais.

Mas, porque deste artigo, se as mesmas podem ser encontradas no Help do Delphi? Ai é que está! As definições do help estão em inglês e para uma pessoa que não entenda este idioma ficaria difícil descobrir para que servem determinadas funções. Por isso este artigo, que irá facilitar a vida de milhares de programadores que têm dificuldade com o inglês. Agora deixamos de muita convera e vamos ao que interessa. Confira as principais funções com suas respectivas definições e como declará-las.

Read the rest of this entry »

Fireworks: Efeito pintura à óleo

0

Postado em : 19-07-2009 | By : Paulo H Oliveira | In : Fireworks
É super fácil
1°-Abra sua imagem,dê ctrl + J para duplicar.
Mude de normal para darken.
Vá em filter>blur>glaussian blur e ponha 50,3
2°-Irá perceber um efeito super rápido.

É super fácil

1°-Abra sua imagem,dê ctrl + J para duplicar.

Mude de normal para darken.

Vá em filter>blur>glaussian blur e ponha 50,3

2°-Irá perceber um efeito super rápido.

Delphi: QuickReport Marca d’agua

1

Postado em : 19-07-2009 | By : Paulo H Oliveira | In : Delphi
Esta dica nos mostra como colocar uma imagem de fundo na página, simulando o efeito marca d’água. Para tal, declaremos a procedure:
procedure ImprimeBitMap(Cnv: TCanvas; BitMap: TBitMap; R: TRect);
var
Info : PBitMapInfo;
InfoSize : DWORD;
Image : Pointer;
ImageSize : DWORD;
begin
with BitMap do
begin
GetDIBSizes(Handle, InfoSize, ImageSize);
GetMem(Info, InfoSize);
try
Getmem(Image, ImageSize);
try
GetDIB(Handle, Palette, Info^,Image^);
with Info^.bmiHeader do
StretchDIBits(Cnv.Handle, R.Left, R.Top,
R.Right – R.Left, R.Bottom – R.Top,
0, 0, biWidth, biHeight, Image,
Info^, DIB_RGB_COLORS, SRCAND);
finally
FreeMem(Image, ImageSize);
end;
finally
FreeMem(Info, InfoSize);
end;
end;
end;
Antes de usá-la, crie/copie uma imagem de tonalidade clara para a unidade C:, e no evento AfterPrint da última banda existente no seu relatório (normalmente PageFooter), faça:
procedure TForm1.PageFooterBand1AfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
const
Imagem = ‘c:\figura.bmp’;
//altere aqui o nome/caminho da sua imagem
var
BitMap : TBitMap;
R      : TRect;
X, Y   : integer;
begin
BitMap := TBitMap.Create;
try
if not FileExists(Imagem) then
begin
messagebox(handle,
‘O arquivo de imagem não existe ou foi removido !’,
‘Atenção’, MB_OK or MB_ICONWARNING);
SetActiveWindow(Application.Handle);
end
else
begin
BitMap.LoadFromFile(Imagem);
with QuickRep1.QRPrinter do
begin
Y := YPos(PaperLengthValue) div 6;
X := XPos(PaperWidthValue) div 4;
R := Rect(X, 2 * Y, 3 * X, 4 * Y);
ImprimeBitMap(Canvas, BitMap, R);
end;
end;
finally
BitMap.Free;
end;
end;
Agora é só rodar e testar! ;-)
Só lembrando que, como qualquer outro código nos eventos Befor e AfterPrint, não funciona em Design Time.

Esta dica nos mostra como colocar uma imagem de fundo na página, simulando o efeito marca d’água. Para tal, declaremos a procedure:

Read the rest of this entry »

Ajax: Autosuggest com PHP

0

Postado em : 19-07-2009 | By : Paulo H Oliveira | In : Ajax, PHP
Auto-sugestão de busca (sem banco de dados) utilizando AJAX. O exemplo pode ser utilizado com banco de dados facilmente, bastando vincular a linha de chamada com o indice enviado pelo GET do AJAX.
Arquivo ajax.php:
<html>
<head>
<script>
var xmlHttp
function showHint(str)
{
if (str.length==0)
{
document.getElementById(“txtHint”).innerHTML=”";
return;
}
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert (“Your browser does not support AJAX!”);
return;
}
var url=”result. php”;
url=url+”?q=”+str;
url=url+”&sid=”+Math.random();
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open(“GET”,url,true);
xmlHttp.send(null);
}
function stateChanged()
{
if (xmlHttp.readyState==4)
{
document.getElementById(“txtHint”).innerHTML=xmlHttp.responseText;
}
}
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject(“Msxml2.XMLHTTP”);
}
catch (e)
{
xmlHttp=new ActiveXObject(“Microsoft.XMLHTTP”);
}
}
return xmlHttp;
} </script>
</head>
<body><form>
First Name:
<input type=”text” id=”txt1″
onkeyup=”showHint(this.value)”>
</form><p>Suggestions: <span id=”txtHint”></span></p> </body>
</html>
Arquivo result.php:
<?php
// Fill up array with names
$a[]=”Anna”;
$a[]=”Brittany”;
$a[]=”Cinderella”;
$a[]=”Diana”;
$a[]=”Eva”;
$a[]=”Fiona”;
$a[]=”Gunda”;
$a[]=”Hege”;
$a[]=”Inga”;
$a[]=”Johanna”;
$a[]=”Kitty”;
$a[]=”Linda”;
$a[]=”Nina”;
$a[]=”Ophelia”;
$a[]=”Petunia”;
$a[]=”Amanda”;
$a[]=”Raquel”;
$a[]=”Cindy”;
$a[]=”Doris”;
$a[]=”Eve”;
$a[]=”Evita”;
$a[]=”Sunniva”;
$a[]=”Tove”;
$a[]=”Unni”;
$a[]=”Violet”;
$a[]=”Liza”;
$a[]=”Elizabeth”;
$a[]=”Ellen”;
$a[]=”Wenche”;
$a[]=”Vicky”;//get the q parameter from URL
$q=$_GET["q"];//lookup all hints from array if length of q>0
if (strlen($q) > 0)
{
$hint=”";
for($i=0; $i<count($a); $i++)
{
if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))
{
if ($hint==”")
{
$hint=$a[$i];
}
else
{
$hint=$hint.” , “.$a[$i];
}
}
}
}
// Set output to “no suggestion” if no hint were found
// or to the correct values
if ($hint == “”)
{
$response=”no suggestion”;
}
else
{
$response=$hint;
}
//output the response
echo $response;
?>

Auto-sugestão de busca (sem banco de dados) utilizando AJAX. O exemplo pode ser utilizado com banco de dados facilmente, bastando vincular a linha de chamada com o indice enviado pelo GET do AJAX.

Read the rest of this entry »