sexta-feira, 5 de abril de 2013

while() PHP





A função while(parametros) (que se traduzido fica 'enquanto') serve para repetir uma ação de acordo com os parâmetros definidos.

Veja o exemplo de um contador:

Código:
<?php
$inicio = 1;
$fim = 10;
while($inicio<=$fim) {
echo $inicio." - " ;
$inicio++;
}
?>
Saída: "1 - 2 -3 - 4 - 5 - 6 - 7 - 8 - 9 - 10"

Entendendo o código:

Foi definido duas variáveis, uma para o início e outra para o fim do contador(de 1 até 10).
E para percorrer os números de 1 a 10 foi utilizado o parâmetro while($inicio<=$fim). Que traduzindo ficaria: Enquanto a variável $inicio for menor ou igual a variável $fim, ele imprime o número com o echo e soma +1 na variável $inicio. E isso irá se repetir até a variável $inicio ficar com o valor da variável $fim, como foi definido no parâmetro;




segunda-feira, 10 de dezembro de 2012

Sistema de busca em PHP e MySQL





Olá pessoal!
Vamos falar de um assunto que muita gente pensa que é dificil de programar mas na verdade é bem fácil, estou falando de um sistema de busca.

Neste post estarei utilizando três páginas, uma para o formulário, outra para os resultados, e uma página de conexão com o banco de dados. É possível fazer também com duas páginas e até com uma pagina, mas dessa forma fica mais organizado. :)

Vamos lá...

Primeiro devemos criar uma conexão com o banco de dados. Caso tenha dúvidas de como fazer para criar um banco de dados e conectar a ele, acesse os links:

Iniciando no PHP (tópico Criando um banco de dados)
Conexão MySQL com PHP

Com o banco de dados  e conexão criadas, vamos ao que interessa.

Criarei uma página chamada index.html que conterá nosso formulário de busca.

index.html
<form action="busca.php" method="get">
<input type="text" name="palavra" />&nbsp;<input type="submit" value="Buscar" />
</form>
Esse é o formulário que enviará a palavra a ser buscada para a nossa página de resultados.

Vamos criar agora a nossa página de resultados, nomearei como busca.php.

busca.php
 
<?php
include "conexao.php";

$palavra = $_GET["palavra"];

$sql = mysql_query("SELECT * from pessoas WHERE nome LIKE '%".$palavra."%'");
$result = mysql_num_rows($sql);
if($result>=1) {
    echo "Exibindo ".$result." resultados para <strong>".$palavra."</strong><br><br>";
    while($linha = mysql_fetch_array($sql)) {
        $nome = $linha["nome"];
        echo $nome."<br>";
    }
  
} else {
    echo "Não foi encontrado nenhum resultado para <strong>".$palavra."</strong>";
}
?>
Vamos entender nossa página de resultados...
  • Na primeira linha eu chamo a conexão com o banco de dados que foi feita anteriormente.
  • Logo abaixo, eu uso o comando $_GET["palavra"], para obter os dados do formulário(repare que no código do formulário, o campo text tem a propriedade name com o valor palavra).
  • Abaixo foi criado a query para retornar os dados do banco de dados com os parâmetros da busca.
  • A varíavel $result, identifica quantos resultados foram encontrados nessa consulta.
  • A estrutura if e else verifica se possui ou não resultados.
  • Caso possua resultados é utilizado o comando While(Traduzindo fica: Enquanto), ou seja, enquanto tiver dados que condiz com os parametros da pesquisa, será exibido.
  • A variável $linha, é quem traz os resultados do banco de dados.
  • Depois é só a continuação do if e else.
Esse foi nosso post sobre sistema de busca com php, caso tenham qualquer dúvida ou precisem de um código mais avançado para implementar em seu site, só entrar em contato pelo e-mail scriptmais@gmail.com.

Até o próximo post!

Artigos relacionados:
Inserir dados no banco de dados com PHP
Atualizar dados no banco de dados com PHP
Deletar dados no banco de dados com PHP


terça-feira, 28 de agosto de 2012

stripslashes() PHP



Ao contrário da função addslashes(), a função stripslashes() remove todas as contra-barras de uma variável. Exemplo:

$texto = "Texto \"com\" aspas";
$texto =  stripslashes($texto);
echo $texto;
A saída seria:  Texto "com" aspas

addslashes() PHP





Função para inserir contra-barras(Caractere de Escape) antes de cada aspa dentro de uma variável.
Método para utilizar:
$texto = 'Texto "com" aspas';
$texto = addslashes($texto);
echo $texto;
A saída será:  Texto \"com\" aspas

Caractere de Escape do PHP








