messaggi di errore

 :-\Scusate ho un problema con i messaggi di errore o conferma dopo aver inserito dati nei form..In pratica se ad es nn compilo il form nome ke  è obbligatorio mi dovrebbe stampare un mess di errore:

if(!$nome)  
       {  
           $messaggio = urlencode("Non hai inserito il nome");  
           @header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);  
          exit;  
       } 

oppure se inserisco correttamente i dati un mess di successo:

$messaggio = urlencode("Inserimento effettuato con successo (ID=$id_inserito)");  
       @header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio); 

queste sono le righe di controllo:

if(isset($_GET['msg']))  
           echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';  
?>

Invece dopo ke ho inserito i form nn leggo nessun mess!!!Come posso fare?Grazie anticipatamente!! :bye:

inviato 9 anni fa
mikkele
X 0 X

hai postato nella sezione sbagliata.

Così puoi gestire un solo messaggio alla volta, ti eri accorto?

perchè invece che passare i messaggi per URL non li printi direttamente?

Comunque dovresti provare a fare altri controlli tipo:

$nome = get_magic_quotes_gpc() ? $_POST['nome'] : addslashes($_POST['nome']);
$nome = strip_tags($nome);

$error = false;
if ( empty($nome) ){
         $error = true;
         print 'Username non inserito';
} else if ( strlen($nome) < $lunghezza_minima ) {
         $error = true;
         print 'Username troppo corto';
}

if ( ! $error ) {
        print 'operazione riuscita';
} else {
        print 'operazione non riuscita';
}

PS: ti sconsiglio di usare Exit o die, perchè come i goto non è che vadano a braccetto con la logica sequenziale dei programmi  :P

:bye:

risposto 9 anni fa
Andrea Turso
Andrea Turso
86
modificato 9 anni fa
X 0 X

Però una gestione degli errori in stile js in php sarebbe comoda secondo me :(

risposto 9 anni fa
DaD
DaD
1
X 0 X

non capisco per quale motivo?

La mia era comunque solo una proposta.

:bye:

risposto 9 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

non capisco per quale motivo?

La mia era comunque solo una proposta.

:bye:

Fors ehai frainteso. Dicevo soltanto che alla fine per egstire gli errori in un apllicazioen bisogna creare un sistema da soli, mentre in altri linguaggi come js appunto esistono dei metodi più semplici che vengono gestiti dal metodo try ad esempio.

Tutto qua  :)

risposto 9 anni fa
DaD
DaD
1
X 0 X

Grazie per la risposta ma volevo capire bene il motivo per il quale non mi stampa nessun mess dopo ke ho riempito i form e ho premuto invia..questo è il codice completo ke è tra le lezioni del corso su mysql-php:

