Enviado em 10/10/2013 - 11:18h
Olá a todos!
Sou meio iniciante em PHP, e estou com uma dúvida que não sei onde (e como) procurar a resposta. Já tentei procurar mas tudo o que encontrei não tem nada a ver com o meu problema.
Pois bem, eu estou desenvolvendo um projeto para o meu curso: um simples site em PHP/MySQL com geração de pedidos online.
Para facilitar, eu criei um arquivo "mysql.php" com as configurações do banco:
E nos scripts que uso o BD, eu simplesmente adiciono:
Que ele retorna a conexão com o BD.
O problema está em um script que exibe os produtos disponíveis (isso é só um exemplo simplificado):
O problema está justamente na função checaCarrinho(). Como ela é acionada uma vez a cada iteração, é gerado um include (e uma nova conexão) para cada iteração. Isso deixa o código muito mais pesado e a página demora muito pra carregar.
Se eu tiro o include de dentro da função, ela não funciona.
E agora? Teria como colocar apenas um include no começo do script, e que funcione dentro e fora da função "checaCarrinho"? O mesmo que uma variável Global, só que para include? Isso existe?
Sou meio iniciante em PHP, e estou com uma dúvida que não sei onde (e como) procurar a resposta. Já tentei procurar mas tudo o que encontrei não tem nada a ver com o meu problema.
Pois bem, eu estou desenvolvendo um projeto para o meu curso: um simples site em PHP/MySQL com geração de pedidos online.
Para facilitar, eu criei um arquivo "mysql.php" com as configurações do banco:
<?php
//Nome do servidor
$db_host = "localhost";
//Usuário do banco
$db_user = "usuario";
//Senha do banco
$db_pass = "senha";
//Nome do banco (database)
$db_name = "database";
//Comando de conexão
$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name);
//Setando a codificação de caracteres
$mysqli->set_charset('utf8');
?>
E nos scripts que uso o BD, eu simplesmente adiciono:
include $_SERVER['DOCUMENT_ROOT']."/mysql.php";
Que ele retorna a conexão com o BD.
O problema está em um script que exibe os produtos disponíveis (isso é só um exemplo simplificado):
<?php
function checaCarrinho($codigo) {
include $_SERVER['DOCUMENT_ROOT']."/mysql.php";
//Aqui um SELECT que retorna se o produto já está no carrinho
}
?>
<!-- Código HTML -->
<?php
include $_SERVER['DOCUMENT_ROOT']."/mysql.php";
//Aqui um SELECT para pegar todos os produtos
//Aqui um laço para exibir os produtos encontrados:
while () {
//Chama a função checaCarrinho para verificar se o produto já está no carrinho
if (checaCarrinho($codigo_produto) == true) {
echo "Produto adicionado";
} else {
echo "Produto não adicionado";
}
}
?>
O problema está justamente na função checaCarrinho(). Como ela é acionada uma vez a cada iteração, é gerado um include (e uma nova conexão) para cada iteração. Isso deixa o código muito mais pesado e a página demora muito pra carregar.
Se eu tiro o include de dentro da função, ela não funciona.
E agora? Teria como colocar apenas um include no começo do script, e que funcione dentro e fora da função "checaCarrinho"? O mesmo que uma variável Global, só que para include? Isso existe?