Como fazer uma separação a cada 4 resultados de foreach

Esses dias recebi essa pergunta aqui no blog:

“Olá, você poderia me ajudar com essa dúvida em PHP? Preciso que a cada quatro valores listados de um foreach, seja adicionado uma separação. Já consigo buscar todas as informações do BD e exibi-las, porém gostaria dessa divisão a cada 4 resultados”.

Seria algo tipo:

[xxx] [xxx] [xxx] [xxx]

________

[xxx] [xxx] [xxx] [xxx]

Ou seja, uma linha para separar a cada 4 valores.

//Exemplo:
foreach ($links->result() as $value) {
echo $value;
}

Bem isso é bem simples de resolver, basta fazer algo assim:

$contador = 1;
foreach ($links->result() as $value) {
echo $value;

if($contador%4==0){
echo 'SEPARADOR';
} 
$contador++;
}

Fonte: http://php.net/manual/en/control-structures.foreach.php

Como recuperar como checked um campo armazenado como array – PHP

Só dicas simples ultimamente né. Vamos lá:

Imagine que você tenha um formulário HTML com alguns campos checkbox, ou seja, que permitem múltiplos valores.

[php]

Marque o turno:
Matutino
Vespertino
Noturno

[/php]

No banco, você terá um campo que irá armazenar as opções selecionadas em formato de array separados por vírgula (1,2,3). A dúvida é, como que você irá recuperar os valores selecionados de forma que ao editar este formulário os respectivos campos checkbox’s venham marcados? Muito simples, basta utilizar as funções implode() e explode(), veja:

Para inserir em formato de array separados por vírgula basta dar um implode():

[php]$turno = implode($_POST[‘turno’],”,”);[/php]

Ai basta utilizar esta variável ($turno) no seu INSERT.

Na query que irá recuperar os dados, utilizamos explode() para separar os elementos do array:

[php]$turno = explode(“,”, $row[“turno”]);[/php]

E na hora de marcar os campos do formulário com os registros recuperados vamos utilizar a função do PHP chamada in_array, com um operador ternário:

[php]
/>Matutino
/>Vespertino
/>Noturno
[/php]

Pronto, dessa forma os valores que vierem da variável $turno que coincidirem com o value do checkbox será marcado como ativo.

Seguindo o mesmo princípio, você pode querer trazer em formato de relatório os valores selecionados, como no exemplo abaixo:

( X ) MATUTINO        (  ) VESPERTINO        ( X ) NOTURNO

É a mesma coisa, basta dar um echo na variável no espaço onde será preenchido o X:

[php]( < ?php echo (in_array('1',$turno))?('X'):('');?> ) MATUTINO ( < ?php echo (in_array('2',$turno))?('X'):('');?> ) VESPERTINO ( < ?php echo (in_array('3',$turno))?('X'):('');?> ) NOTURNO[/php]

Fonte: Handling checkbox in a PHP form processor

Tenha seu próprio encurtador de URLs

Este script PHP permite você configurar e manter um serviço de encurtamento de URL tanto em seu site, ou na sua intranet. Basta enviar o código, definir as configurações e detalhes de seu domínio e pronto.

Ele vem com uma área de administração para gerencia, 3 modelos de front-end, registro de usuários, estatísticas,espaço para banners e etc.

Tamanho: 5MB

Opções de download:

Como fazer um Link expirar em um Post ou Página no WordPress?

Imagine que em determinado período, você resolva promover um concurso em seu site e faz a divulgação mediante a uma postagem:

  1. O link para inscrição deve aparecer somente até a data X.
  2. As demais informações da postagem de divulgação dece continuar.

Isso é simples de resolver, existem duas formas: criando uma função no arquivo wp-includes/functions.php (ou no arquivo functions.php do tema, se houver) ou por meio de plugins.

Vamos ver a primeira opção. Edite o arquivo wp-includes/functions.php

// Vencimento //
function vence_conteudo($args = array(), $content = '') {
    extract(shortcode_atts(
        array(
            'off' => 'amanha', // nao funcionara se nao definir uma data real
        ),
        $args
    ));
    if (strtotime($off) > time()) {
        return $content;
    }
    return '';
}

add_shortcode('vencimento', 'vence_conteudo');

