Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30
  1. #1

    [PHP] errore con mysql...

    Ciao a tutti!

    sto provando a seguire la guida per la connessione al mysql, ma riscontro alcuni errori:

    io faccio queste due righe:

    Codice PHP:
    $query "INSERT INTO news (titolo, testo, data, autore, mail) VALUES ('$titolo', '$testo', '$data', '$autore', '$mail')";

    if (
    mysql_query($query$db))
    echo 
    "L'articolo è stato inserito correttamente
    "
    ;
    else
    echo 
    "Errore durante l'inserimento
    "


    e l'unico risultato che ottengo è l'errore.
    ho provato anche ad aggiungere queste righe per vedere i valori del confronto, ed ecco il risultato:
    Codice PHP:
    echo ('[b]Variabile $db: [/b]'.$db.'
    '
    );
    echo (
    '[b]valore di $query: [/b]'.$query.'
    '
    );
    echo (
    "mysql_query($query,$db)"); 
    Variabile $db: Resource id #1
    valore di $query: INSERT INTO news (titolo, testo, data, autore, mail) VALUES ('titolo', 'testo', '1072911600', 'autore', 'info@dominio.it')
    mysql_query(INSERT INTO news (titolo, testo, data, autore, mail) VALUES ('titolo', 'testo', '1072911600', 'autore', 'info@dominio.it'),Resource id #1)

    dove ho sbagliato?
    in particolare, la riga: if (mysql_query($query, $db)), cosa fa?
    e poi, perche la query non funziona, perche non immette i dati nel database? tutto il resto è solo una verifica, ma è la query che non va!

    la connessione funziona correttamente...

    Grazie...
    Francesco
    Ciao!

  2. #2
    sono un fagiano!!!

    nel dbase, c'era una colonna di nome test anzichè testo...


    Ciao!

  3. #3
    codice:
    if (mysql_query($query, $db) OR DIE(mysql_error()))
    echo "L'articolo è stato inserito correttamente
    ";
    else
    echo "Errore durante l'inserimento
    ";
    La if verifica se la query e' true oppure false. Nel contempo la query viene eseguita.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Originariamente inviato da fmortara
    sono un fagiano!!!

    nel dbase, c'era una colonna di nome test anzichè testo...


    Allora viva i fagiani.... Ma fagiano perche' non usi la segnalazione di errore, non per l'errore.....


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    e come la imposto?
    io ho gia settato php.ini con questo valore:
    error_reporting = E_ALL & ~E_NOTICE

    non basta?
    Ciao!

  6. #6
    Originariamente inviato da fmortara
    e come la imposto?
    io ho gia settato php.ini con questo valore:
    error_reporting = E_ALL & ~E_NOTICE

    non basta?
    Veramente non intendevo questo con "segnalazione di errori", ma la funzione DIE. Se a seguito della query, metti OR DIE(mysql_error()) ottieni che in caso di errore di query ti verra' stampato l'errore occorso. Nel tuo caso ti avrebbe dato "nome di campo inesistente".

    Per quanto riguarda la gestione degli errori nel file php.ini, visto che ci sei, la tilde funziona da negazione. Nel tuo caso ti segnala tutti gli errori escluso i NOTICE. Se vuoi programmare NOTICE FREE, ti conviene abilitare la stampa dei NOTICE.

    Ora nel caso, non hai la segnalazione, ma solo l'output in bianco, e inoltre non e' detto che una prossima versione oppure l'impostazione di un altro server non rivelino il problema da costringerti poi a rimaneggiare i tuoi script in seguito.

    Meglio NOTICE FREE....


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    ok!

    adesso è:
    error_reporting: E_ALL|E_NOTICE
    e mi segnala tutto!!

    questo errore come lo risolvo?

    Notice: Use of undefined constant data - assumed 'data' in c:\dati\web\reggiocalabriaonline.com\lingua\ita\ne ws.txt.php on line 8

    questa è la pagina in questione sono poche righe:
    Codice PHP:
    <?


    $query 
    "SELECT id, data, titolo FROM news ORDER BY data DESC LIMIT 0,5";
    $result mysql_query($query$db);
    while (
    $row mysql_fetch_array($result))
    /*{ echo "<a href=\"view.php?id=$row[id]\">" . date("j/n/y/", $row[data]) . " - $row[titolo]</a>
    "; }*/
    { echo "<p class=corpo>" date("j/n/y"$row[data]) ." <a href=\"view.php?id=$row[id]\">" "$row[titolo]</p></a>
    "
    ; }

    mysql_close($db);


    ?>
    Grazie!!
    Francesco
    Ciao!

  8. #8
    Vedi a che servono i NOTICE? In questo caso php ci mette una pezza, ma se tu avevi una costante con lo stesso nome ci avrebbe messo quella e non la tua stringa.
    codice:
    echo "<p class=corpo>" . date("j/n/y", $row[data]) ." <a href ...
    $row[data] si trova fuori dal costruttore echo, e' unito dal punto e quella stringa $row[data] deve fornire l'argomento "timestamp" estratto dal db alla funzione date(). L'indice "data" va messo tra apici.
    codice:
    echo "<p class=corpo>" . date("j/n/y", $row['data']) ." <a href ...

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    ok, risolto...

    ma quindi solo $row['data'] va messo tra gli apici...

    $row['id'] nella stessa riga e $row['titolo'] vanno messi cosi come sono..

    se metto gli apici, ottengo questo errore:

    Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in c:\dati\web\reggiocalabriaonline.com\lingua\ita\ne ws.txt.php on line 8

    ma perchè? cioe, io vorrei capire il senso di quello che faccio...

    Grazie piero.mac
    Francesco
    Ciao!

  10. #10
    Considera che tutto quello che si trova tra " doppi apici sia una stringa. ECHO, PRINT INCLUDE e qualcun altro, non sono vere FUNZIONI ma costruttori. Una variabile dentro ad un costruttore di stringa viene risolta se:

    1) si trova tra doppi apici. In questo caso e' una stringa e non una costante / funzione e verra' risolta.
    echo "stringa $row[data] stringa";

    2) Se viene connessa alla stringa del costruttore tramite un . punto. In questo caso e' un array associativo in cui bisogna definire l'indice come stringa.
    echo "stringa". $row['data']. "stringa";

    3) si "isola" l'array con parentesi graffe dal costruttore in cui si trova e lo si considera come "dato esterno" al costruendo. in questo caso si usano le parentesi graffe e l'indice associativo con le apici.
    echo "stringa {$row['data']} stringa";

    Molti preferiscono quest'ultima forma, perche' evita di valutare ogni volta dove ti trovi e cosa fai. copi e incolli senza badare alle virgolette dell'indice associativo. A livello di performance non ci sono valutabili differenze.

    Spiegato con linguaggio maccheronico vulgaris, ma questa e' la sostanza.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.