MAL - Memória Auxiliar do Lutieri

terça-feira, janeiro 15, 2008

mysql_fetch_array duas vezes

Ben
06-Apr-2004 11:59
One of the most common mistakes that people make with this function, when using it multiple times in one script, is that they forget to use the mysql_data_seek() function to reset the internal data pointer.

When iterating through an array of MySQL results, e.g.

<?
while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
{
foreach (
$line as $col_value)
{
echo
$col_value . ' ';
}
}
?>

the internal data pointer for the array is advanced, incrementally, until there are no more elements left in the array. So, basically, if you copy/pasted the above code into a script TWICE, the second copy would not create any output. The reason is because the data pointer has been advanced to the end of the $line array and returned FALSE upon doing so.

If, for some reason, you wanted to interate through the array a second time, perhaps grabbing a different piece of data from the same result set, you would have to make sure you call

<?
mysql_data_seek
($result, 0);
?
>

This function resets the pointer and you can re-iterate through the $line array, again!


Dica retirada daqui:

Marcadores: , ,

quarta-feira, novembro 28, 2007

Função reload em JS

Recentemente precisei fazer uma página que tinha um iframe embutido e eu precisa recarregar aquele iframe dado um certo momento.

Segue o código para dar um refresh no iframe usando JavaScript:


var f = document.getElementById('iframe1');
f.contentWindow.location.reload(true);

Value of parameter:

false - Default. Reloads the page from the browser cache.
true - Reloads the page from the server.


Mais informacões:
http://msdn2.microsoft.com/en-us/library/ms536691.aspx

Marcadores: , ,

sexta-feira, maio 25, 2007

Plugin de Busca no firefox

Fui obrigado a criar esse plugin de busca para o firefox pois não encontrei nada disponível no site do addons do mozilla.

É só criar um um arquivo nesse diretório:
~/.mozilla/firefox/5yj3kkuq.default/searchplugins/baby.xml

5yj3kkuq.default = Acho que é criado pelo firefox aleatóriamente pra cada perfil.Então vai ser diferente para você.

Início do código

<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
xmlns:moz="http://www.mozilla.org/2006/browser/search/">
<ShortName>Babylon</ShortName>
<Description>engineDescription</Description>
<InputEncoding>inputEncoding</InputEncoding>
<Image width="16" height="16">data:image/x-ico,%00%00%01%00%01%00%10%10%00%00%01%00%08%00h%05%00%00%16%00%00%00(%00%00%00%10%00%00%00%20%00%00%00%01%00%08%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00C%1D%11%00C%20%12%00E%1E%16%00F%1F%17%00E%22%18%00C%25%14%00%3C(%16%00%3C*%13%00W%23%1C%00%3B5%18%00W4%13%00k0%16%00O2%1D%00B6%1E%00W3!%00U6%1D%00U7%1C%00N5%25%00Y1%2C%00V9%1E%00h%3E%1B%00y9%20%00%82%3B%19%00f%40%1D%00f%3D%24%00fE%18%00P%3F%2C%00%919!%00X%3E-%00%84A%1A%00i%40'%00%8C%3C%23%00lF%24%00%7BH%20%00_C8%00cH-%00fJ%2B%00%89F'%00WN%2C%00oB%3E%00%98C4%00gN4%00sS(%00%98H1%00jW*%00XY%2F%00hT5%00%9AN1%00%A4N0%00d%5C7%00%95ND%00_%5C%40%00%60_J%00fi%3C%00%87%5E%5C%00%80eQ%00%AAkI%00zqO%00%93oK%00%9BrE%00kvP%00%A7j%5C%00%8DwN%00%88uZ%00%5D~%5B%00%B9m%5B%00%83sg%00%BDrX%00zxf%00xwi%00n%7Be%00%7B%7F%5C%00%C3zZ%00%88%86g%00%7B%87s%00%95%82%7D%00%92%85%7D%00u%91t%00z%93q%00f%93y%00%AE%91d%00_%96%7B%00%99%8A%87%00%9E%8E~%00~%95%7F%00v%9D%7D%00%89%9B~%00%AD%9Em%00%8A%98%86%00h%A2%7F%00w%A2%7D%00e%A2%86%00%9F%9A%81%00%95%98%89%00%8E%9F~%00%9E%9A%82%00%86%A0%88%00%7C%AA%7C%00%88%ACx%00%9D%A3%8C%00%A7%ACy%00y%AC%8A%00w%B4%7C%00%7F%AE%94%00%81%B5%86%00%8E%AA%97%00w%B2%93%00%92%B7%85%00%A8%A9%9F%00%B2%A6%A4%00%9B%BB%84%00%94%B2%99%00w%BF%8B%00%B6%A8%A2%00%AF%B0%96%00~%BB%9F%00%AE%B4%A1%00%CE%AC%AC%00%D1%B1%A4%00%A4%BA%A7%00%B9%C4%92%00%88%C2%A9%00%9E%C3%A9%00%B2%BC%B0%00%B8%C0%A9%00%A0%C4%AC%00%AD%C6%B2%00%AE%C8%B6%00%9B%CF%B7%00%A7%CD%B7%00%CF%CB%AE%00%93%D3%B6%00%AF%CC%BD%00%BB%D1%B4%00%9C%D9%B5%00%A0%D7%BE%00%EF%C8%BF%00%A8%D6%BF%00%C5%D4%B9%00%E0%D4%B0%00%C2%DC%B4%00%B3%DD%BA%00%B7%D6%C7%00%BC%DE%B9%00%AC%DE%C0%00%BB%DB%C2%00%C2%DA%C8%00%DB%D2%CF%00%CC%D8%CC%00%D1%DB%CB%00%B2%E1%CB%00%AE%E5%CC%00%AC%E8%CA%00%BE%E6%CD%00%D3%E4%D7%00%D7%E4%D6%00%C2%ED%D2%00%C8%F2%CF%00%C8%F3%DE%00%D1%F0%E1%00%E9%F1%E7%00%F1%F8%EB%00%FF%F6%EE%00%D0%FF%EF%00%E7%FF%ED%00%DC%FF%F3%00%E5%FF%F0%00%E6%FF%F5%00%EB%FF%F4%00%FA%FC%F6%00%ED%FF%F5%00%F7%FF%F2%00%F0%FF%F6%00%F7%FF%F5%00%FD%FE%F5%00%ED%FF%F9%00%FF%FF%F4%00%F6%FF%F8%00%FF%FD%FC%00%FF%FF%FC%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%B4%B4%B4%B4%B4%B4%B4%B4%B4%B4%B4%B4%B4%B4%B4%B4%B4%B4%B4%B4%B2%93mRKLl%7B%B4%B4%B4%B4%B4%B4%B4%B4u6%12%03%02%04%22B%5D%9B%B4%B4%B4%B4%B4q'%08%00%1C%1A%06%05%11DX%B4%B4%B4%A9%94E%01%0E3NZ%40%09%074Jw%B4%B4%B1iF%0C%10%3Caph%26%13%0DcT%B4%B4%A6OM%23%0A5bfk%3A%0B%0F_%60%99%B4%B4QU.%17%2Cdnx8%1F%18%5Co%B4%B4%A4%5Be9%14!%3BWP0%1B%1Erz%97%B4%B4sYG%20%16%1D%19*%25%15%3F%8A%7D%B4%B4%A1%87j%5E%24%2FH%3E-1I%85%91%7F%B4%B4%B4%9EgV)%2BC%8B%8C%8F%9D%9C%81%9A%A0%B4%B4%AF%92t7(A%82%8D%86%98%89%84%B4%B4%B4%B4%B4%AD%95S2%3D%7C%90%83y%8E%B4%B4%B4%B4%B4%B4%B4%A8%AB%88v~%80%96%9F%AE%B3%B4%B4%B4%B4%B4%B4%B4%AA%A2%B0%A7%A3%A5%AC%B4%B4%B4%B4%FF%FF%00%00%F0%0F%00%00%F0%03%00%00%E0%03%00%00%80%01%00%00%80%01%00%00%80%00%00%00%C0%01%00%00%80%00%00%00%C0%01%00%00%80%01%00%00%C0%00%00%00%C0%03%00%00%E0%07%00%00%F0%03%00%00%F8%0F%00%00</Image>
<Url type="text/html" method="GET" template="http://online.babylon.com/cgi-bin/trans.cgi?layout=uol.txt&">
<Param name="lang" value="ptg"/>
<Param name="lang" value="ptg"/>
<Param name="word" value="{searchTerms}"/>
</Url>

<moz:SearchForm>searchFormURL</moz:SearchForm>
</OpenSearchDescription>


Se por acaso não aparecer nada de novo no campo de busca significa que há um erro no arquivo XML. Portanto deve-se revisá-lo.

Mais informações sobre como criar seus próprios componentes para Firefox pode ser encontrado aqui:
http://developer.mozilla.org/en/docs/Creating_OpenSearch_plugins_for_Firefox

Marcadores:

quinta-feira, abril 26, 2007

Formulários postados mais de uma vez

Hi!!

Como eu já havia falado em algum post anterior existe uma intranet, na empresa onde eu trabalho, muito bem desenvolvida. Existe um formulário com javascript que faz o submit do mesmo. O botão de enviar é do tipo image(type=image).

A função em java script é essa:
function Enviar() {
document.frm.action = "http://intranet.foobar.com.br/9/formularios/salvar";
document.frm.submit();
}

O código do botão de enviar é esse:

<input src="http://intranet.foobar.com.br/sites/imagens/botoes/enviar.gif" value="Enviar" onclick="Enviar(); " type="image">


Tenho um problema que acontece apenas no Internet Explorer. Quando o formulário é postado ele é submetido mais de uma vez, duas, três, quatro... cheguei a ter 8 vezes o mesmo registro.

Acreditem no Firefox isso não acontece.


Li aqui:
http://forum.java.sun.com/thread.jspa?threadID=448557&messageID=2033267

e descobri que isso tudo acontece por que eu to usando um input do tipo imagem. Mas enfim.
Pra solucionar o problema foi muito simples, pior é que se demora, as vezes horas, pra chegar a descobrir onde está o problema, qual a causa e a solução é simplérima.... coisas da informática.

Acontece que apenas devemos retorna falso na função de enviar o form. Portanto resolvi fazer a modificação no evento onclick do botão de enviar. Ficando assim:

onclick="Enviar(); return false;"
Pronto. Pra variar a solução foi simples.


feito o carreto...

Marcadores: , ,

quinta-feira, abril 19, 2007

Tamanho Máximo do Upload no PHP[Atualizado]

Estou eu já brigando há algum tem com a intranet aqui da empresa. Temos uma interface que é usada para fazer upload de arquivos para o servidor. Pois bem, não fui eu quem desenvolveu a intranet, portanto estou descobrindo-a ainda.

Falando um pouco mais da intranet: Foi um trabalho muito bem feito por uma empresa aqui de POA a qual não quero citar o nome. Ela é divida em templates, classes, arquivos de configuração em xml, Data mappers, enfim... Uma das classes utilizadas é a httpupload.php. Que como o próprio nome diz é utilizada para fazer uploads de arquivos para o servidor. Esta classe foi desenvolvida por Nguyen Quoc Bao. Não sei quem é, mas é alguém que deve viver na frente do PC. Pelo nome deve ser algum vietnamita que ganhou um computador do governo e acabou desenvolvendo em PHP ;-) Enfim a classe é boa e completa. Contando com tratamento de erros e outros blá blá blás. O link pra ela eu coloco daqui a pouco. Aguarde ...

Existe, na minha intranet, uma interface que é utilizada para enviar arquivos para o servidor, however, percebi que não eram enviados arquivo maiores que 2 ou 3 megabytes. Virei o código da intranet pra cima e para baixo e não encontrei nada que pudesse estar barrando. Criei uma página nova inclui a classe e montei um formulariozinho para testar a classe. Antes de terminar encontrei um exemplo já prontinho aqui. Se você for usar este exemplo vai precisar da classe também que está aqui.

Aaaaaaaaaa falando em classe. Ela está com um problema.
Ela usa a variável $HTTP_POST_FILES, contudo esta variável foi substituída por $_FILES.

Devemos então substituir essas variáveis antigas pelas novas. Pois dependendo da versão do PHP não vai fazer upload de nada e vai dar a mensagem 'No file was submited.'.

Usando o VI para substituir:

:%s/HTTP_POST_FILES/_FILES/g


Pronto. Tudo funcional.


Bom... o problema é que não fazia upload de arquivos grandes.
Nesta página nova, de teste, quando eu tentei fazer o upload ele me retornou o erro -2 com a seguinte mensagem: The uploaded file exceeds the upload_max_filesize directive in php.ini.

Eis que fui eu no meu arquivo php.ini e alterei a diretiva upload_max_filesize para 10 MB.

Reload no apache e era isso.

Todo mundo feliz. ;-)

Aconselho esse site pra quem procura classes interessantes:
www.phpclasses.org

Hoje 17.05.07 tive que implementar um sistema de uploads em outro servidor. Antes de tudo tive que recorrer a esse blog, leia-se memória auxiliar do Lutieri, tá aí um bom nome pra esse blog. MAL - Memória auxiliar do Lutieri.... ;-) Vou mudar o título....

Bom continuando no upload dos arquivos com php. Existem mais algumas diretivas que devem ser setadas corretamente. São elas:

  • file_uploads
  • upload_max_filesize
  • max_input_time
  • memory_limit
  • max_execution_time
  • post_max_size

Encontrei um artigo falando sobre como manipular arquivos grandes com php. Nele achei tudo o que eu precisava. Segue o link, que é mais rápido do que eu ficar aqui digitando e digitando...

http://www.radinks.com/upload/config.php

Se eu não me engano esse mesmo site tem uma ferramenta em Java que pode ajudar caso não seja possível com php ou muito trabalhoso.

Marcadores: ,



Chat with Lutieri G. B.

Subscribe in a reader