// O que mostrar quando o prazo estiver expirado //
function mostra_conteudo($args = array(), $content = '') {
    extract(shortcode_atts(
        array(
            'on' => 'amanha', // nao funcionara se nao definir uma data real
        ),
        $args
    ));
    if (strtotime($on) < time()) {
        return $content;
    }
    return '';
}
add_shortcode('mostra', 'mostra_conteudo');

Uma vez que se tenha criado a função, basta editar a postagem, adicionando as tags:

[vencimento off=”2012-05-10″] Clique aqui para Inscrição [/vencimento]

[mostra on=”2012-05-10″] Aqui entra o conteúdo que deverá aparecer assim que expirar, no exemplo em: 10/05/2012. [/mostra]

Simples não?

Caso queira utilizar um plugin, confira estes:
shortcodes-to-show-or-hide-content
simple-content-expiry/

Espero ter ajudado.

Howto: Como utilizar a base de usuários do JOOMLA 1.5.x para se logar externamente

Howto: Como utilizar a base de usuários do JOOMLA 1.5.x para se logar externamente com PHP.

Sério, você ainda pode precisar disso.

Imagine a seguinte situação:

Você tem um portal Joomla funcionando normalmente e necessita criar um sistema externo que necessita de autenticação, então você se lembra que no Joomla existe uma base de usuários completa e o que precisa fazer é somente utilizar essa base para se logar, maravilha, então confira no script abaixo como fazer isso, não requer prática nem habilidade:

[php]
< ?php session_start(); // Fazer conexão com o banco de dados $db = mysql_connect("localhost", "usuarioBD", "senhaBD"); mysql_select_db("baseDeDados", $db); // Pegar nome de usuário e senha do formulário $usuario = $_POST['usuario']; $senha = $_POST['senha']; // Obter senha cifrada do usuário $sql = "SELECT name, password FROM jos_users WHERE username='$usuario'"; $resultado = mysql_query($sql); // Extrair os dados do resultado da query $pega = mysql_fetch_array($resultado); $senhaCripto = $pega['password']; // Separar a senha do sal if($senhaCripto) { $partes = explode( ':', $senhaCripto ); $cripto = $partes[0]; $sal = $partes[1]; // Criar hash com a senha fornecida com o sal (se houver) $novoHash = ($sal) ? md5($senha.$sal) : md5($senha); // USUÁRIO E SENHA VÁLIDOS: if( $novoHash == $cripto ) { // Jogando na sessão o nome do usuário, para poder utilizar posteriormente $_SESSION['nome'] = $pega["name"]; // Pode-se simplesmente exibir uma mensagem, ou redirecionar para uma página restrita. echo "Acesso autorizado"; // redirecionando para a pagina restrita. header("location:pagina_restrita.php"); // USUÁRIO EXISTE, MAS A SENHA NÃO BATE: } else { // Pode-se exibir uma mensagem. echo "Acesso negado. A senha não confere!"; // Ou é dar um alert pro usuário: echo "“;
}

// Fechando a conexão
mysql_close($db);
?>

[/php]

Exibir todas as imagens de uma pasta utilizando PHP

Com este pequeno script é possível exibir todas as imagens de uma determinada pasta. Adicionei uma tabela para ter uma visão de impressão.

[php]
< ?php //Sua pasta $files = glob("imagens/*.*"); $colCnt=0; echo '

‘;

for ($i=1; $i‘;
echo ‘

‘;

if ($colCnt==4)
{
echo ”;
$colCnt=0;
}
}

echo ”;
?>
[/php]

PHP Code Snippets – Pequenos trechos de códigos

Apenas para não esquecer, segue alguns trechos de código em PHP:

1. Identificar se um arquivo existe no servidor:

$arquivo = "/caminho/arquivo";
if (file_exists($arquivo))
    echo "Já existe";
else
    echo "Não existe";

2. Obtendo o tamanho de um determinando arquivo:

[php]
$file = “/caminho/arquivo”;
$fsize = filesize($file);
echo $fsize;
[/php]

E ainda podemos utilizar a função round() e converter para Kb assim:

[php]
$file = “/caminho/arquivo”;
$fsize = filesize(“$file”);
print “Tamanho: “.round($fsize / 1024, 1).” KB”;
[/php]

3. Listando o conteúdo de um diretório:

[php]
$dir = “/diretorio”;
$dirhandle = opendir($dir);
while ($file = readdir($handle) {
$files = .$file;
}
closedir($handle); echo $files;
}
[/php]