A linguagem PHP, utiliza as aspas para guardar ou exibir valores de uma string. Como por exemplo
$texto = "Guardando uma string dentro de uma variável";
ou
echo "Exibindo string";
Se você tentar exibir uma string que contenha aspas desse geito:
echo "String "com" aspas";
O PHP retornará um erro, pois as aspas do meio indicará o fim da string, quando na verdade não é.

No PHP existe um caractere de escape que é a contra-barra ' \ '. Ela permite exibir essas strings com aspas.

Para exibir esse mesmo texto da forma certa é só acrescentar  a contra-barra antes das aspas a serem exibidas. Dessa forma:
echo "String \"com\" aspas";


Ver também:
addslashes()
stripslashes()

Cadastrar texto com aspas no banco de dados - PHP & MySQL

Uma coisa que é muito chata, e acaba sendo um transtorno pra quem está iniciando, é cadastrar no banco de dados um texto que contenha aspas...
Quem nunca se deparou com o erro: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''texto'')' at line 1

O erro ocorre porque a aspa causa uma confusão no comando SQL, veja porque:



Imagine a seguinte linha:
mysql_query("INSERT INTO tabela(texto) VALUES('texto 'com' aspas')");
A palavra com está entre aspas simples, o que causa uma confusão no comando..
Repare as aspas antes de texto e depois de aspas, elas delimitam o texto que será inserido no banco de dados, e essas aspas que estão no meio do texto fazem com que o SQL se confunda.

A solução para isso seria colocar as aspas com Caractere de Escape, dessa forma:
mysql_query("INSERT INTO tabela(texto) VALUES('texto \'com\' aspas')");
As contra-barras informam ao SQL que aquelas aspas devem ser inseridas também no banco de dados.

Mas como adicionar contra-barras em todo o meu texto???

É aqui que vem o segredo... Basta usar a função addslashes() que ela faz todo o trabalho pra você.
Dessa forma:


$texto = "Texto que 'contem' aspas'''''";
$texto = addslashes($texto);
echo $texto;


A saída será: Texto que \'contem\' aspas\'\'\'\'\'

Com isso você conseguirá cadastrar textos em seu banco de dados normalmente..

Ver também:
addslashes()
stripslashes()
Caractere de Escape

Até o proximo post!! ;)

sábado, 18 de agosto de 2012

Procurar string dentro de outra string com PHP (strpos)




Com essa função você poderá encontrar a posição de uma string em um texto:

<?php
$texto = "Exemplo de como encontrar uma string dentro de outra com PHP"; // texto para procurar a string
$palavra_chave = "PHP"; // palavra a ser procurada

$posicao = strpos($texto, $palavra_chave);
echo "A palavra " . $palavra_chave . " se encontra na posição " . $posicao . " do texto.";
?>
Saída: '57'


sexta-feira, 10 de agosto de 2012

Usuários de Mac são mais ricos que de PCs


O site de viagens Orbitz está aproveitando uma descoberta interessante para lucrar um pouco mais. Uma pesquisa conduzida pela empresa, revelada pelo Wall Street Journal, apontou que usuários de Mac gastam até 30% a mais que os de PCs em hotéis. Como era de se esperar, este achado acabou virando estratégia.

De forma despretensiosa, os primeiros resultados exibidos para quem acessa o site em computadores da Apple correspondem a quartos mais luxuosos e caros. EXAME.com fez o teste e, de fato, ao procurar por hotéis para um fim de semana em São Paulo, resultados diferentes foram oferecidos, dependendo da máquina utilizada.

Quando acessado em um PC, o Orbitz apresentou duas opções de hospedagem, com diárias entre 145 e 175 dólares. Ao procurar pelas mesmas especificações em um Mac os mesmos hotéis foram exibidos. Contudo, a diferença ficou na categoria dos quartos e, por consequência, o valor da diária. Os preços de fato variaram em relação ao que foi apresentado anteriormente e ficaram entre 168 e 190 dólares, respectivamente.

O estudo também indicou que os usuários do computador da Apple estão dispostos a desembolsarem entre 20 e 30 dólares a mais por uma diária e são 40% mais inclinados a reservarem hotéis de 4 ou 5 estrelas. Quando os usuários de Mac e PC’s se encontram em um mesmo hotel, o time da maçã tende a se hospedar em quartos mais luxuosos.

Ainda de acordo com o WSJ, executivos do Orbitz confirmaram que a empresa está mesmo testando a estratégia. Contudo, enfatizaram que não estão exibindo preços diferentes para quartos e hotéis iguais, mas categorias mais luxuosas. Lembraram também que o usuário tem em mãos ferramentas que permitem organizar os resultados pelo menor preço ou melhores reviews, por exemplo.