Ver Versão Completa : PHP - Excel + PHP, Dúvida
Cloud
27-10-2008, 03:45 PM
Vocês sabem (alguma alma penada aqui).
Qual classe usaria em PHP para trabalhar juntamente do EXCEL?
A situação é a seguinte:
1 - um "Banco de dados" em excel (várias planilhas em vários arquivos)
2 - Necessidade de buscar nelas e montar uma lista de 'materiais'.
Solução:
Fazer um sistema que:
1 - organize todas as planilhas em uma só (pensei em juntar todas nelas em uma pasta e mandar um excel juntar todas as planilhas daquela pasta, pensei em criar um botão de "atualizar" pro excel juntar elas).
2 - criar uma rotina no PHP que busque no Excel esses dados. Então o usuário acessa via intranet a 'página', faz a busca e vai marcando os itens que quer acrescentar na busca, exemplo
usuário digita: "ave" e dá procurar.
o sistema vai buscar na coluna que eu programei (coluna dos nomes dos materiais) e vai listar todas que tenham a palavra "ave"
então ele vai clicar nela e dar continuar.
Assim irá funcionar até o usuário clicar em [FIM]. Aí o sistema retornará para ele uma planilha em Excel com todos os materiais selecionados.
A busca funcionará assim:
Busca na coluna X (nomes dos materiais) e no clicar de ok do usuário será adicionado toda a linha correpontende ao nome de material selecionado.
Sabem qual classe usar?
tem idéia da lógica para montar?
Abraços
CCV_HEALbra
27-10-2008, 03:58 PM
bom...pq excel?
algo específico?
excel não funciona como bd..mas para sua felicidade tem como ler o excel como ler o .txt também!!
mas eu aconselho importar o arquivo do excel para o BD MySQL, caso seja possível....se vc puder fazer isso fica muuuito mais fácil!!
caso vc obrigatoriamente tenha q usar o excel me fala aqui q ai a gente tenta montar uma classe como vc falou!!
Cloud
27-10-2008, 04:16 PM
bom...pq excel?
algo específico?
excel não funciona como bd..mas para sua felicidade tem como ler o excel como ler o .txt também!!
mas eu aconselho importar o arquivo do excel para o BD MySQL, caso seja possível....se vc puder fazer isso fica muuuito mais fácil!!
caso vc obrigatoriamente tenha q usar o excel me fala aqui q ai a gente tenta montar uma classe como vc falou!!
Eu concordo contigo plenamente e também preferiria trabalhar com MySQL
Porém a infra estrutura não permite isso pela forma que os documentos são enviados do cliente em formato do excel e de todo modo a resposta tem de ser um XLS (porque o cliente sõ recebe o XLS + uma versão impressa) e o cliente é um cliente grande, digo emrpesa grande (Vale) aí eles são cheios de frescuras.
Então daí meu problema em não usar o MySQL
Tem todo um cabeçalho padrão nas 5 primeiras linhas do Excel, aí tenho de montar esse cabeçalho e salvar logo após das 5 linhas a busca do pessoal.
No caso do 'BD' armazenado em Excel não precisaa (lógico) do cabeçalho, então o que farei no caso do excel?
Farei um 'aplicativo' via VBA que pegue todas as linhas dos documentos da pasta X (a ser definida) a partir da quinta linha e copie.
Vou linkar isso a um botão 'Atualizar' na pagina em PHP .
Está entendendo mais ou menos o que estou precisando?
Se puder ajudar tento algum modo de te agradecer hehehe (e sem viadagem hehehe)
Abraço
CCV_HEALbra
27-10-2008, 04:29 PM
pelo que eu entendi eh o seguinte...chega uma planília pra ti em excel..
vc vai abrir ela no php..vai tratar, trazer a busca desejada e voltar pro excel??
é isso mesmo??
bom...o duro ai é a busca mas nada q uma busca em array nao resolva!!
se nao me engano ao usar o fopen ele irá trazer o resultado em um vetor...depois busque a palavra no vetor pelo que deseja!!
nao sei se vc poderá usar coisas boas nessa busca como no SQL q se pode usar %, _ e talz!!
depois disso é só montar outra planilha com o header(''); sendo especificado para um .xls e pá!!
se for isso me fala q a gente brinca com os códigos!!
Cloud
27-10-2008, 04:31 PM
pelo que eu entendi eh o seguinte...chega uma planília pra ti em excel..
vc vai abrir ela no php..vai tratar, trazer a busca desejada e voltar pro excel??
é isso mesmo??
bom...o duro ai é a busca mas nada q uma busca em array nao resolva!!
se nao me engano ao usar o fopen ele irá trazer o resultado em um vetor...depois busque a palavra no vetor pelo que deseja!!
nao sei se vc poderá usar coisas boas nessa busca como no SQL q se pode usar %, _ e talz!!
depois disso é só montar outra planilha com o header(''); sendo especificado para um .xls e pá!!
se for isso me fala q a gente brinca com os códigos!!
Sim é exatamente isso.
No caso PHP é justamente isso!
Abraço
CCV_HEALbra
27-10-2008, 04:37 PM
ok!!!
vou pesquisar algo e te trago aqui!1
ja trabalhei com criação de xls..nao tem segredo...a diferença da sua aplicação é a busca q fica meio dificil e empeteca o trem!!
ahhaha
uma coisa q temos q ver tb eh o uso de processamento e tempo!!
vc falou q são coisas grandes...então tem q funcionar bem...
guenta ai um dia no máximo q eu vneho com o esquema pra gente discutir e destrinxar!!
xD
Cloud
27-10-2008, 04:46 PM
Pô cara valeuzão eu guento sim hehehehe
vou ficar eternamente grato hehe e ainda dar um jeito de agradecer!
valeu mesmo.
CCV_Pinto
28-10-2008, 11:53 PM
bom.. usando um pouco de google eu achei como ler um excel:
http://www.ustrem.org/en/articles/reading-xls-with-php-en/
aki fala para usar essa biblioteca: http://sourceforge.net/project/showfiles.php?group_id=99160
basicamente ela fornece uma classe Spreadsheet_Excel_Reader com a qual vc terá um array de "sheet" (folhas do excel)
cada sheet te dá um array de "rows".. e cada row um array de "células" (exemplos do código vc pode ver no link q passei)
agora para escrever é mais dificil (se vc quiser juntar tudo num mesmo excel terá q criar um excel único certo?)
http://www.bettina-attack.de/jonny/view.php/projects/php_writeexcel/
talvez fosse o caso de vc fazer testes em escala para ver se o desempenho procurando em diversos "excels" separados é ruim...
apesar q, se eu for chutar... essa busca... mesmo num único excel, vai ficar bem lenta... (claro q depende do número de linhas e de colunas)
uma coisa a se pensar é q se vc for ler os excels para juntá-los, o leitor e o escritor do excel terão q ser compatíveis...pq se houver uma fórmula no excel, ela precisará ser mantida...
então recomendo usar outra coisa para juntar os "excels"... como VBA.. e testar essa classe do reader... mas eu acho q mesmo com um unico excel, a coisa vai ficar lenta... (depende claro do número de linhas e colunas)
vc poderia tentar uma coisa como:
dependendo do formato da sua busca, vc pode fazer coisas como:
criar um excel para cada letra do alfabeto (por exemplo, "a.xls" vai conter as linhas q começam com a) ... assim se a sua busca vai usar o "começo" da palavra, vc já dividiu as possibilidades em arquivos menores...
mas isso é trabalhoso e é bem provável q a busca tenha q olhar "o meio" da palavra tb... soh digo para te dar algumas idéias diferentes
abraços
Cloud
29-10-2008, 08:11 AM
Pinto, eu já até conhecia essa classe externa, mas eu ao menos não consegui faze-la funcionar.
Se tiver a boa vontade ou curiosidade de testar e funcionar me dá as dicas por favor.
Outro ponto que você relatou foi a questão de juntar os .XLS, meu raciocinio para resolver esse problema foi o seguinte:
- Crio uma planilha no excel para servir de "banco de dados" (as aspas estão pelo motivo óbvio Excel =/= BD, MAS... a gente usa as ferramentas que pode né...), nessa planilha eu faço uma rotina em VBA (Visual Basic For Aplications) que junte as planilhas todas da pasta nela.
Aí vem o PHP, num serviço remoto (HP na intranet) que o usuário acessar irá ter a página de busca, onde procurará pelo nome do material, o sistema então buscará nessa planilha na coluna "X" (que é coluna de nomes de materiais).
O usuário seleciona a coluna que ele quer e então o sistema salva a linha toda correspondente em outra planilha ou mesmo numa Sheet.
Quando o usuário terminar a busca e clicar em FIM será gerado para o usuário um .XLS com todo o resultado da busca dele organizado linha a linha a partir da quinta linha, visto que antes é o cabeçalho e é padrão.
CCV_HEALbra
29-10-2008, 09:42 AM
Bom Cloud!!
aqui tá um que eu acabie de fazer!!
eu tinha uma idéia de como abrir um arquivo..mas nunca tentei com xls ou csv..
ai agora tentei com csv e deu o que eu tinha lhe falado!!
eu comentei tudinho para ver se vc entende o q eu tentei passar!!
<?php
//Abre o Arquivo
$arq = fopen('teste.CSV', 'r');
//Definindo o I para começar um vetor na mensagens!!
$i=0;
bom..ai eu criei um arquivo teste.csv aqui com alguns dados espalhados e coloquei na mesma pasta para testar!!
//Lê ele
//feof testa para ver se chegou no fim do arquivo por ponteiros!
while(!feof($arq)) {
//fgets retorna a linha ande o ponteiro está
$linha = fgets($arq);
//Constroi o array
//Aqui vamos ver a definir as colunas do array
$qnt_col = explode(';',$linha);
//Quantidade máxima de colunas!
if(count($qnt_col)>$max)
$max = count($qnt_col);
for($y=0;$y<count($qnt_col);$y++)
//gravando
//criando uma matriz
$msg[$i][$y] = $qnt_col[$y];
//incrementando o I
$i++;
};
//Fecha o arquivo
fclose($arq);esse ai eh o laço que vai trazer todos os dados do CSV para a matriz!!
eu comentei tudo ai...xD
eu coloquei no código também a cada passo um laço para visualizar cada passo!
o desse ai tá aqui:
//Se você plotar isso vai ver que ficou uma matriz com os registros!!
/*
for($t=0;$t<$i;$t++) {
for($x=0;$x<$max;$x++) {
echo $msg[$t][$x].'-';
}
echo '<br />';
}
*/se vc reparar bem ele vai só tacar na tela os dados com as colunas separadas por - e as linhas por <br>
vamos agora fazer a busca!!
eu não usei um form!! só defini a variável!!
//Vamos pesquisar agora!!
//Usando uma variável fixa!!
$nome = 'eric';
//Para fazer um novo array só com a busca teremos que declarar uma variável que só irá incrementar caso ela seja relacionada no IF
$v=0;vou usar o laço de repetição que usei pra visualizar para mostrar tudo..porém em vez de mostrar ele vai pesquisar!!
//Aqui ele entra na matriz passo por passo e verifica se alguma linha tem a palavra nome!!
//Caso tenha ele incrementa o $V e passa a linha toda para a outra matriz!
for($t=0;$t<$i;$t++) {
for($x=0;$x<$max;$x++) {
if($msg[$t][$x] == $nome) {
$busca[$v] = $msg[$t];
$v++;
}
}
}veja que tudo vai do mesmo laço de repetição..sempre o mesmo..muda detalhes!!
eu vou usa o laço de novo pra visualizar como ficou a busca!!
//Se você plotar isso vai ver que ele pegou somente a linha que tem a palavra nome!!
/*
for($t=0;$t<$v;$t++) {
for($x=0;$x<$max;$x++) {
echo $msg[$t][$x].'-';
}
echo '<br />';
}
*/uma coisa q nao fiz foi tratar caso não tenha valor na busca viu?? caso nao tenha resultado...isso vc faz daí!!
hahaha!!!
agora uma parte q eu me embananei e não fiz tudo por falta de tempo!!
para cria um outro CSV!!
eu usei o mesmo laço..porém ele ficou tudo em uma unica coluna!!
só falta ver esse errinho...
//Vamos criar agora um arquivo CSV
$arquivo = fopen('teste2.CSV',"a+");
for($t=0;$t<$v;$t++) {
for($x=0;$x<$max;$x++) {
fwrite($arquivo, $msg[$t][$x]);
}
echo '<br />';
}
fclose($arquivo);
?>
esse errinho ai eu acho q dá pra concertar de boa!!
só saber como mexe no ponteiro de colunas do excel!!
mas fora isso dá pra ter uma boa noção do que fazer!!
tipo...tenta ai e vê que que você acha!!
se não entender posta aqui!!
mas tem um trem...foi igual o pinto falou...tem que ver velocidade!!
código completo:
<?php
//Abre o Arquivo
$arq = fopen('teste.CSV', 'r');
//Definindo o I para começar um vetor na mensagens!!
$i=0;
//Lê ele
//feof testa para ver se chegou no fim do arquivo por ponteiros!
while(!feof($arq)) {
//fgets retorna a linha ande o ponteiro está
$linha = fgets($arq);
//Constroi o array
//Aqui vamos ver a definir as colunas do array
$qnt_col = explode(';',$linha);
//Quantidade máxima de colunas!
if(count($qnt_col)>$max)
$max = count($qnt_col);
for($y=0;$y<count($qnt_col);$y++)
//gravando
//criando uma matriz
$msg[$i][$y] = $qnt_col[$y];
//incrementando o I
$i++;
};
//Fecha o arquivo
fclose($arq);
//Se você plotar isso vai ver que ficou uma matriz com os registros!!
/*
for($t=0;$t<$i;$t++) {
for($x=0;$x<$max;$x++) {
echo $msg[$t][$x].'-';
}
echo '<br />';
}
*/
//Vamos pesquisar agora!!
//Usando uma variável fixa!!
$nome = 'eric';
//Para fazer um novo array só com a busca teremos que declarar uma variável que só irá incrementar caso ela seja relacionada no IF
$v=0;
//Aqui ele entra na matriz passo por passo e verifica se alguma linha tem a palavra nome!!
//Caso tenha ele incrementa o $V e passa a linha toda para a outra matriz!
for($t=0;$t<$i;$t++) {
for($x=0;$x<$max;$x++) {
if($msg[$t][$x] == $nome) {
$busca[$v] = $msg[$t];
$v++;
}
}
}
//Se você plotar isso vai ver que ele pegou somente a linha que tem a palavra nome!!
/*
for($t=0;$t<$v;$t++) {
for($x=0;$x<$max;$x++) {
echo $msg[$t][$x].'-';
}
echo '<br />';
}
*/
//Vamos criar agora um arquivo CSV
$arquivo = fopen('teste2.CSV',"a+");
for($t=0;$t<$v;$t++) {
for($x=0;$x<$max;$x++) {
fwrite($arquivo, $msg[$t][$x]);
}
echo '<br />';
}
fclose($arquivo);
?>
qualquer coisa me manda pm q eu te adiciono no msn tb!!
xD
Cloud
29-10-2008, 11:12 AM
***** valeu vou estudar isso testar e te envio umas PMs e acrescento infos aqui. bora pra luta.
CCV_HEALbra
29-10-2008, 12:39 PM
//Vamos criar agora um arquivo CSV
$arquivo = fopen('teste2.CSV',"a+");
for($t=0;$t<$v;$t++) {
for($x=0;$x<$max;$x++) {
fwrite($arquivo, $msg[$t][$x].';');
}
echo '<br />';
}
fclose($arquivo);
achei um trem legal sem querer!!
hahaha...ele adiciona outra linha caso esteja criado o arquivo!!
ou seja..pra não pesar o sistema vc criar aos poucos!!
mas tou com outro problema!!
se tiver mais de um registro ele não tá pegando direito!!
CCV_Pinto
29-10-2008, 09:31 PM
e uma coisa, como é busca, ao invés de comparar a célula do excel com o termo exato da busca, acho q é melhor usar uma função similar a "contains" (no caso, se buscarem por "eric", mas a célula valer "ericViado" acho correto q essa coluna seja incluída)
rápida pesquisada no manual do php por funções de comparação de string, achei a strpos (http://www.php.net/strpos), que retorna false caso a string exterior não contenha a string interior
if(strpos($celula, $termoBusca)){
// adicionar celula
}
off: tinha eskecido q era vc mon... tá viajando bastante para Paris? po q bacana... eu achava q vc tinha ido para Alemanha....
mas enfim.. ano q vem vou trabalhar 4 meses em Paris: um veterano meu da Poli q fez diploma duplo na École Centrale de Paris começou trabalhando nessa empresa uns 2 anos atrás, ae ele voltou para São Paulo e me ofereceu esse estágio com período em Sampa e um período em Paris... achei melhor q o próprio duplo diploma dele :p (esses duplos diplomas exigem no minimo 1 ano e meio fora do país... muito tempo :()
abraços
CCV_HEALbra
29-10-2008, 11:08 PM
me oferece também pinto!!
qd vc voltar!!
kkk
Cloud
30-10-2008, 09:03 AM
e uma coisa, como é busca, ao invés de comparar a célula do excel com o termo exato da busca, acho q é melhor usar uma função similar a "contains" (no caso, se buscarem por "eric", mas a célula valer "ericViado" acho correto q essa coluna seja incluída)
rápida pesquisada no manual do php por funções de comparação de string, achei a strpos (http://www.php.net/strpos), que retorna false caso a string exterior não contenha a string interior
if(strpos($celula, $termoBusca)){
// adicionar celula
}
Valeu vou dar uma estaduda junto dos passados pro HeallBra e encho o saco de vocês!!! via PM e/ou por aqui
off: tinha eskecido q era vc mon... tá viajando bastante para Paris? po q bacana... eu achava q vc tinha ido para Alemanha....
Alemanha não pô! hhehehe
mas enfim.. ano q vem vou trabalhar 4 meses em Paris: um veterano meu da Poli q fez diploma duplo na École Centrale de Paris começou trabalhando nessa empresa uns 2 anos atrás, ae ele voltou para São Paulo e me ofereceu esse estágio com período em Sampa e um período em Paris... achei melhor q o próprio duplo diploma dele :p (esses duplos diplomas exigem no minimo 1 ano e meio fora do país... muito tempo :()
abraços
Quando for para Paris me avisa, aí te chamo lá pra casa :wub:
hehe náááá dependendo da época dte chamo pra ver o maior de paris jogar (e você vai gostar porque é verde) hehehe o ASSE, melhor time da frança (heheh esqueça do Lyon!) heheh
Abraço
CCV_HEALbra
30-10-2008, 09:12 AM
pow..tu eh programador php em paris?
arruma uma vaga pra mim veio!!
Cloud
30-10-2008, 09:56 AM
pow..tu eh programador php em paris?
arruma uma vaga pra mim veio!!
hehehe mas não sou propriamente programador e muito menos PHP por isso precisava de sua ajuda hehehe.
minha formação é engenharia e mexo com desenvolvimento, mas onde mora?
Estou atrás de programadores mas para BH.
CCV_HEALbra
30-10-2008, 10:24 AM
Goiânia!!
:(
pow cara..me add no msn ai pra gente tc!!!
vo te mandar via pm!
Cloud
30-10-2008, 11:10 AM
Goiânia!!
:(
pow cara..me add no msn ai pra gente tc!!!
vo te mandar via pm!
Eu quase nunca entrarei no MSN
Cloud
03-11-2008, 02:41 PM
Oi amigos!@
Volto com uma nova dúvida!
Vocês conhecem a funçao Split? sabem como usar?
li que com ela daria pra eu procurar palavras como:
joão carlos (eles separa as palavras e tal)
e tem outra função de busca no PHP que a cada digitada vai aparecendo palavras possiveis, exemplo
vioce digita "j", sistema retorna:
joão, joselito, joanto, jão.
Digita então a letra 'o', ficando "jo", sistema automaticamente retorna:
João, Joselito e joanto.
Digita então 's' ficando "jos", sistema retorna:
Joselito.
Sabem como fazer?
CCV_HEALbra
03-11-2008, 03:05 PM
o split vai fazer uma variável q tem duas palavras virar um array de duas chaves não?
tipo assim: João Carlos = $a[1] = João e $a[2] = Carlos...
pelo q eu vi é isso!!
o engraçado que depois q vc postou essa dúvida aqui apareceu um trampo pra mim q eu devo criar o xls!!
HAHAHAHAHA
exportação de arquivos..não fiz ainda..mas qd terminar eu posto aqiu!!
http://br2.php.net/manual/pt_BR/function.split.php
sobre a outra função eu pensava que não era PHP e sim Ajax..mas vou pesquisar aqui e já venho com a resposta!!
Cloud
03-11-2008, 04:03 PM
Sim justamente ele forma como se fossem duas palavras assim as testa juntas e separada.
Se conseguir algo dá um Help que o meu deu erro aqui haurhaur
Cloud
10-11-2008, 10:04 AM
Bom tudo funcionou direitinho o que não consigo fazer é o sistema de busca interagir com o clique, tem mais alguma dica Heal?
CCV_HEALbra
10-11-2008, 10:10 AM
com o clique?
como assim?
desculpa...além de ter esquecido, eu tive uma semana cheia!! mas resolvo agora pra ti!!
hahah
tou meio folgado no serviço..
não entendi..é aquela dúvida do nome né?
pesquisar também o joão cláudio e não só o cláudio!!
CCV_HEALbra
11-11-2008, 11:36 AM
Opa cloud....blz?w
bom...o que eu gosto do PHP q tem um site no qual os nego taca exemplo..hehehe
em todas as funções existentes..muito massa...
eu tava pesquisando aqui e achei 2 funções..porém eu não consegui implementar..acho q foi falta de tempo msm!
mas dá um look nelas:
http://br2.php.net/manual/pt_BR/function.in-array.php
http://br2.php.net/manual/pt_BR/function.array-search.php
o forearch eh = for praticamnete!
ambos mostram (isso nos exemplos abaixo)
eu não vi algo que faz igual o SQL..
q coloca os %% no like e procura de qualquer jeito no campo...
porém eu acho q essas duas ai pode te ajudar!!!
se não a gente vai ter q usar ER!!!
xD
Cloud
11-11-2008, 05:26 PM
é um troço que a cada vez que adiciona uma nova letra na palavra procurada, ele automaticamente já via procurando.
CCV_HEALbra
11-11-2008, 09:11 PM
como?
não entendi...vc quer q ele pesquise letra por letra?
q tal usarmos ER?
Cloud
13-11-2008, 08:06 AM
Aí que está, não estou conseguindo fazer ele atualizar a todo o momento na busca.
Sabe como?
Sim, seria buscar a cada nova letra adicionada no campo de busca.
CCV_HEALbra
13-11-2008, 08:42 AM
http://elcio.com.br/ajax/autocompletar/
é isso??
Cloud
13-11-2008, 10:02 AM
Isso!!!
Justamente isso!!!!
Consegue juntar isso ao código?
how?!?!
CCV_HEALbra
13-11-2008, 11:39 AM
HAHAHAHAHA MEU IRMÃO!!
depois dessa tu vai ter q me arrumar um trampo em paris!!
xD
eu tinha conseguindo só com BD..ai eu fui tentando aqui e até q saiu!!
xD
lembrando que a unica parte q alterei e criei foi o busca.php..o resto é do cara do link!!
vc vai criar o arquivo teste.php:
<style>
.completeaqui,div#completando{
width:300px;
}
</style>
<script>
window.onload=function() {
ac_registraJSON(document.forms[0],"q","busca.php?q=")
}
</script>
<link rel="stylesheet" href="autocompletar.css" />
<script src="events.js"></script>
<script src="xmlhttp.js"></script>
<script src="autocompletar.js"></script>
<form id="busca" class="autocompletar" action="teste.php">
<input name="q" class="completeaqui" autocomplete="off">
<div style="display: none;" id="completando"></div>
<input value="Procurar" type="submit">
</form>
não fiz mais nada do que adicionar os includes do nego lá e pegar o mesmo form!!
vc viu q tem alguns includes né?
vamos à eles:
autocompletar.css
form.autocompletar{
position:relative;
top:0;
left:0;
}
div#completando{
position:absolute;
top:1.5em;
left:0px;
background:white;
}
div#completando ul{
margin:0 1px;padding:0;
border:1px solid black;
list-style:none;
}
div#completando li{display:inline}
div#completando a{
display:block;
padding:1px 5px;
}
div#completando a:hover,div#completando li.selecionado a{
background:blue;
color:white;
}
events.js
/*
Tratamento de eventos crossbrowser
Baseado em http://simon.incutio.com/archive/2003/11/06/easytoggle
Elcio Ferreira - 2004 - http://elcio.locaweb.com.br
*/
function addEvent(obj, evType, fn){
if(obj.addEventListener)obj.addEventListener(evTyp e,fn,true)
if(obj.attachEvent)obj.attachEvent("on"+evType,fn)
}
function getSource(e){
if(typeof e=='undefined')var e=window.event;
var source=typeof e.target!='undefined'?e.target:typeof e.srcElement!='undefined'?e.srcElement:true
if(source.nodeType == 3)source=source.parentNode;
return source
}
xmlhttp.js
try{
xmlhttp = new XMLHttpRequest();
}catch(ee){
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch(E){
xmlhttp = false;
}
}
}
autocompletar.js
//Variáveis Globais
ac_idx=0
ac_old=""
ac_showing=false
//Registra o autocompletar
function ac_registra(formulario,inputname,funcao){
ac_campo=formulario.elements[inputname]
addEvent(ac_campo, "keyup", ac_up)
addEvent(ac_campo, "keypress", ac_mudou)
addEvent(ac_campo, "focus", ac_focus)
addEvent(ac_campo, "blur", ac_blur)
ac_pegaLista=funcao
}
//Registra o autocompletar com um endereço Ajax/JSON
function ac_registraJSON(formulario,inputname,endereco){
ac_JSON=endereco
ac_registra(formulario,inputname,ac_getJSON)
}
//Função para obter o JSON
function ac_getJSON(t,func){
ac_f=func
xmlhttp.open("GET", ac_JSON+escape(t),true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4)
ac_f(eval(xmlhttp.responseText))
}
xmlhttp.send(null)
}
//Monta a lista a partir de um Array
function ac_fazLista(t){
ac_Lista=t
var ret="<ul>"
for(var i=0;i<ac_Lista.length;i++)
ret+="<li"+(i==ac_idx?' class="selecionado"':'')+
"><a href='javascript:ac_completa("+i+")'>"+
ac_getHTML(ac_Lista[i])+"</a></li>"
ret+="</ul>"
document.getElementById("completando").innerHTML=ret
}
//Obtém o texto do item da lista
function ac_getText(i){return typeof(i)=="string"?i:i[1]}
//Obtém o HMTL do item da lista
function ac_getHTML(i){return typeof(i)=="string"?i:i[0]}
//Atualiza a lista de acordo com o conteúdo do campo
function ac_mudado(){
ac_texto=ac_campo.value
if(ac_old!=ac_texto)ac_idx=0
ac_old=ac_texto
setTimeout('ac_pegaLista(ac_texto,ac_fazLista)',10 0)
}
//Esconde a lista
function ac_some(){
ac_showing=false
try{document.getElementById("completando").style.display="none"}catch(e){}
}
//Mostra a lista
function ac_aparece(){
ac_showing=true
try{
document.getElementById("completando").style.display="block"
}catch(E){
var d = document.createElement("div");
d.setAttribute("id","completando")
ac_campo.parentNode.appendChild(d)
}
}
//Clique no completar
function ac_completa(l){
try{
ac_texto=ac_campo.value=ac_Lista[l]
ac_campo.focus()
setTimeout('ac_aparece()',110)
ac_mudado()
}catch(e){}
}
//Controla o índice do item selecionado
function ac_chItem(kCode){
ac_idx+=kCode-39
if(ac_idx<0)ac_idx=ac_Lista.length-1
if(ac_idx>ac_Lista.length-1)ac_idx=0
ac_mudado()
}
/* Eventos no textbox: */
//KeyPress
function ac_mudou(e){
if(e.keyCode==40 || e.keyCode==38 || e.keyCode==13){
if(e.keyCode!=13){
if(!ac_showing)ac_aparece()
ac_chItem(e.keyCode)
}else{
if(ac_Lista[ac_idx]==ac_campo.value || ac_Lista.length==0)return true
if(ac_showing)ac_completa(ac_idx)
else return true
}
if(e.preventDefault)e.preventDefault()
return false
}
if(e.keyCode==27)ac_some()
setTimeout('ac_mudado()',1)
}
//Tratando eventos no IE bugado
function ac_up(e){
if(typeof e.target=="undefined" && (e.keyCode==40 || e.keyCode==38 || e.keyCode==8))ac_mudou(e)
}
//Focus
function ac_focus(e){
ac_aparece()
ac_mudado()
}
//Blur
function ac_blur(e){setTimeout('ac_some()',100)}
Bom..ai faltou uma página que ele não tinha colocado..só deu o norte..porém como eu já tinha fuçado com Ajax eu sabia como fazer!!
busca.php
<?php
$arq = fopen('teste.CSV', 'r');
//Definindo o I para começar um vetor na mensagens!!
$i=0;
//Pega o Estado
$q = $_GET['q'];
if($q) {
//Lê ele
//feof testa para ver se chegou no fim do arquivo por ponteiros!
while(!feof($arq)) {
//fgets retorna a linha ande o ponteiro está
$linha = fgets($arq);
//Constroi o array
//Aqui vamos ver a definir as colunas do array
$qnt_col = explode(';',$linha);
//Quantidade máxima de linhas!
if(count($qnt_col)>$max)
$max = count($qnt_col);
for($y=0;$y<count($qnt_col);$y++)
//gravando
//criando uma matriz
if(eregi($q,$qnt_col[$y]))
if($qnt_col[$y] <> '') {
$q = explode('<br />', nl2br($qnt_col[$y]));
if($q[0])
if($var)
$var .= ', ';
$var .= "'".$q[0]."'";
}
//incrementando o I
$i++;
};
//Fecha o arquivo
fclose($arq);
$var = "[".$var."]";
} else
$var = "['Nenhuma palavra encontrada!']";
echo $var;
?>
no caso eu misturei o código que tinha te passado com um código de incrmentar variavel e mostrar ela!!
ou seja..essa página vai fzer o seguinte:
vamos supor q vc escreu E lá!!
a página teste.php vai falar q a variável Q=E e na busca.php ele vai pegar do arquivos teste.csv todas as linhas q começa com E e retornar ela assim:
['Eric','Elias','Eliana']
com isso o campo vai pegar todas!!
bom...fiz a busca com eregi...expressão regular..porém ficou bem ruinzinha e só pesquisou a primeira letra..vou ver se melhoro isso pra ti!!
aqui funcionou!!
xD
qualquer coisa posta ai!!
Cloud
13-11-2008, 11:50 AM
***** vocÊ teve a manha demais, já é formado?
se quiser emprego só falar que eu corro atrás pra ti mesmo!
vou testar aqui
CCV_HEALbra
13-11-2008, 12:56 PM
No lugar disso:
if(eregi($q,$qnt_col[$y]))
coloque isso:
if(preg_match('/'.$q.'/i',$qnt_col[$y]))
formo daqui 1 ano e meio só!!
:(
tou fazendo só pra formar mesmo..faço redes de comunicação..nada a ver comigo..queria ciencias da comp...saca como é né?
qd aparecer uma vaguinha ai pra programador manda o anúncio pra mim!!
hahaha
qualquer coisa..eu corro atraz de td...tou começando java agora!!
hahahahaha!!
sobre o q eu fiz ai:
ele vai melhroar a busca creio eu!!
^^
ele nãot á mostrando todas..não sei pq..mas tá mostrando só de ir completando..ficou melhor eu acho!!
Cloud
13-11-2008, 01:20 PM
Tem familia em BH?
POr quanto sairia daí pra vir morar em BH?
CCV_HEALbra
13-11-2008, 02:25 PM
não tenho1
eu já tenho planos de ir pra são paulo qd acabar a faculdade!!
vou fazer cursinho pra passar na unicamp (minha meta)!!
assim q eu acabar a faculdade vou começar o cursinho aqui!1
pois goiânia não está como sudeste!!
e tenho contatos em MG tb..sei que está bom..não tanto igual sampa mas está!!!
xD
goiânia pqp...capital da roça de computador!!
aqui o povo acha q quem forma em redes eh pra formatar pc!!
Cloud
13-11-2008, 02:36 PM
cara mas em Campinas só tem viado pô!!!
Cuidado na UNICAMP hahaha leva seu cantil com água, porque se beber a água de campinas fodeu! haahah
CCV_HEALbra
13-11-2008, 02:40 PM
ah veio...vai q eu acho uma menininha gatinha de biologia lá!!
hehehehe!!
xD
mas se aparecer umas oportunidade ai eu não perco tempo!!
tenho 19..tenho q aproveitar o que aparecer e for bom (analisando claro!!)
^^
Cloud
13-11-2008, 02:57 PM
Eu te disse que tenho uma vaga aqui pra programador na empresa.
O negócio é que você está na faculdade e tirar você da faculdade seria imoral hehehehe
CCV_HEALbra
13-11-2008, 02:59 PM
transfiro pro cefet daí uai!!
xD
Cloud
13-11-2008, 04:13 PM
O cefet não tem curso de CC aqui, nem redes.
Tem engenharia de Comp.
Cloud
13-11-2008, 04:16 PM
haruahruahr agora o trem tá dificil pra ler é no XLS ooo raiva.
CCV_HEALbra
13-11-2008, 04:19 PM
meu cefet aqui tem redes....:S
Oo
depois posso ver isso..
mas falando sobre..vc testou ai??
Cloud
13-11-2008, 05:08 PM
Estou exatamente testando
Cloud
14-11-2008, 09:03 AM
Não consigo rodar é o XLS nele, ele não lê :(
CCV_HEALbra
14-11-2008, 09:05 AM
exporta pra csv e tenta!!
Cloud
14-11-2008, 11:11 AM
como vou conseguir automatizar o processo de xls - csv - xls novamente
CCV_HEALbra
14-11-2008, 11:16 AM
bom...eu fiz csv por causa da vírgula que separa!!
mas já vou tentar xls aqui e te falo mais tarde!!
Cloud
14-11-2008, 11:48 AM
***** valeu já to te devendo uma grana boa hehe
CCV_HEALbra
14-11-2008, 05:47 PM
eita cara..só estou com problema de pegar a busca!!
olha só:
teste.php
<style>
.completeaqui,div#completando{
width:300px;
}
</style>
<script>
window.onload=function() {
ac_registraJSON(document.forms[0],"q","busca.php?q=")
}
</script>
<link rel="stylesheet" href="autocompletar.css" />
<script src="events.js"></script>
<script src="xmlhttp.js"></script>
<script src="autocompletar.js"></script>
<form id="busca" class="autocompletar" action="teste2.php">
<input name="q" id="q" class="completeaqui" autocomplete="off">
<div style="display: none;" id="completando"></div>
<input value="Procurar" type="submit">
</form>
teste2.php
<?php
header('Content-type: application/vnd.ms-excel');
header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename=relatorio.xls');
header('Pragma: no-cache');
if($_GET['q']) {
//Abre o Arquivo
$arq = fopen('teste.csv', 'r');
//Definindo o I para começar um vetor na mensagens!!
$i=0;
echo '<table><tr>';
//Lê ele
//feof testa para ver se chegou no fim do arquivo por ponteiros!
while(!feof($arq)) {
//fgets retorna a linha ande o ponteiro está
$linha = fgets($arq);
//Constroi o array
//Aqui vamos ver a definir as colunas do array
$qnt_col = explode(';',$linha);
//Quantidade máxima de colunas!
if(count($qnt_col)>$max)
$max = count($qnt_col);
for($y=0;$y<count($qnt_col);$y++)
//gravando
//criando uma matriz
$msg[$i][$y] = $qnt_col[$y];
//incrementando o I
$i++;
};
//Fecha o arquivo
fclose($arq);
for($t=0;$t<$i;$t++) {
for($x=0;$x<$max;$x++) {
if(!in_array($q,$msg[$t])) {
echo '<td>'.$msg[$t][$x].'</td>';
}
}
echo '</tr><tr>';
}
echo '</table>';
} else {
echo '<script>window.alert("campo de busca em branco!");</script>';
echo '<script>history.go(-1);</script>';
}
?>
tem algum problema de vc pegar o arquivo xls, exportar pra csv?
pq ai depois o teste2.php já salva ele como .xls!!
esse foi só o problema!!
e a busca também..resolvendo essa busca ai acaba!!
vou ver se resolvo isso pra ti até segunda!!
^^
vou ter q pesqiusar mais um pouco
Cloud
17-11-2008, 09:04 AM
Eu vou ter que montar uma ferramenta pra exportar pra CSV, mas vai beleza sem problema!!!!
Beleza :D
Valeu mesmo
CCV_HEALbra
18-11-2008, 09:27 AM
vou dar uma estudada melhor aqui e posto uma do jeitinho q vc quer!!
xD
Cloud
18-11-2008, 11:50 AM
***** valeu e junto posta sua conta bancária.
Eu aqui estou morrendo de ler e também está foda
CCV_HEALbra
18-11-2008, 11:52 AM
HAHAHAHA!!
nem precisa!!
^^
tá tranquilo
xD
Cloud
19-11-2008, 02:40 PM
Eu ainda não consegui passar pro Excel, achou alguma solução, o site do PHp não me deu a luz não hehehe
CCV_HEALbra
26-11-2008, 10:41 AM
Segura firme brow..já venho com seus esquemas!!
xD
Cloud
28-11-2008, 03:51 PM
Conseguiu alguma coisa Heal?
Eu viajei a trabalho e voltrei ainda sem solução pra isso.
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.