Ou pode ser assim também:

[php]
$dir = “/home/admin”;
if (is_dir($dir)) {
if ($dir = opendir($dir)) {
while ($arquivo = readdir($dir)) {
if ($arquivo != “.”
$arquivo != “..”) {
echo “$arquivo\n”;
}
}
closedir($dir);
}
}
[/php]

4. Verificar se uma determinada URL existe:

[php]
$url = “http://urlescolhida”;
$fp = @fopen($url, “r”);
if ($fp == 1) echo “Existe”;
else echo “Não existe”;
}
[/php]

5. Contar quantos arquivos existem num determinado diretório

[php]
$numFiles = 0;
if ($handle = opendir(‘.’)) { // ‘.’ = diretório atual, alterar para o diretório desejado
while (false !== ($file = readdir($handle))) {
if ($file != “.”
$file != “..”) {
$numFiles++;
}
}
closedir($handle);
}
echo “$numFiles arquivos neste diretório.\n”;
[/php]

6. Remover qualquer coisa que vem antes de um determinado elemento em uma string

[php]
$myvar = ‘103-DSC04012.JPG’;
echo substr($myvar, strripos($myvar, ‘-‘) + strlen(‘-‘));
[/php]

7. Transformar um valor numérico em extenso.

[php]
function extenso($valor = 0, $maiusculas = false) {
$singular = array(“centavo”, “real”, “mil”, “milhão”, “bilhão”, “trilhão”, “quatrilhão”);
$plural = array(“centavos”, “reais”, “mil”, “milhões”, “bilhões”, “trilhões”, “quatrilhões”);
$c = array(“”, “cem”, “duzentos”, “trezentos”, “quatrocentos”, “quinhentos”, “seiscentos”, “setecentos”, “oitocentos”, “novecentos”);
$d = array(“”, “dez”, “vinte”, “trinta”, “quarenta”, “cinquenta”, “sessenta”, “setenta”, “oitenta”, “noventa”);
$d10 = array(“dez”, “onze”, “doze”, “treze”, “quatorze”, “quinze”, “dezesseis”, “dezesete”, “dezoito”, “dezenove”);
$u = array(“”, “um”, “dois”, “três”, “quatro”, “cinco”, “seis”, “sete”, “oito”, “nove”);
$z = 0;
$rt = “”;
$valor = number_format($valor, 2, “.”, “.”);
$inteiro = explode(“.”, $valor);
for ($i = 0; $i < count($inteiro); $i++) for ($ii = strlen($inteiro[$i]); $ii & amp; lt; 3; $ii++) $inteiro[$i] = "0".$inteiro[$i]; $fim = count($inteiro) - ($inteiro[count($inteiro) - 1] > 0 ? 1 : 2);
for ($i = 0; $i < /count> 100)
” ($valor < 200)) ? " cento " : $c[$valor[0]]; $rd = ($valor[1] < 2) ? "" : $d[$valor[1]]; $ru = ($valor > 0) ? (($valor[1] == 1) ? $d10[$valor[2]] : $u[$valor[2]]) : “”; $r = $rc.(($rc ” ($rd || $ru)) ? ”
e ” : ”
“).$rd.(($rd ”
$ru) ? ” e ” : “”).$ru; $t = count($inteiro) – 1 – $i; $r. = $r ? ” “.($valor > 1 ? $plural[$t] : $singular[$t]) : “”;
if ($valor == “000”) $z++; elseif($z > 0) $z–;
if (($t == 1)
” ($z>0) ” ($inteiro[0] > 0)) $r. = (($z > 1) ? ” de ” : “”).$plural[$t];
if ($r) $rt = $rt.((($i > 0)
” ($i < = $fim) " ($inteiro[0] > 0)
” ($z < 1)) ? ( ($i < $fim) ? ", " : " e ") : " ") . $r; } if (!$maiusculas) { return ($rt ? $rt : "zero"); } else { if ($rt) $rt = ereg_replace(" E ", " e ", ucwords($rt)); return (($rt) ? ($rt) : "Zero"); } } $valor = 112344; $dim = extenso($valor); $dim = ereg_replace(" E ", " e ", ucwords($dim)); $valor = number_format($valor, 2, ",", "."); echo "R$ $valor $dim "; [/php] Fonte: http://devsnippets.com/article/10-essential-php-code-snippets.html
http://phpsnips.com/

