quinta-feira, 17 de outubro de 2013

2. Configurar IIS para rodar PHP5 no Windows 7

Olá Pessoal.
Aprenderemos como configurar o IIS para rodar PHP5 no Win 7




# 1. CERTIFIQUE-SE DE QUE O SERVIÇO DO ISS ESTÁ HABILITADO NO SISTEMA:
Estando habilitado vá em 
Iniciar -> Painel de Controle -> Ativar ou desativar recursos do Windows -> Serviços de Informações da Internet
Clique no sinal '+' à esquerda e marque as opções:

  • CGI
  • Extensões ISAPI
  • Filtros ISAPI


Após clicar em OK aguarde a instalação

# 2. PHP em seu IIS
 Abra a página: 
http://www.microsoft.com/web/platform/phponwindows.aspx

Após clicar no link Install PHP 5.3.*, você será redirecionado para a Web Plataform Installer.
Siga os passos (Seguir, Next, Próximo) e a instalação será realizada.

# 3. TESTE O PHP

Crie um arquivo PHP para a pasta C:\inetpub\wwwrroot\ (localhost)com o seguinte código:
Por exemplo 'C:\inetpub\wwwrroot\teste.php'.
<?php
   phpinfo();
?>

No navegador digite o endereço:
http://localhost/teste.php.

Agora podemos rodar aplicações PHP no Windows 7 com servidor IIS.



Este tutorial tem por objetivo de configurar o básico para se rodar o PHP no servidor IIS. Existem outras configurações no arquivo php.ini relativas à utilização de extensões. Se alguém quiser ajudar a complementá-lo, fique à vontade

1. Configurar IIS para rodar PHP5 no Windows XP

Olá Pessoal.
Aprenderemos como configurar o IIS para rodar PHP5
- Iniciando o serviço IIS 
- Preparando-o para trabalhar o PHP
Segue ai o caminho das pedras, ufa!




# ESTE TUTORIAL É ADAPTADO DO ORIGINAL ENCONTRADO EM
http://www.linhadecodigo.com.br/artigo/1354/configurando-o-iis-para-rodar-php-5-windows-xp-sp2.aspx

# 1. CERTIFIQUE-SE DE QUE O SERVIÇO DO ISS ESTÁ HABILITADO NO SISTEMA:
 - Se tiver vá ao passo 2, senão:
a. No Windows XP - clique em Iniciar > Painel de Controle > Adicionar ou Remover Programas > Adicionar/Remover Componentes do Windows. Você estará na janela "Assistente de Componentes do Windows". Na listagem que aparece, desça a barra de rolagem e verifique se a opção "Internet Information Services (IIS)" está marcada.
Para Windows 7 - Em Painel de Controle > Programas e Recursos clique em "Ativar ou Desativar Recursos do Windows"

b. Marque a opção "Internet Information Services (IIS)", clique em Avançar e siga as instruções. Tenha o cd de instalação do Windows em mãos, pois será solicitado.

c. Depois de concluída a instalação, feche as janelas que estiverem abertas e no Windows Explorer procure por uma pasta chamada "Inetpub" no seu diretório C:\

d. Esta pasta é a raiz do seu servidor IIS  A mesma contém uma pasta chamada "wwwroot" (localhost), onde você criará as pastas de todos os sites que for desenvolver em asp, php, etc.



# 2. BAIXE O PHP5
- Um arquivo zip contendo a versão binária do php5 na seção "Windows Binaries" no seguinte endereço: 
http://www.php.net/downloads.php

# 3. EM C:\ 

Crie um diretório com nome "php" e descompacte o arquivo zip

# 4. CONFIGURAR VARIÁVEL DE AMBIENTE
Configure um path no Windows para que ele enxergue o php. Clique em Iniciar > Painel de Controle > Sistema.
Será aberta a janela "Propriedades do sistema"
Clique na aba "Avançado" e depois no botão "Variáveis de Ambiente". Será aberta a janela "Variáveis de Ambiente"
Na listagem inferior, chamada "Variáveis do sistema", desça a barra de rolagem e localize a variável "Path". Dê um duplo clique sobre ela e na caixa "Valor da variável", inclua no final da mesma o seguinte: 
;C:\php
Clique em OK e reinicie seu computador para que alteração no path seja ativada.
* No windows 7 o esquema é praticamente o mesmo, lembre-se de que o valor a ser posto é o caminho de onde está o diretório do php para que o windows consiga executar o "PHP.EXE".

# 5.  EM C:\php\
Localize um arquivo chamado php.ini-recommended e o renomeie como php.ini.


# 6.  EM C:\php\php.ini

Substitua o conteúdo das linhas abaixo conforme especificado:
a. linha 517: doc_root = C:\Inetpub\wwwroot
b. linha 524: extension_dir = C:\php\ext
c. linha 535: cgi.force_redirect = 0 (tem que tirar o ';' do início)
Salve o arquivo e feche o editor.

# 7. CONFIGURANDO O IIS

 Clique em:
 Iniciar > Painel de Controle > Ferramentas Administrativas > Internet Information Services

Com o IIS aberto, clique no sinal de mais ao lado do ícone de identificação do seu computador, no lado esquerdo da tela.
Clique com o botão direito sobre a pasta "Sites da Web", e selecione "Propriedades"
Será aberta a janela "Propriedades de Sites da Web".
Na aba "Filtros ISAPI"clique em "Adicionar"
Será aberta a janela "Propriedades do filtro". 
No campo "Nome do Filtro", digite "PHP". 
No campo "Executável", digite C:\php\php5isapi.dll  Clique em OK.

Agora, clique na aba "Diretório Base". 
No campo "Permissões de execução", selecione "Somente scripts" e 
clique no botão "Configuração".

Será aberta a janela "Configuração de aplicativo".
Na aba "Mapeamentos". Deixe marcada a opção "Armazenar em cache aplicativos ISAPI" e clique no botão "Adicionar".

Será aberta a janela "Adicionar ou editar mapeamento de extensão de aplicativo".
No campo "Executável", digite C:\php\php5isapi.dll .
No campo "Extensão", digite .php .Clique em OK e OK novamente.

Ainda na janela "Propriedades de Sites da Web", clique na aba "Documentos".
Deixe marcada a opção "Ativar documento padrão" e clique no botão "Adicionar".

Será aberta a janela "Adicionar documento padrão".
No campo "Nome do documento padrão", digite index.php e clique em OK.
Clique em OK novamente para voltar para a tela principal do IIS.
Clique sobre o ícone do computador que identifica sua máquina, logo acima da pasta "Sites da Web", botão direito, "todas as tarefas" > Reiniciar IIS.
Para testar, crie uma pasta em C:Inetpub/wwwroot, abra seu editor e crie uma página teste.php.

Por exemplo C:Inetpub/wwwroot/pastateste.

Em teste.php digite:
<?php
  echo "<p align="center"> PHP rodando no IIS!</p>";
?>

No navegador digite a url:

http://localhost/pastateste/teste.php



Este tutorial tem por objetivo de configurar o básico para se rodar o PHP no servidor IIS. Existem outras configurações no arquivo php.ini relativas à utilização de extensões. Se alguém quiser ajudar a complementá-lo, fiquem à vontade

quinta-feira, 1 de agosto de 2013

Manipulando base de dados MySql com PHP e JQuery

Olá Pessoal.
Aprenderemos um pouco sobre o que podemos fazer com as
tecnologias PHP, MyQql e JQuery trabalhando juntas.
 - trazer informações do banco de dados sem refresh na página;
 - carregar combobox com JQuerye MyQql;
 - carregar  combobox  com o evento onChange() de uma outra;
 - update no banco de dados com JQuery;
 - métodos $.post() e $.ajax();
 - funções JQuery e outras dicas;




# NOSSO EXEMPLO SERÁ BASEADO EM UM SISTEMA GERENCIADOR DE PEDIDOS DE 
# BOLSAS PARA CURSOS DIVERSOS, NESSE SISTEMA O USUÁRIO SERÁ CAPAZ DE 
# ATENDER OU NÃO AO PEDIDO DE BOLSAS POR TURMA E MATRICULAS