<?php  
    if($_POST) {  
        inserisci_record();  
    }  
    else {  
        mostra_form();  
    }  
      
    function inserisci_record()  
   {  
       // richiamo il file di configurazione  
       require 'config.php';  
     
       // richiamo lo script responsabile della connessione a MySQL  
       require 'connect.php';  
     
       // recupero i campi di tipo "stringa"  
       $nome      = trim($_POST['nome']);  
       $email     = trim($_POST['email']);  
       $messaggio = trim($_POST['messaggio']);  
     
      // verifico se devo eliminare gli slash inseriti automaticamente da PHP  
       if(get_magic_quotes_gpc())  
       {  
           $nome      = stripslashes($nome);  
           $email     = stripslashes($email);  
           $messaggio = stripslashes($messaggio);  
       }  
     
       $nome      = mysql_real_escape_string($nome);  
       $email     = mysql_real_escape_string($email);  
       $messaggio = mysql_real_escape_string($messaggio);  
     
       // recupero gli altri campi del form  
      $sesso      = isset($_POST['sesso']) ? intval($_POST['sesso']) : 0;  
       $newsletter = isset($_POST['newsletter']) ? 1 : 0;  
       $attivita   = intval($_POST['attivita']);  
     
       // verifico la presenza dei campi obbligatori  
       if(!$nome)  
       {  
           $messaggio = urlencode("Non hai inserito il nome");  
           @header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);  
          exit;  
       }  
     
       // preparo la query  
       $query = "INSERT INTO utenti (nome,email,sesso,newsletter,attivita,messaggio) 
                 VALUES ('$nome','$email',$sesso,$newsletter,$attivita,'$messaggio')";  
     
       // invio la query  
       $result = mysql_query($query);  
     
       // controllo l'esito  
      if (!$result) {  
           die("Errore nella query $query: " . mysql_error());  
       }  
     
       // recupero l'id autoincrement generato da MySQL per il nuovorecord inserito  
      $id_inserito = mysql_insert_id();  
     
       // chiudo la connessione a MySQL  
       mysql_close();  
     
       $messaggio = urlencode("Inserimento effettuato con successo (ID=$id_inserito)");  
       @header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);  
      
     
   }  
     
   function mostra_form()  
   {  
       // mostro un eventuale messaggio  
       if(isset($_GET['msg']))  
           echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';  
?> <form name="form_registrazione" method="post" action="">  
         <label>nome:  
         <input name="nome" type="text" />  
         </label>  
         (obbligatorio)  
         <p>  
           <label>email:  
           <input name="email" type="text" />  
           </label>  
         </p>  
         <p> Sesso:  
           <label>  
          <input type="radio" name="sesso" value="1" />  
           M</label>  
           <label>  
          <input type="radio" name="sesso" value="2" />  
           F</label>  
         </p>  
         <p>  
           <label>inviami newletter:  
          <input name="newsletter" type="checkbox" value="1" />  
           </label>  
         </p>  
         <p>  
           <label>attivit&agrave;:  
          <select name="attivita">  
           <option value="0">:: seleziona ::</option>  
            <option value="1">studente</option>  
           <option value="2">lavoratore</option>  
            <option value="3">disoccupato</option>  
         </select>  
          </label>  
       </p>  
       <p>  
         <label>messaggio:<br />  
          <textarea name="messaggio" cols="40" rows="5"></textarea>  
         </label>  
        </p>  
        <p>  
         <input name="invia" type="submit" value="Invia" />  
        </p>  
      </form> <?php  
  }  
?> 
risposto 9 anni fa
mikkele
X 0 X

perché hai messo la @ davanti alla funzione header? per nascondere un messaggio di errore? Quella funzione è essenziale affinché tu possa vedere un messaggio di avvenuto inserimento.

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Se nn metto @ davanti ad header mi da addirittura un warning!!

Warning: Cannot modify header information - headers already sent by (output started at C:\Programmi\Apache Software Foundation\Apache2.2\htdocs\config.php:6) in C:\Programmi\Apache Software Foundation\Apache2.2\htdocs\formdb.php on line 66

é proprio da li ke sono cominciati i problemi!!

risposto 9 anni fa
mikkele
X 0 X

per forza.gli header devono essere inviati sempre prima di qualsiasi output a meno che non si stia utilizzando l'output buffer ( ob_start(); )

risposto 9 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Quindi se togliendo @ davanti ad header mi da un Warning cm devo fare per farmi dare un mess qls? Ad es se provo a nn inserire il nome ke è obbligatorio vorrei ke mi stampasse l'errore..oppure se compilo correttamente i dati il relativo mess di inserimento corretto..grazie :bye:

grazie a trashofmasters e a gianni per la disponibilità e scusate per l'ignoranza ma ho appena cominciato!! :)

risposto 9 anni fa
mikkele
X 0 X

prova con il mio metodo, non è difficile :D

:bye:

risposto 9 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Grazie ho aggiunto ob_start() e adesso li visualizza..ci sentiamo al prox problema!! O0

risposto 9 anni fa
mikkele
X 0 X

ok , attento a non esagerare con l'OB che rallenta un pò il caricamento della pagina ;)

:bye:

risposto 9 anni fa
Andrea Turso
Andrea Turso
86
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda