domingo, 29 de março de 2009

PHP Fazer upload com pastas diferentes

Esse post é para fazer um upload seguindo a numeração id do banco de dados de sinistros, ou seja ele cria uma pasta, caso ela não exista, e faz o upload se o nome do arquivo não existir dentro da pasta.

<?php
/* Defina aqui o tamanho máximo do arquivo em bytes: */
if($arquivo_size > 10240000) {
print "<SCRIPT> alert('Seu arquivo não poderá ser maior que 10mb'); window.history.go(-1); </SCRIPT>\n";
exit;
}

/* Defina aqui o diretório destino do upload */
if (!empty($arquivo) and is_file($arquivo)) {
if (!$qw) $xQ = "bd/downloads";
else $xQ='downloads';
chdir("$xQ");
// pega o endereço do diretório
$diretorio = getcwd();
// abre o diretório
$ponteiro = opendir($diretorio);
// monta os vetores com os itens encontrados na pasta
while ($nome_itens = readdir($ponteiro)) {
$itens[] = $nome_itens;
}

// ordena o vetor de itens
sort($itens);
// percorre o vetor para fazer a separacao entre arquivos e pastas
foreach ($itens as $listar) {
// retira "./" e "../" para que retorne apenas pastas e arquivos
if ($listar!="." && $listar!=".."){

// checa se o tipo de arquivo encontrado é uma pasta
if (is_dir($listar)) {
// caso VERDADEIRO adiciona o item à variável de pastas
$pastas[]=$listar;
} else{
// caso FALSO adiciona o item à variável de arquivos
$arquivos[]=$listar;
}
}
}

// lista as pastas se houverem
if ($pastas != "" ) {
foreach($pastas as $listar){
//echo "Pasta:$listar<br>";
if ($listar==$id_sinistro) $vai_pasta=1;
}
}

if ($vai_pasta!=1) {
$pasta = "$id_sinistro";
mkdir ($pasta, 0755);
}

chdir("$id_sinistro");
// pega o endereço do diretório
$diretorio = getcwd();

// abre o diretório
$ponteiro = opendir($diretorio);
// monta os vetores com os itens encontrados na pasta
while ($nome_itens = readdir($ponteiro)) {
$itens[] = $nome_itens;
}

// ordena o vetor de itens
sort($itens);
// percorre o vetor para fazer a separacao entre arquivos e pastas
foreach ($itens as $listar) {
// retira "./" e "../" para que retorne apenas pastas e arquivos
if ($listar!="." && $listar!=".."){

// checa se o tipo de arquivo encontrado é uma pasta
if (is_dir($listar)) {
// caso VERDADEIRO adiciona o item à variável de pastas
$pastas[]=$listar;
} else{
// caso FALSO adiciona o item à variável de arquivos
$arquivos[]=$listar;
}
}
}
// lista os arquivos se houverem
if ($arquivos != "") {
foreach($arquivos as $listar){
//echo "Arquivo:$listar<br>";
if ($listar==$arquivo_name) $vai_arquivo=1;
}
}
if ($vai_arquivo==1) {
print "<h3><center>Arquivo não enviado!</center></h3>";
print "<h4><font color='#FF0000'><center>Já existe esse nome de arquivo favor alterar.</center></font></h4>";
if ($qw) print "<br><a href='javascript:history.go(-1)'>« voltar</a>";
exit;
}

$caminho=$caminho.$arquivo_name;

/* Defina aqui o tipo de arquivo suportado */
if ((eregi(".zip$", $arquivo_name)) || (eregi(".ZIP$", $arquivo_name)) || (eregi(".xls$", $arquivo_name)) ||
(eregi(".xlsx$", $arquivo_name)) || (eregi(".doc$", $arquivo_name)) || (eregi(".docx$", $arquivo_name)) ||
(eregi(".gif$", $arquivo_name)) || (eregi(".jpg$", $arquivo_name))) {
copy($arquivo,$caminho);
//print "<h1><center>Arquivo enviado com sucesso!</center></h1>";
}
else{
print "<h1><center>Arquivo não enviado!</center></h1>";
print "<h2><font color='#FF0000'><center>Caminho ou nome de arquivo Inválido!</center></font></h2>";
exit;
}
}

Ao selecionar mostrar campo oculto

