ok, tenho este trexo de codigo que me recebe e mostra os erros após enviar o form, ou seja mostra o que falta preencher:
(index.php)
Código :
e tenho este no ficheiro envia.php que é responsavel por verificar e me enviar os erros após receber as infos do index.php
Código :
acontece que ele retorna bem os erros, so que se por exemplo eu não inserir ou selecionar nada e clicar em enviar, ele retorna os 2 erros do nome e categoria, se eu escrever um nome apenas e enviar ele não retorna o erro da categoria! e se escolher uma categoria apenas e enviar ele retorna bem o erro do nome... alem disso, como são 2 ficheiros diferentes, caso eu faça uma dessas opções e envie ele retorna apenas um erro e não mantem o que já tinha sido selecionado ou inserido antes de enviar, resumindo obriga-me a preencher e selecionar de novo. como poderia meter isto a funcionar bem
(index.php)
Código :
<?php
// Se existir sessão iniciada.
if(isset($_SESSION['erros'])){
// Exibe caso existam, todos os erros trazidos pela sessão do ficheiro "envia.php".
$mostra_erros = $_SESSION['erros'];
echo "<br><img src='estilos/erro.png' border='0'><br>Upsss!<br>";
for($i = ; $i < count($mostra_erros); $i++){
echo "<font class='erros'>$mostra_erros[$i]<br></font>";
}
}
// Termina a sessão.
session_destroy();
echo "<br>";
?>
// Se existir sessão iniciada.
if(isset($_SESSION['erros'])){
// Exibe caso existam, todos os erros trazidos pela sessão do ficheiro "envia.php".
$mostra_erros = $_SESSION['erros'];
echo "<br><img src='estilos/erro.png' border='0'><br>Upsss!<br>";
for($i = ; $i < count($mostra_erros); $i++){
echo "<font class='erros'>$mostra_erros[$i]<br></font>";
}
}
// Termina a sessão.
session_destroy();
echo "<br>";
?>
e tenho este no ficheiro envia.php que é responsavel por verificar e me enviar os erros após receber as infos do index.php
Código :
<?php
session_start(); // Inicia a sessão
// Liga-se à base de dados.
require_once 'ligar-bd.php';
// Verifica se o número de elementos contados é igual aos que se espera enviar.
// (É UMA PROTEÇÃO IMPORTANTE PORQUE PERMITE VER SE É UMA PESSOA OU ALGUM SOFTWARE A ENVIAR O FORMULÁRIO).
if( count($_POST) == 3 ){
// Limpa o lixo das variaveis antes de as guardar.
$nome = filter_var($_POST['nome'], FILTER_SANITIZE_STRING);
$categoria = filter_var($_POST['categoria'], FILTER_SANITIZE_STRING);
$id_categoria = filter_var($_POST['id_categoria'], FILTER_SANITIZE_STRING);
// Armazena todos os erros na variiável $erros para mais tarde poder mostra-los.
$erros = array();
// Verifica se os campos obrigatórios estão selecionados ou preenchidos.
// e caso o campo não esteja selecionado ou preenchido exibe os erros.
if( $nome == "" ){
$erros[] = "Preencha o nome!";
}
// Caso o valor da variável seja comparável com zero mostra o erro.
if( $categoria == "0" ){
$erros[1] = "Escolha a categoria ou insira uma nova!";
}
// Caso existam erros, cria uma sessão para transporta-los para qualquer lugar sempre que desejado.
if( count($erros) > ){
$_SESSION['erros'] = $erros;
// redireciona para o link
echo '<meta http-equiv="refresh" content="0; url=index.php" />';
}
}
exit;
?>
session_start(); // Inicia a sessão
// Liga-se à base de dados.
require_once 'ligar-bd.php';
// Verifica se o número de elementos contados é igual aos que se espera enviar.
// (É UMA PROTEÇÃO IMPORTANTE PORQUE PERMITE VER SE É UMA PESSOA OU ALGUM SOFTWARE A ENVIAR O FORMULÁRIO).
if( count($_POST) == 3 ){
// Limpa o lixo das variaveis antes de as guardar.
$nome = filter_var($_POST['nome'], FILTER_SANITIZE_STRING);
$categoria = filter_var($_POST['categoria'], FILTER_SANITIZE_STRING);
$id_categoria = filter_var($_POST['id_categoria'], FILTER_SANITIZE_STRING);
// Armazena todos os erros na variiável $erros para mais tarde poder mostra-los.
$erros = array();
// Verifica se os campos obrigatórios estão selecionados ou preenchidos.
// e caso o campo não esteja selecionado ou preenchido exibe os erros.
if( $nome == "" ){
$erros[] = "Preencha o nome!";
}
// Caso o valor da variável seja comparável com zero mostra o erro.
if( $categoria == "0" ){
$erros[1] = "Escolha a categoria ou insira uma nova!";
}
// Caso existam erros, cria uma sessão para transporta-los para qualquer lugar sempre que desejado.
if( count($erros) > ){
$_SESSION['erros'] = $erros;
// redireciona para o link
echo '<meta http-equiv="refresh" content="0; url=index.php" />';
}
}
exit;
?>
acontece que ele retorna bem os erros, so que se por exemplo eu não inserir ou selecionar nada e clicar em enviar, ele retorna os 2 erros do nome e categoria, se eu escrever um nome apenas e enviar ele não retorna o erro da categoria! e se escolher uma categoria apenas e enviar ele retorna bem o erro do nome... alem disso, como são 2 ficheiros diferentes, caso eu faça uma dessas opções e envie ele retorna apenas um erro e não mantem o que já tinha sido selecionado ou inserido antes de enviar, resumindo obriga-me a preencher e selecionar de novo. como poderia meter isto a funcionar bem