Ir para conteúdo
Fórum Script Brasil
  • 0

problema de verificação de erros


joanita

Pergunta

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)

 

<?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>";
?>

 

e tenho este no ficheiro envia.php que é responsavel por verificar e me enviar os erros após receber as infos do index.php

<?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;
?>

 

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?

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
$erros[] = "Escolha a categoria ou insira uma nova!";

Como não temos o código todo para testar apenas consigo dizer que:

1. Em vez de indentificar o indice adiciona o erro assim.

$erros[] = "Escolha a categoria ou insira uma nova!";

2. Devia definir um valor para o index

 

if( count($erros) >  ){

Espero que com estas correções você consiga resolver o problema.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...