Jump to content
Fórum Script Brasil
  • 0

problema de verificação de erros


joanita
 Share

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...