form di inserimento restituisce errore

Ciao a tutti,

premetto di essere molto profana nel settore php e mysql, ma ho provato a capirci qualcosa leggendo le vostre guide, fin ora ha funzionato tutto perfettamente, anzi alla grande, poi ho inserito questo script, copiato dalla guida (con tanto di commenti, come potrete notare):

<?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();    $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à:        <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 } ?>

carico il tutto sul mio localhost e mi da' questo errore:

connesso con successo Warning: Cannot modify header information - headers already sent by (output started at C:\Programmi\Apache Software Foundation\Apache2.2\htdocs\connect.php:12) in C:\Programmi\Apache Software Foundation\Apache2.2\htdocs\insert.php on line 43

non capisco, eppure con l'inserimento diretto funzionava tutto.... avevo installato easyphp, ma poi ho disinstallato il tutto e ripristinato il sistema ad una data precedente all'installazione, può essere questo il problema?

Grazie,

evviva

inviato 9 anni fa
evviva
X 0 X

Hai ragione, nel corso PHP/MySQL c'è un errore nel nome del file utilizzato per la connessione a MySQL (ora corretto).

Il file connect.php, richiamato dagli esempi del corso, è quello riportato alla fine della quarta lezione.

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Tu sei un genio!!!!

 hai voglia di spiegarmi il motivo per cui quell' echo creava un disturbo del genere nel codice?

avevo pensato a tutto tranne che ad una cosa del genere!!!

Grazie ancora!!!!  :D

risposto 9 anni fa
evviva
X 0 X

l'echo, come qualunque istruzione o sistema di output, da problemi alla funzione header poiché questa cerca di inviare un'intestazione HTTP che DEVE precedere qualsiasi altro output generato dallo script.

Il file connect.php (quello giusto!) infatti non produce output se la connessione va a buon fine.

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

ok, grazie, ora ho capito.

Conviene che apra un nuovo topic per chiedere un'altra cosa che non trovo tra gli argomenti trattati?

Ciao,

evviva : )

risposto 9 anni fa
evviva
X 0 X

ok, grazie, ora ho capito.

Conviene che apra un nuovo topic per chiedere un'altra cosa che non trovo tra gli argomenti trattati?

Ciao,

evviva : )

SI  :police:

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