# 1. AO SELECIONAR O CURSO EM UMA COMBOBOX UMA OUTRA SURGIRÁ CONTENDO TODOS AS TURMAS DO CURSO SELECIONADO.

# 2. AO SELECIONAR UMA DAS TURMAS SERÁ EXIBIDO UMA LISTA COM TODOS OS ALUNOS (MATRÍCULAS) QUE SOLICITARAM PEDIDO DE BOLSA.

# 3. AO MARCAR UM CHECKBOX (ATENDER PEDIDO) AUTOMATICAMENTE O PEDIDO SERÁ ATENDIDO OU NÃO CASO SEJA DESMARCADO.
NOTA: Para este post é necessário que na sua base de dados sejam criadas as seguintes tabelas: alunos, cursos, turmas e matriculas
Sendo que um aluno está ligado à uma matrícula;
Uma matrícula está ligada a uma turma
Uma turma está ligada a um curso
É necessário ainda o JQuery 1.8.3


#======================================================================

 # 1) INICIALMENTE CRIAREMOS O ARQUIVO DE CONEXÃO COM O MYSQL
conexao.inc.php
<?php

  define("SERVIDOR", "localhost");
define("USUARIO", "root");
define("SENHA", "secreta");
define("BANCO", "bdescola");

$conexao = new mysqli(SERVIDOR, USUARIO, SENHA, BANCO);

if ($conexao -> connect_error)
{
    die('Erro ao conectar a Base de Dados (' . $conexao -> connect_errno . ') ' . $conexao -> connect_error);
}

?>



#=======================================================================
# 2) CRIAMOS O ARQUIVO DE ESTILO CSS
estilo.css


body
{
margin:0 auto;
text-align:center;
}

.corpo
{
width:900px;
border:none;
margin:0 auto;
background-color:#E3EDF2;
text-align:center;
}

hr
{
float:left;
clear:both;
background-color:#660000; width:100%; margin-bottom:20px;
}

.selecao
{
width:800px;
float:left;
margin-bottom:10px;
margin-top:10px;
padding:6px;
display:block;

}

.impar, .par
{
padding:3px;
text-align:left
}
.impar
{
background-color:#FFFF99;
}

.par
{
background-color:#FFFFCC;
}

.visivel
{
display:block;
visibility:visible;
}
.oculta
{
display:none;
visibility:hidden;
}
#turmas, #cursos
{
width:500px;
height:20px;
margin:0;
border : #AAA 1.4px solid;
                background: #EEF1F2;
color: #333333;
float:left;
}

#turmas:focus, #cursos:focus
{
border: #CC0033 1.4px solid;
background: #FFFF99;
color: #660000;

}

.rotulo
{
width:140px;
line-height:20px;
display:block;
float:left;
text-align:left;
padding-left:10px;
margin-right:-0.5px;
color:#FFFFFF;
background-color:#8D8AC6;
}

.titulo
{
width:900px;
line-height:30px;
display:block;
float:left;
text-align:center;
color:#FFFFFF;
background-color:#8D8AC6;
}

.atalhos li
{
list-style:none;
display:inline;
}
.atalhos li a
{
width:30px;
display:inline-block;
color:#FFFFFF;
background-color:#BAADD6;
text-decoration:none;
text-align:center;
line-height:22px;
}
.atalhos li a:hover
{
background-color:#660033;
}

#alunos table
{
width:900px;
border:#D8DDE2 1px solid;
float:left;

}

#alunos table tr
{
background-color:#D8DBE0;
margin-top:4px;
}

#alunos table tr td, #alunos table tr th
{
padding:6px;
}

#alunos table tr th
{
background-color:#8D8AC6;
color:#FFFFFF;
}
#alunos table tr th.vazio
{
background-color:#CCCCFF;
}

#alunos table tr.marcador
{
background-color:#BFE6DB;
}

#alunos table tr:hover
{
background-color:#FFFF99;
}
.top
{
display:block;
background:#BAADD6;
text-decoration:none;
color:#333333;
float:left;
line-height:18px;
padding:5px;
margin:5px;

}


#=======================================================================
# 3) CRIAMOS O ARQUIVO DE SCRIPT JS (BAIXEM O JQUERY 1.8.3)
script.js


// ESTE TRECHO É EXECUTADO ASSIM QUE O PÁGINA É CARREGADA
$(document).ready(function()
{
// LIMPAMOS TODOS OS RESULTADOS CONSTANTES NA TELA;
$("#lista").hide();

// AO TROCAR A SELEÇÃO DA COMBO CURSOS:
        $('#cursos').change(function()
{

// 1. LIMPAMOS TODOS OS RESULTADOS CONSTANTES NA TELA;
$("#lista").fadeOut('slow');
$("#lista").removeClass().addClass("oculta");

// 2. SE HÁ VALOR É CHAMADA A FUNÇÃO QUE CARREGA A COMBO DE TURMAS
if($(this).val())


$.carregaTurmas($(this).val());
}
else
{
$("#turmas").removeClass().addClass("oculta");
$("#turmas").attr("disabled", "disabled");
$("#areaTurmas").fadeOut('slow');
}
});


// AO TROCAR A SELEÇÃO DA COMBO TURMAS:
$('#turmas').change(function()
{

// 1. SE HÁ VALOR É CHAMADA A FUNÇÃO QUE CARREGA A LISTA DE ALUNOS
if($(this).val() && $('#cursos').val()) 
{
$.carregaMatriculas();
}
});
});


// FUNÇÃO QUE CARREGA A COMBO DE TURMAS DO CURSO SELECIONADO
$.carregaTurmas = function(id_curso)
{
if(id_curso != "") 
{
$("#turmas").removeClass().addClass("visivel");
$.ajax(
{
type: "POST",
url: "turmas_ajax.php",
data: {"curso_id": id_curso},
async: false,
complete: function()
{
$("#areaTurmas").fadeTo(500,1).show();
$("#turmas").removeClass().addClass("visivel");
$("#turmas").removeAttr("disabled");
},        
cache: false,
success: function(listaResult)
{
if($.trim(listaResult) != "")
{
$('#cursos').blur();
$('#turmas').focus();
$("#turmas").removeClass().addClass("visivel");
$('#turmas').html(listaResult);
}
},
error: function(error)
{
alert("Erro ao solicitar dados. Tente mais tarde: " + error);
}
});
}
else
{
alert("Selecione o curso e a turma");
}
};


// FUNÇÃO QUE CARREGA A TABELA DE ALUNOS DA TURMA SELECIONADA
$.carregaMatriculas = function()
{
if($('#cursos').val() && $('#turmas').val()) 
{
$.ajax(
{
type: "POST",
url: "matriculas_ajax.php",
data: {"turma_id": $('#turmas').val()},
timeout: 2000,
async: false,
beforeSend: function()
{
$("#alunos").remove();
$("#lista").addClass("carregando");
},
complete: function()
{
$("#lista").fadeTo(500,0.8).removeClass("carregando");
$("#lista").removeClass("oculta");
$("#lista").fadeIn('slow');
},        
cache: false,
success: function(listaResult)
{
if($.trim(listaResult) != '')
{
var conteudoLista = $('#lista').html() + "<div id='alunos'> </div>";
$('#lista').html(conteudoLista);
$("#alunos").prependTo("#lista");
$("#alunos").show('slow');
$("#alunos").html(listaResult).fadeIn('slow');
$('#turmas').focus();
}
},
error: function(error)
{
alert("Erro ao solicitar dados. Tente mais tarde: " + error);
}
});

}
else
{
alert("Selecione o curso e a turma");
}

// COM A LISTA CARREGADA É CHAMADA FUNÇÃO QUE MARCA DE VERDE A LINHA
// DOS PEDIDOS DE BOLSAS ATENDIDOS
$.confereBolsas();
};

// AO MARCAR OU DESMARCAR O CHECKBOX ESTA FUNÇÃO É CHAMADA PARA
// FAZER O UPDATE NO BANCO, ATENDENDO OU NÃO O PEDIDO DO BOLSISTA
$.concedeBolsa = function(e)
{
if($(e).is(':checked'))
{
$(e).parent().parent().removeClass();
$(e).parent().parent().addClass('marcador');

$.post("update_ajax.php",{matricula_id: $(e).val()}, function(resposta)
{
if($.trim(resposta) != 'OK')
{
$(e).attr('checked', false);
$(e).parent().parent().removeClass('marcador');
}
});
}
else
{
$(e).parent().parent().addClass();
$(e).parent().parent().removeClass('marcador');
$.post("update_ajax.php",{matricula_id: $(e).val(), negar: '0'}, function(resposta)
{
if($.trim(resposta) != 'OK')
{
$(e).attr('checked', false);
$(e).parent().parent().removeClass('marcador');
}
});
}
};

// FUNÇÃO PARA MARCAR OS PEDIDOS DE BOLSAS ATENDIDOS
$.confereBolsas = function()
{
// COM UM LAÇO PERCORRO TODOS OS CHECKBOX DAS MATRÍCULAS
$("input[name='respond[]']").each(function()
{
// SE O CHECKBOX ESTIVER MARCADO MUDO A COR DA LINHA
if($(this).is(':checked'))
{
$(this).parent().parent().removeClass();
$(this).parent().parent().addClass('marcador');
}
});
};



#=======================================================================
# 4) CRIAMOS O ARQUIVO PHP QUE CONSULTA AS TURMAS DO CURSO SELECIONADO
turmas_ajax.php

<?php
include_once("conexao.inc.php");
extract($_POST, EXTR_OVERWRITE);
   
        $i = 1;
$curso_id = mysqli_real_escape_string($conexao, $curso_id);
$sql = "SELECT id, nome FROM turmas WHERE fk_curso_id = '".$curso_id."' ORDER BY nome ASC";

if($consulta = $conexao -> query($sql))
{
if($consulta -> num_rows > 0)
{
$opcoes = "<option value=\"0\">SELECIONE...</option>";
while($lista = $consulta -> fetch_assoc())
{
$opcoes .=  "<option value=\"{$lista['id']}\" class=\"$clasCSS\">{$lista['nome']}</option>";

$clasCSS = $i%2 ? "impar" : "par";




$i++;
}
}
}
echo utf8_encode($opcoes);

?>



#=======================================================================
# 5) CRIAMOS O ARQUIVO PHP QUE CONSULTA AS MATRICULAS DA TURMA SELECIONADA
matriculas_ajax.php

<?php
include_once("conexao.inc.php");

extract($_POST, EXTR_OVERWRITE);

$turma_id = mysqli_real_escape_string($conexao, $turma_id);
$resultado = "";
$link = "";
$titulo = "MATRICULAS COM PEDIDOS DE BOLSAS"

$sql = "SELECT  a.cpf, a.nome, m.id AS matricula, m.flag_bolsa
FROM matriculas AS m 
INNER JOIN alunos AS a 
ON a.id = m.fk_aluno_id
WHERE flag_bolsa IS NOT NULL 
AND  m.fk_turma_id='".$turma_id."' ORDER BY a.nome";