Notar que o campo já esta programado para não aparecer de cara, comando initHide no Javascript.
Comandos para fazer "sumir/aparecer" campo: 

<input type="radio" name="quem_refere" value="4" onClick="hide('1'); />Some<br> 
<input type="radio" name="quem_refere" value="2" onClick="show('1'); />Aparece Campo que "some/aparece": <div id='faq1'> OLA MUNDO... ou não... </div> 

 <script language="Javascript"> 
    var div = "faq" //DEFINE QUAL O NOME DOS DIV'S 
    var total = 1 //DEFINE O NUMERO DE DIV'S 
    initH1ide() 
    function show(id) { document.getElementById(div+id).style.display="block"; } 
    function hide(id) { document.getElementById(div+id).style.display = "none"; } 
    function initHide()
    for(i=1; i<=total; i++)
    
         document.getElementById(div+i).style.display = "none"; 
     }
</script>

Mascara Moeda - Money Mask

Atualizando (10-07-2020)

Achei esta função simples e facil de usar para quem quer gravar no SQL.
<script>
$(document).on('input','.valor',function(event) {
  if (this.value.length === 1) {this.value = '0'+this.value;}
  this.value = parseFloat(this.value.replace(/[^\d]/g,'').replace(/(\d\d?)$/,'.$1')).toFixed(2);
});
</script>

<input type="text" name="valor[]" class="valor" placeholder="0.00" autocomplete="off">


Temos a função jquery para fazer essa mascara:

Faça o download dos arquivos em http://plentz.github.io/jquery-maskmoney/

Para usar:
<script src="js/jquery-1.6.4.min.js"></script> <-- testei do 1.6.4 para cima
<script src="js/jquery.maskMoney.js" type="text/javascript"></script>

<input type=text name='valor' id='valor' size='10' />
<script type="text/javascript">$("#valor").maskMoney({thousands:'', decimal:'.'});</script>


E temos o abaixo também:

<script type='text/javascript'>
/* Autor: Mario Costa */
function formatar_moeda(campo, separador_milhar, separador_decimal, tecla) {
var sep = 0;
var key = '';
var i = j = 0;
var len = len2 = 0;
var strCheck = '0123456789';
var aux = aux2 = '';
var whichCode = (window.Event) ? tecla.which : tecla.keyCode;

if (whichCode == 13) return true; // Tecla Enter
if (whichCode == 8) return true; // Tecla Delete
key = String.fromCharCode(whichCode); // Pegando o valor digitado
if (strCheck.indexOf(key) == -1) return false; // Valor inválido (não inteiro)
len = campo.value.length;
for(i = 0; i < len; i++) if ((campo.value.charAt(i) != '0') && (campo.value.charAt(i) != separador_decimal)) break; aux = ''; for(; i < len; i++) if (strCheck.indexOf(campo.value.charAt(i))!=-1) aux += campo.value.charAt(i); aux += key; len = aux.length; if (len == 0) campo.value = ''; if (len == 1) campo.value = '0'+ separador_decimal + '0' + aux; if (len == 2) campo.value = '0'+ separador_decimal + aux; if (len > 2) {
aux2 = '';

for (j = 0, i = len - 3; i >= 0; i--) {
if (j == 3) {
aux2 += separador_milhar;
j = 0;
}
aux2 += aux.charAt(i);
j++;
}

campo.value = '';
len2 = aux2.length;
for (i = len2 - 1; i >= 0; i--)
campo.value += aux2.charAt(i);
campo.value += separador_decimal + aux.substr(len - 2, len);
}

return false;
}

</script>

No html usar:

<input type=text name="valor" size=10 maxlength="10" onkeypress="return formatar_moeda(this,'','.',event);">

PHP Hora e data -> BR - SP

Para colocar em PHP a hora atual do Brasil - São Paulo

// para php + antigos --> date_default_timezone_set('Brazil/East');
date_default_timezone_set('America/Sao_Paulo'); // atualizado em 19/08/2013
$data_sistema = date('d/m/Y H:i');

sexta-feira, 27 de março de 2009

xml com php e mysql

Para gera xml a partir do mysql com php:

$arquivo = 'xml/menu.xml';