Calculando distância entre dois pontos com PHP

Aqui está uma função muito útil, que permite calcular a distância de um ponto A para um ponto B, utilizando as latitudes e longitudes. A função pode retornar a distância em milhas, quilômetros, ou milhas náuticas, vejamos:

 

function distancia($lat1, $lon1, $lat2, $lon2, $unit) {

    $theta = $lon1– $lon2;
    $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
    $dist = acos($dist);
    $dist = rad2deg($dist);
    $miles = $dist * 60 * 1.1515;
    $unit = strtoupper($unit);

    if ($unit == “K”) {
        return ($miles * 1.609344);
    } else if ($unit == “N”) {
        return ($miles * 0.8684);
    } else {
        return $miles;
    }
}

Como usar?

O uso da função é muito simples: Tudo que você precisa fazer é informar a latitude e longitude do ponto A e B na ordem e no final identificar se o resultado será em milhas, quilômetros ou milhas náuticas:

[php]

//Em milhas
echo distancia(32.9697, -96.80322, 29.46786, -98.53506, “m”) . ”  milhas”;

//Em quilômetros
echo distancia(32.9697, -96.80322, 29.46786, -98.53506, “k”) . ”  Km”;

//Milhas Nauticas
echo distancia(32.9697, -96.80322, 29.46786, -98.53506, “n”) . ”  Milhas Náuticas”;

[/php]

Criando uma aplicação do zero com PHP+OO(DRY)+PDO+AJAX…

Material excelente em forma de série que mostra todo o desenvolvimento de uma Aplicação Web, desde a idéia no papel até a implementação final, utilizando conceitos, técnicas e ferramentas modernas, como:

  • Linguagem: PHP
  • Programação Orientada a Objeto, com o conceito de programação DRY em mente (“Don’t Repeat Yourself”).
  • Implementação de segurança do lado do cliente e do servidor
  • Utilização de PHP Data Objects (PDO), como forma de garantir a segurança do Banco de Dados.
  • Uso de strip_tags (), para evitar que o usuário armazene dados maliciosos no Banco de Dados.
  • Compactação de bibliotecas JavaScripts, para carregamento mais rápido da aplicação.
  • e muito mais…

Com certeza um material que deve ser analisado por todos.

Navegação nos tópicos da série:

Link oficial: WebAppFromScratch
Outro legal: http://www.phpro.org/tutorials/Creating-A-PHP-Application.html

PHP: Cálculos com data

Trabalhar com datas é uma tarefa muito comum, porém as vezes pode se tornar algo complicado se não entendermos bem como fazer. Com algumas pequenas funções podemos manipular, exibir e armazenar datas exatamente como desejamos.

Funções Básicas

Para interagir com datas há três funções básicas em PHP que fazem a maioria do trabalho.

  • time(): retorar a data e hora atual em segundos (a partir de 01 de janeiro de 1970 – chamada de timestamp). Como o resultado será sempre um valor inteiro, pode-se utilizar para somar ou subtrair, bem como armazena-las em banco de dados.
  • date(): retorna a data de acordo com o formato que definimos (mais informações de como formatar datas em PHP: date – Manual). Ou seja, essa função serve para exibir datas em formatos legíveis ao visitantes.
  • strtotime(): converte um data em formato de texto.

Dentre todas as simplificações possíveis, a que mais costuma surpreender é a função strtotime. Para quem já conhece, parece que a mesma não faz mais do que sua obrigação. Mas pra quem ainda faz cálculos com data multiplicando por 86400, chega a parecer algo mágico:

[php]
setlocale(LC_ALL, ‘portuguese’); // para o resultado sair em português;

echo ‘Amanhã: ‘, strftime(‘%A’, strtotime(‘tomorrow’));
// Amanhã: Quarta-Feira

echo ‘Próxima segunda: ‘, strftime(‘%d de %B de %Y’, strtotime(‘next monday’));
// Próxima segunda: 17 de maio de 2009

echo ‘Vencimento: ‘, strftime(‘%d/%m/%Y’, strtotime(‘+3 months’));
// Vencimento: 11/08/2010

[/php]

Mais exemplos você mesmo pode ver no manual do PHP ou na página de Date Input Formats do projeto GNU.

Fonte: unijimpe.net

‘;

$num = $files[$i];
echo ‘ ‘;
print substr(substr($num,6,100),0,-4);

echo ‘