Chamando uma função em PHP
20/11/2019
0
Estou com um problema em chamar uma função em php, quando n tento chamar ela pelo botão ele funciona perfeitamente, segue o código:
<?php
session_start();
function a(){
$conexao = mysqli_connect("localhost", "root","");
mysqli_select_db($conexao, "meubd");
$dados = mysqli_query($conexao, "SELECT * FROM produto order by preco asc");
echo "<h1>Produtos em ordem crescente: </h1></br>";
while ($tabela = mysqli_fetch_array($dados)) {
echo"<p>Produto: ". $tabela['nome']."</br> Preço: ". $tabela['preco']. "</br>Quantidade: ". $tabela['quant']. "</br></p>";
echo "<hr></hr>";
}
}
?>
<html>
<head>
<link rel="stylesheet" type="text/css" href="sucesso.css">
</head>
<body>
<center><div>
<form action="bd.php" method= "POST" name="form">
<label> Nome do produto </label>
<input type="text"name='nome' required>
<label> Preço</label>
<input type="text" name='preco'required>
<label> Quantidade</label>
<input type="number"name='quant'required>
<input type="submit" value="Enviar"></br>
</form>
</div></center>
<button onclick='a()'>Click me</button>
</body>
</html>
<?php
session_start();
function a(){
$conexao = mysqli_connect("localhost", "root","");
mysqli_select_db($conexao, "meubd");
$dados = mysqli_query($conexao, "SELECT * FROM produto order by preco asc");
echo "<h1>Produtos em ordem crescente: </h1></br>";
while ($tabela = mysqli_fetch_array($dados)) {
echo"<p>Produto: ". $tabela['nome']."</br> Preço: ". $tabela['preco']. "</br>Quantidade: ". $tabela['quant']. "</br></p>";
echo "<hr></hr>";
}
}
?>
<html>
<head>
<link rel="stylesheet" type="text/css" href="sucesso.css">
</head>
<body>
<center><div>
<form action="bd.php" method= "POST" name="form">
<label> Nome do produto </label>
<input type="text"name='nome' required>
<label> Preço</label>
<input type="text" name='preco'required>
<label> Quantidade</label>
<input type="number"name='quant'required>
<input type="submit" value="Enviar"></br>
</form>
</div></center>
<button onclick='a()'>Click me</button>
</body>
</html>
Lucas Oliveira
Curtir tópico
+ 0
Responder
Post mais votado
20/11/2019
Olá Lucas !! Tranquilo ??
Veja bem, aplicações web rodam em duas "partes", uma parte roda na nuvem (no servidor do seu host ou seu servidor web local) e a outra parte roda no seu navegador que está na sua maquina local... o PHP roda sempre no servidor, já o HTML, CSS e javascript rodam no seu navegador.
Vamos então ao seu caso...
Quando vc "chama" seu arquivo.php isso acontece lá no seu servidor web, é á que o php vai rodar... neste momento o PHP "enxerga" o seu código assim:
ao executar seu arquivo o PHP irá ler a sua função a() e carrega-la na memória do servidor, e ao terminar de rodar irá retornar para o seu navegador na sua maquina local o seguinte:
Como vc pode ver a "parte PHP" do seu código sumiu, pois o PHP não é repassado ao navegador e roda somente no servidor (server side).
Dae quando vc clica no seu botão "Click me", o seu HTML que está no seu navegador tenta chamar uma funcao a() que não existe na memória do seu computador local e por isso não funciona.
Esperimente mudar o seu código assim:
Não consegui testar aqui, mas a idéia é testar para ver se foi preenchido algo no campo nome, se não houver nada lá então o php vai montar o formulário, caso o campo nome for preenchido e o botão submit clicado então o php vai executar a função a() e montar o relatório da query.
Testa isso aí e veja se funciona.
Espero ter ajudado,
abraço e bons códigos.
Veja bem, aplicações web rodam em duas "partes", uma parte roda na nuvem (no servidor do seu host ou seu servidor web local) e a outra parte roda no seu navegador que está na sua maquina local... o PHP roda sempre no servidor, já o HTML, CSS e javascript rodam no seu navegador.
Vamos então ao seu caso...
Quando vc "chama" seu arquivo.php isso acontece lá no seu servidor web, é á que o php vai rodar... neste momento o PHP "enxerga" o seu código assim:
<?php session_start(); function a(){ $conexao = mysqli_connect("localhost", "root",""); mysqli_select_db($conexao, "meubd"); $dados = mysqli_query($conexao, "SELECT * FROM produto order by preco asc"); echo "<h1>Produtos em ordem crescente: </h1></br>"; while ($tabela = mysqli_fetch_array($dados)) { echo"<p>Produto: ". $tabela['nome']."</br> Preço: ". $tabela['preco']. "</br>Quantidade: ". $tabela['quant']. "</br></p>"; echo "<hr></hr>"; } } ?> <html> <head> <link rel="stylesheet" type="text/css" href="sucesso.css"> </head> <body> <center><div> <form action="bd.php" method= "POST" name="form"> <label> Nome do produto </label> <input type="text"name="nome" required> <label> Preço</label> <input type="text" name="preco" required> <label> Quantidade</label> <input type="number"name="quant" required> <input type="submit" value="Enviar"></br> </form> </div></center> <button onclick='a()'>Click me</button> </body> </html>
ao executar seu arquivo o PHP irá ler a sua função a() e carrega-la na memória do servidor, e ao terminar de rodar irá retornar para o seu navegador na sua maquina local o seguinte:
<html> <head> <link rel="stylesheet" type="text/css" href="sucesso.css"> </head> <body> <center><div> <form action="bd.php" method= "POST" name="form"> <label> Nome do produto </label> <input type="text"name="nome" required> <label> Preço</label> <input type="text" name="preco" required> <label> Quantidade</label> <input type="number"name="quant" required> <input type="submit" value="Enviar"></br> </form> </div></center> <button onclick='a()'>Click me</button> </body> </html>
Como vc pode ver a "parte PHP" do seu código sumiu, pois o PHP não é repassado ao navegador e roda somente no servidor (server side).
Dae quando vc clica no seu botão "Click me", o seu HTML que está no seu navegador tenta chamar uma funcao a() que não existe na memória do seu computador local e por isso não funciona.
Esperimente mudar o seu código assim:
<?php session_start(); function a(){ $conexao = mysqli_connect("localhost", "root",""); mysqli_select_db($conexao, "meubd"); $dados = mysqli_query($conexao, "SELECT * FROM produto order by preco asc"); echo "<h1>Produtos em ordem crescente: </h1></br>"; while ($tabela = mysqli_fetch_array($dados)) { echo"<p>Produto: ". $tabela['nome']."</br> Preço: ". $tabela['preco']. "</br>Quantidade: ". $tabela['quant']. "</br></p>"; echo "<hr></hr>"; } } if(empty($_POST["nome"])){ ?> <html> <head> <link rel="stylesheet" type="text/css" href="sucesso.css"> </head> <body> <center><div> <form action="bd.php" method= "POST" name="form"> <label> Nome do produto </label> <input type="text"name="nome" required> <label> Preço</label> <input type="text" name="preco" required> <label> Quantidade</label> <input type="number"name="quant" required> <input type="submit" value="Enviar"></br> </form> </div></center> <?php } else { a(); } ?> </body> </html>
Não consegui testar aqui, mas a idéia é testar para ver se foi preenchido algo no campo nome, se não houver nada lá então o php vai montar o formulário, caso o campo nome for preenchido e o botão submit clicado então o php vai executar a função a() e montar o relatório da query.
Testa isso aí e veja se funciona.
Espero ter ajudado,
abraço e bons códigos.
Jorge Pinto
Responder
Clique aqui para fazer login e interagir na Comunidade :)