if($consulta = $conexao -> query($sql))
{
if($consulta -> num_rows > 0)
{
$letra = "Z";
$ancora = array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","X","Y","W","Z");

# ESTE TRECHO/LAÇO MONTA A TABELA COM A LISTA DE ALUNOS/MATRÍCULAS
# DA TURMA
while($lista = $consulta -> fetch_assoc())
{
$letraInicial = substr($lista['nome'],0,1);

if($letra != $letraInicial)
{
if(in_array($letraInicial, $ancora, true))
{
$indice = array_search($letraInicial, $ancora);

unset($ancora[$indice]);

$link = "<a name='" . $letraInicial . "'>";

$atalhos.="<li><a href='#" . $letraInicial . "'>". $letraInicial ."</a></li>\n";
}
else
{
$link = "";
}

$resultado .= "<tr><th id='letra'>" . $letraInicial . $link ."</th><th colspan='3' class='vazio'> &nbsp; </th></tr>";
$letra = substr($lista['nome'],0,1);
}
# MARCO O CHECKBOX DO PEDIDOS DE BOLSA ATENDIDOS
$marcado = $lista['flag_bolsa'] == '2' ? "checked" : "";
$resultado .= "<tr><td>" . $lista['cpf'] . "</td> <td>" . $lista['nome'] ."</td> <td>" . $lista['matricula'] . "</td><td><input type='checkbox' " . $marcado . " name='respond[]' value='" . $lista['matricula'] . "' onChange=\"$.concedeBolsa($(this));\"></td></tr>\n";
}

# OS ATALHOS SÃO ÂNCORAS HTML PARA ENCONTRAR ALUNOS 
# CUJOS NOMES INICIEM COM UMA DETERMINADA LETRA
$atalhos = $atalhos !="" ? "\n<tr><th colspan='4' class='vazio'><ul class='atalhos'>".$atalhos."</ul></th></tr>\n" : "";

$resultado = $resultado != "" ? "<tr> <th>CPF</th> <th>ALUNO</th> <th>MATR&Iacute;CULA</th> <th>CONCEDER BOLSA</th></tr>".$resultado : "";

$resultado = $resultado != "" ? "<p class=\"titulo\">".$titulo."</p><table>".$atalhos.$resultado."</table>": "";

echo  $resultado != "" ? utf8_encode($resultado) : "";
}
else
echo "<p class=\"titulo\">N&Atilde;O H&Aacute; MATR&Iacute;CULAS PARA ESTA TURMA</p>";
}
else
echo "<p>ERRO AO CONSULTAR BASE DE DADOS</p>";

?>



#=======================================================================
# 6) CRIAMOS O ARQUIVO PHP QUE ATUALIZA AS MATRICULAS DA LISTA

update_ajax.php

<?php
include_once("conexao.inc.php");

extract($_POST, EXTR_OVERWRITE);

$id = mysqli_real_escape_string($conexao ,$matricula_id);

$valor = $negar == '0' ? '3' : '2';


$sql = "UPDATE matriculas SET flag_bolsa = '" . $valor . "' WHERE matriculas.id ='" . $id . "'";

if($consulta = $conexao -> query($sql))
echo "OK";
else

echo "0";
?>




#=======================================================================
# 7) CRIAMOS O ARQUIVO PHP QUE ATUALIZA AS MATRICULAS DA LISTA

bolsistas.php

<?php
include_once("conexao.inc.php");

$sql = "SELECT id, nome FROM cursos ORDER BY nome ASC";
$conexao;
if($consulta = $conexao -> query($sql))
{
if($consulta -> num_rows > 0)
{
$opcoes = "<option value=\"\">SELECIONE...</option>";
while($lista = $consulta -> fetch_assoc())
{
$opcoes .=  "<option value=\"{$lista['id']}\" class=\"$clasCSS\">{$lista['nome']}</option>";

$clasCSS = $i%2 ? "impar" : "par";


$i++;
}
}
}
?>
<!DOCTYPE html>
<html>
    <head>
        <title>Exemplo PHP, JQuery e MySql</title>  
        <link rel="stylesheet" href="estilo.css">
        
        <script language="javascript" type="text/javascript" src="jquery-1.8.3.js"></script>
        <script language="javascript" type="text/javascript" src="script.js"></script>
    </head>
    
    <body>
        <a name="topo"></a>
        <div class="corpo">
            <div class="titulo">GERENCIAMENTO DE PEDIDOS DE BOLSA DE ESTUDOS</div>
            
            <div class="selecao">                        
                <label class="rotulo">CURSO:</label>
                <select name="cursos" id="cursos"  class="visivel">
                <?=$opcoes?>
                </select>
            </div> 
        
            <div id="areaTurmas" class="selecao">                        
                <label class="rotulo">TURMA:</label>
                <select name="turmas" id="turmas" class="oculta">
                </select>
            </div> 
            <hr>
            <div id="lista">
                <div id="alunos">                        
                
                </div>
            </div>
            
        <a href='#topo' class="top"><small>TOPO</small></a>
        </div>
</body>
</html>



Estes exemplos serão melhor entendidos na prática, pois aparentemente observando-os apenas aqui no blog ficamos um a impressão de que são códigos complexos, mas na prática são bem fáceis de serem compreendidos e aplicáveis.
Quaisquer dúvidas e inconsistências no código retratem e deixem seus comentários