//ABRE O ARQUIVO(SE NÃO EXISTIR, CRIA)
$ponteiro = fopen($arquivo, "w");
//ESCREVE NO ARQUIVO XML
fwrite($ponteiro, "\n");
fwrite($ponteiro, "");
//SQL
$q = "select chamadaSP,tipo,cd from pacpas where tipo='$tipo' order by chamadaSP";
$res = mysql_query($q);
while ($row = mysql_fetch_array($res)):
$chamada = $row['chamadaSP'];
$tipo = $row['tipo'];
$cd = $row['cd'];
// a linha abaixo e necessaria por causa que no XML não pode ter o simbolo &
$output = str_replace("&", "ecomercial", $chamada);
//MONTA AS TAGS DO XML
$conteudo = "
<menu&rt;
<titulo>$output</titulo>
<linque>pacpas.php?ln=p</linque>
<tipo>$tipo</tipo>
<cd>$cd</cd>
</menu>
";
//ESCREVE NO ARQUIVO
fwrite($ponteiro, $conteudo);
endwhile;//FECHA WHILE
//FECHA A TAG MENU
fwrite($ponteiro, "</principal>");
//FECHA O ARQUIVO
fclose($ponteiro);


Para ler o que foi gravado:

<?php
$doc2 = new DOMDocument();
$doc2->load( "xml/menu.xml" );
$books = $doc2->getElementsByTagName( "menu" );
foreach( $books as $book )
{
$links = $book->getElementsByTagName( "linque" );
$link = $links->item(0)->nodeValue;
$titles = $book->getElementsByTagName( "titulo" );
$title = $titles->item(0)->nodeValue;
$tipos = $book->getElementsByTagName( "tipo" );
$tipo = $tipos->item(0)->nodeValue;
$cds = $book->getElementsByTagName( "cd" );
$cd = $cds->item(0)->nodeValue;
$output = str_replace("ecomercial", "&", $title);
echo "<dd><a href='$link&tipo="$tipo&cd=$cd&ln=$ln'>".utf8_decode($output)."</a>\n ";
}
?>

Contador de caracteres estilo Tweeter - Input - TextArea - CountDown Character Twitter Like Input - TextArea

<textarea name="ocorrencia" cols="70" rows="5"
onKeyUp='ContaTexto(ocorrencia,counter,240);' ></textarea>
<input type="text" name="counter" size="3" value="240" style='width:15%;background-color:#ccc;' readonly />
<br/><br/>
<input type='text' name='teste' placeholder='TESTANDO' maxlength='25' required style='width:85%'  onKeyUp='ContaTexto(teste,counter1,25);'/>
<input type='text' name='counter1' id='counter1' style='width:15%;background-color:#ccc;' value='25'  readonly/>
<script>
function ContaTexto(CampoMsg,CampoContador, TamMax) {
if (CampoMsg.value.length > TamMax) CampoMsg.value = CampoMsg.value.substring(0, TamMax);
else CampoContador.value = TamMax - CampoMsg.value.length;
if (CampoContador.value <10) {
CampoContador.style.background = '#FF0000';
CampoContador.style.color = '#FFFFFF';
}
}
</script>


MySQL Dar saida na data do

No caso abaixo data e hora, que foram inseridas previamentes e estão no formato aaaa-mm-dd hh:mm


$q_registro = "select id, DATE_FORMAT(data_inicial, '%d/%m/%Y %H:%i') as dataC from nome_da_tabela order by id desc limit 1";
$r_registro = mysql_query($q_registro);
$linha_registro = mysql_fetch_array($r_registro);
$id_sinistro = $linha_registro['id'];
$data_sinistro = $linha_registro['dataC'];

Bloqueio de teclas Firefox, IE e Chrome

Testado nas versões IE 6, IE 7, FF 3.x e Chrome 1.x

A programação abaixo bloqueia a tecla ' --> aspas simples --> codigo 192

//firefox e chrome
if (navigator.appName.indexOf('Internet Explorer')<0) {
window.onkeydown=function(event){
if (event.keyCode==192) {event.preventDefault();}
}
}
else {
// IE
document.onkeydown=function(event) {
if (window.event.keyCode==192) {
alert("Favor não utilizar\naspas simples ou duplas");
window.event.keyCode=0; window.event.returnValue=false;
}
}
}

Linux bash file returns unexpected token `$'do\r''

open file in vi edit with   vi filename.sh   command; type in vi  :set ff=unix  command; save file with  :wq It will save the file with unix...