leggibilità del codice, ritorno echo error multipli, ritorno echo error errato

ciao. ho implementato questo script per verificare l'inserimento del campo in questione:

if(!empty($_POST['crediti']))
            {
               if(ereg("[0-9]{1,2}", $_POST['crediti']) && $_POST['crediti'])
               {
                  $crediti = $_POST['crediti'];
               }
               else
               {
                  echo "Crediti non validi!";
               }
            }
            else
            {
               echo "Il campo crediti è vuoto! <br />";
            }

mi chidevo 2 cose:

  • il codice è leggibile così? io lo trovo leggibile, ma vedo che molti scrivono in altro modo, non vorrei prendere brutte abitudini....
  • ho altri campi similari, ma se tutti sono vuoti si vedrà l'avviso solo del primo che verrà letto, come si può elencare tutti i campi vuoti subito? è solo una curiosità, magari non ne vale la pena
  • se inserisco lo zero in questo campo il messaggio di errore è che il campo è vuoto e non che il campo non è valido, perchè?

grazie

inviato 8 anni fa
gabar-el
X 0 X

ci sono molti modi per effettuare una sequenza di controlli, il tuo ha degli IF annidati e quindi complica un po' il codice. Ti mostro un metodo alternativo, che però si ferma al primo errore riscontrato

do {
   if(!trimy($_POST['crediti'])) {
      echo "Il campo crediti è vuoto! <br />";
      break;
   }

   if("ereg("[0-9]{1,2}", $_POST['crediti'])) {
      echo "Crediti non validi!";
      break;
   }
} while(false);

Il primo IF serve a verificare se è stato inserito qualcosa nel campo, ed è migliore dell'IF del tuo codice (!empty) che ti determina il problema dello zero di cui parli. Perché empty ritiene che lo 0 sia equivalente ad una stringa vuota.

Non ti conviene mostrare tutti gli errori riscontrati nel form poiché alcuni controlli non dovrebbero essere effettuati se altri controlli in precedenza hanno fallito (es.: non puoi controllare se in un campo c'è un numero se poi il campo è vuoto)

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

ho capito grazie, io avevo fatto così:

$crediti = $_POST['crediti'] ? trim($_POST['crediti']) : null;
            if ($crediti) {
               if (!ereg("[0-9]{1,2}", $crediti)) {
                  echo "Crediti non validi!";
                  $crediti = null;
               }
            } else {
               echo "Il campo crediti è vuoto! <br />\n";
            }

funzionare funzia, del resto che dici?

risposto 8 anni fa
gabar-el
X 0 X

puoi sostituire

$crediti = $_POST['crediti'] ? trim($_POST['crediti']) : null;

con

$crediti = trim($_POST['crediti']);

il codice successivo funzionerebbe ugualmente

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda