Arquivo da tag: PHP

Analisando cada item de uma URL utilizando PHP

O PHP tem um função para analisar cada item de uma URL, ela se chama parse_url:

$larr_urlAddress = parse_url ( "http://meuusuario:minhasenha@www.google.com:88/dashboard/file.php?q=busca#item2" );

A função irá criar um array cujas informações poderão ser acessadas da seguinte forma:

echo "<BR>Scheme: ".$larr_urlAddress['scheme']; // No exemplo, retornará o valor http
echo "<BR>Host: ".$larr_urlAddress['host']; // No exemplo, retornará o valor www.google.com
echo "<BR>Port: ".$larr_urlAddress['port']; // No exemplo, retornará o valor 88
echo "<BR>User: ".$larr_urlAddress['user']; // No exemplo, retornará o valor meuusuario
echo "<BR>Password: ".$larr_urlAddress['pass']; //No exemplo, retornará o valor minhasenha
echo "<BR>Path: ".$larr_urlAddress['path']; // No exemplo, retornará o valor /dashboard/file.php
echo "<BR>Query: ".$larr_urlAddress['query']; // No exemplo, retornará o valor q=busca
echo "<BR>Fragment: ".$larr_urlAddress['fragment']; // No exemplo, retornará o valor item2

Como imprimir o conteúdo de um array em HTML utilizando PHP

Se você quiser ver o conteúdo de um array isso pode ser feito através do comando “print_r”, mas o conteúdo aparece sem formatação no HTML obrigando a visualizar o conteúdo do código fonte da página para visualizar a estrutura formatada do Array.

Mas é possível visualizar de forma direta, basta utilizar o código abaixo:

echo "<pre>".htmlentities( print_r($Array, true) )."</pre>";

O conteúdo do Array será visto como o exemplo abaixo, sem precisar apelar para o truque de visualizar o código fonte.

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 0
        )

    [1] => Array
        (
            [0] => 0
            [1] => 1
        )
)

Como instalar a extensão php-xml no PHP 7.x em ambiente Linux Ubuntu?

Ao tentar instalar o PHPBB em meu servidor, me deparei com a seguinte mensagem:

PHP XML/DOM support
In order for phpBB to function correctly, the PHP XML/DOM extension needs to be available.

Como fazer para instalar a biblioteca mencionada na mensagem acima? Execute o comando para instalar o módulo:

sudo apt-get install php7.0-xml

Agora atualize o Apache:

sudo /etc/init.d/apache2 restart

Como saber o dia, mês, ou o ano de uma data específica usando PHP?

Este código permite ajustar qual o formato de entrada utilizando a mascara ‘d/m/Y’:

<?
echo DateTime::createFromFormat('d/m/Y', '25/12/2016')->format('d'); // Dia
echo DateTime::createFromFormat('d/m/Y', '25/12/2016')->format('m'); // Mês
echo DateTime::createFromFormat('d/m/Y', '25/12/2016')->format('Y'); // Ano (4 digitos)
?>

Comando num_rows do MySQLi (prepared statement) retorna apenas o valor 0

Continuando os meus trabalhos de conversão de um código que utilizava a conexão MySQl para a conexão MySQLi encontrei um novo problema: o comando num_rows sempre retornava o valor 0, mesmo nas consultas em que eu sabia que traziam mais resultados:

$lobj_mysqliQuery = $pobj_DBObject->stmt_init();
$lobj_mysqliQuery->prepare("SELECT id FROM usuario WHERE nome like ?");
$lobj_mysqliQuery->bind_param("s", $plstr_usuarioNome);
$lobj_mysqliQuery->execute();

$llng_usuarioQuantidade = $lobj_mysqliQuery->num_rows;

Bem, onde estava o erro? Aparentemente (novamente) estava tudo correto. Porém, o MySQLi tem uma forma diferente de ver a vida…:)

O erro estava na ausência da utilização do comando store_result(). Que, segundo o manual do PHP, serve para transferir o resultado da última consulta (Resultset) para a variável desejada. Assim, como não havíamos executado este comando, era como se estivéssemos tentando pegar o número de linhas de um ResultSet vazio.

o código final ficou assim, e funcionou:

$lobj_mysqliQuery = $pobj_DBObject->stmt_init();
$lobj_mysqliQuery->prepare("SELECT id FROM usuario WHERE nome like ?");
$lobj_mysqliQuery->bind_param("s", $plstr_usuarioNome);
$lobj_mysqliQuery->execute();
$lobj_mysqliQuery->store_result();

$llng_usuarioQuantidade = $lobj_mysqliQuery->num_rows;

* Observação: Nestes exemplos estão ocultos os comandos responsáveis por abrir e fechar a conexão com o banco de dados.

Warning: mysqli_connect() [function.mysqli-connect]: (HY000/2005): Unknown MySQL server host ‘localhost:3306’ (11004)

Ao tentar migrar um sistema PHP das conexões MySQL para MySQLi, me deparei com o seguinte problema:

Warning: mysqli_connect() [function.mysqli-connect]: (HY000/2005): Unknown MySQL server host ‘localhost:3306’ (11004)

Aparentemente não havia erro:

$lobj_Database = mysqli_connect(SETTINGS_SGBD_HOST.":".SETTINGS_SGBD_PORT, SETTINGS_SGBD_USER, SETTINGS_SGBD_PASSWORD, SETTINGS_SGBD_DATABASE);

Aparentemente, pois não me lembrei que a sintaxe do MySQLi é um pouco diferente. O endereço da porta passa a ser o último parâmetro da conexão. Ficando assim:

$lobj_Database = mysqli_connect(SETTINGS_SGBD_HOST, SETTINGS_SGBD_USER, SETTINGS_SGBD_PASSWORD, SETTINGS_SGBD_DATABASE, SETTINGS_SGBD_PORT);

Importante lembrar que este é um método de conexão estilo procedural, e que o MySQLi suporta o estilo orientado a objeto também.