Visualizzazione risultati 1 fino 17 di 17

Discussione: [php] problema inserimento dati in database [era: non mi funge il php]

  1. #1
    Guest

    Predefinito [php] problema inserimento dati in database [era: non mi funge il php]

    Salve ragazzi perchè questo script non mi funziona?

    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    </head>
    <?php

    if(isset($_POST['submit'])){

    error_reporting(E_ALL);

    include(
    "../confi.ini.php");

    //setto le variabili
    $dest = $_POST['destinatario'];
    $oggetto = $_POST['oggetto'];
    $messaggio = $_POST['messaggio'];
    $mittente = $_SESSION['nick'];
    $date = date("d/m/Y H:i");

    //controllo se esiste il destinatario...
    $esiste=mysql_query("SELECT * FROM mp WHERE nick=".$dest."");
    $NumRow = mysql_num_rows($esiste);

    if(
    $NumRow>0){

    //se il nickname esiste, invia il messsaggio
    $query="INSERT INTO mp(mittente,oggetto,messaggio,data) VALUES ('".$mittente."','".$oggetto."','".$messaggio."','".$date."') WHERE user='".$dest."'";

    if(!
    mysql_query($query)){
    echo
    "Errore conattare l' amministratore: Impossibile inviare il messaggio";
    }else{
    echo
    "Messaggio inviato con sucesso!";
    }

    }else{
    //se non esiste...
    echo "Errore, il destinatario non esite...";
    }
    }
    ?>
    <form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
    <legend>Sciri un messaggio!</legend>
    <legend>Destinatario</legend>
    <dd><input type="text" name="destinatario" /> </dd>
    <br />
    <legend>Oggetto</legend>
    <dd><input type="text" name="oggetto" /> </dd>
    <br />
    <legend> Messaggio </legend>
    <dd> <textarea name="messaggio" rows="10" cols="30"></textarea></dd>
    <br />
    <input type="submit" name="sumbit" value="Invia mesaggio" />
    </form>
    <body>
    </body>
    </html>
    non fà niente quando premo sul bottone provate voi Link (come mittente mette lolla)

  2. #2
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Ma session_start(); l'hai messo?
    E poi sostituisci questo:
    Codice PHP:
    $esiste=mysql_query("SELECT * FROM mp WHERE nick=".$dest."");
    con questo:
    Codice PHP:
    $esiste=mysql_query("SELECT * FROM mp WHERE nick='".$dest."'");

  3. #3
    Guest

    Predefinito

    ovvio che ho messio il session (tu non sei loggato forese per questo non lo vedi) comunque niente non invia mi svuota solamente i campi...

    EDIT

    ora mi dice errore contattare l'amministratore credo che l'errore sia in questa query...

    Codice PHP:
    //se il nickname esiste, invia il messsaggio
    $query="INSERT INTO mp(mittente,oggetto,messaggio,data) VALUES ('".$mittente."','".$oggetto."','".$messaggio."','".$date."') WHERE user='".$dest."'";

    if(!
    mysql_query($query)){
    echo
    "Errore conattare l' amministratore: Impossibile inviare il messaggio";
    Ultima modifica di zomer : 11-10-2009 alle ore 22.16.13

  4. #4
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Da quando le query di inserimento (INSERT) prevedono una clausola WHERE...?

    La sintassi dovrebbe essere questa: INSERT INTO nome_tabella (elenco_campi) VALUES (elenco_valori_1), (elenco_valori_2), ...

    Se hai bisogno di specificare mittente e destinatario di un messaggio, dovresti quindi avere qualcosa del genere:
    Codice:
    INSERT INTO mp (mittente, destinatario, oggetto, messaggio, data)
    VALUES ('$mittente', '$dest', '$oggetto', '$messaggio', '$date');
    Stammi bene...
    Ultima modifica di dementialsite : 12-10-2009 alle ore 09.36.54
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  5. #5
    Guest

    Predefinito

    Non ho capito, senza il where come fa a capire dove deve inserire i dati?

  6. #6
    Data registrazione
    04-09-2009
    Messaggi
    183

    Predefinito

    lol.
    WHERE si usa con query come SELECT, traduci "Seleziona le righe (della data tabella) DOVE l'id è tal dei tali, DOVE la data è oggi" e dove quel "DOVE" significa "nelle quali". (come direbbe la famiglia Boccasana: "Ma leggi le istruzioni...!")
    Age Of Empires GIF Creator & Archive
    New! Blog informatico di scripting PHP avanzato
    Vuoi giocare online a Age of Empires The Conquerors? -> Usa Voobly !! (MSN Zone non lo supporta più dal 19 giugno 2006)
    Il mio clan di The Conquerors -> Rifugio dei Conquerors
    Il mio stato su Xfire Live Video -> Unreal Tournament 2004
    Facebook MMORPG

  7. #7
    Guest

    Predefinito

    capito...e quindi come potri risolvere?

  8. #8
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Scusa, ma una volta che hai salvato destinatario e mittente in un apposita tabella insieme al messaggio ed ad altre info a che ti serve la clausa where, che come afferma dementialsite, non è possibile collocarla in un INSERT?

    Quando vai a leggere i PM di un utente non basta fare una cosa del genere:

    Codice PHP:
    SELECT * FROM mp WHERE destinatario = 'mio_nome_utente'
    Apprezzi l'aiuto? Offrimi un caffè!

  9. #9
    Guest

    Predefinito ancora non va...

    ancora non funziona (sempre lo stesso errore...) ecco il codice:

    Codice PHP:
    <?php

    if(isset($_POST['sumbit'])){

    error_reporting(E_ALL);

    include (
    '../config.ini.php');

    //setto le variabili
    $dest = $_POST['destinatario'];
    $oggetto = $_POST['oggetto'];
    $messaggio = $_POST['messaggio'];
    $mittente = $_SESSION['user'];
    $date = date("d/m/Y H:i");

    //controllo se esiste il destinatario...
    $query2=mysql_query("SELECT * FROM utenti WHERE user='".$dest."'")
    $risu = mysql_num_rows($query2);

    if(
    $risu>0){

    //se il nickname esiste, invia il messsaggio
    $query="INSERT INTO mp (destinatario, mittente, oggetto, messaggio, data)VALUES ('".$dest."', '".$mittente."','".$oggetto."', '".$messaggio."', '".$date."')";

    if(!
    mysql_query($query)){

    echo
    "Errore conattare l' amministratore: Impossibile inviare il messaggio";

    }else{

    echo
    "Messaggio inviato con sucesso!";

    }

    }else{

    //se non esiste...
    echo "Errore, il destinatario non esite...";

    }
    }
    ?>
    <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <legend>Sciri un messaggio!</legend>
    <legend>Destinatario</legend>
    <dd><input type="text" name="destinatario" /> </dd>
    <br />
    <legend>Oggetto</legend>
    <dd><input type="text" name="oggetto" /> </dd>
    <br />
    <legend> Messaggio </legend>
    <dd> <textarea name="messaggio" rows="10" cols="30"></textarea></dd>
    <br />
    <input type="submit" name="sumbit" value="Invia mesaggio" />
    </form>
    <body>
    </body>
    </html>

  10. #10
    Guest

    Predefinito

    Prova questo:
    Codice PHP:
    <?php

    error_reporting
    (E_ALL);

    include (
    '../config.ini.php');

    if(!empty(
    $_POST['sumbit']))
    {
    //setto le variabili
    $dest = trim(htmlspecialchars($_POST['destinatario']));
    $oggetto = trim(htmlspecialchars($_POST['oggetto']));
    $messaggio = trim(htmlspecialchars($_POST['messaggio']));
    $mittente = $_SESSION['user'];
    $date = date("d/m/Y H:i");

    if(!empty(
    $dest) || !empty($oggetto) || !empty($messaggio))
    {
    //controllo se esiste il destinatario...
    $sql = 'SELECT * FROM utenti WHERE user = \'' . $dest . '\'';
    if(!(
    $result = mysql_query($sql)))
    {
    die(
    'Errore nella query: ' . mysql_error());
    }

    if(
    mysql_num_rows($result) > 0)
    {
    //se il nickname esiste, invia il messsaggio
    $sql = 'INSERT INTO mp (destinatario, mittente, oggetto, messaggio, data)
    VALUES (\''
    . mysql_real_escape_string($dest) '\',
    \''
    . $mittente . '\' ,
    \''
    . mysql_real_escape_string($oggetto) . '\',
    \''
    . $messaggio . '\',
    \''
    . $date . '\')';

    if(!(
    $result = mysql_query($sql)))
    {
    die(
    'Errore nella query: ' . mysql_error());
    }
    else
    {
    die(
    'Messaggio inviato con successo');
    }
    }
    else
    {
    die(
    'Errore, il destinatario non esite...');
    }
    }
    else
    {
    $error = array();

    if(!empty(
    $dest))
    {
    $error[] = 'Il campo destinatario è vuoto.';
    }
    if(!empty(
    $oggetto))
    {
    $error[] = 'Non hai indicato nessun oggetto.';
    }
    if(!empty(
    $messaggio))
    {
    $error[] = 'Non hai inserito nessun messaggio.';
    }

    die(
    'Si sono verificati i seguenti errori:<br />' . implode('<br />', $error));
    }
    }

    ?>
    <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <legend>Sciri un messaggio!</legend>
    <legend>Destinatario</legend>
    <dd><input type="text" name="destinatario" /> </dd>
    <br />
    <legend>Oggetto</legend>
    <dd><input type="text" name="oggetto" /> </dd>
    <br />
    <legend> Messaggio </legend>
    <dd> <textarea name="messaggio" rows="10" cols="30"></textarea></dd>
    <br />
    <input type="submit" name="sumbit" value="Invia mesaggio" />
    </form>
    <body>
    </body>
    </html>

  11. #11
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da zomer Visualizza messaggio
    Non ho capito, senza il where come fa a capire dove deve inserire i dati?
    Facciamo un po' di chiarezza: la clausola WHERE serve a selezionare i record per eseguire su di essi una determinata azione, sia essa un aggiornamento (UPDATE), una cancellazione (DELETE) o la semplice visualizzazione (SELECT).

    Ne viene da sé che i record devono già esistere nella tabella per poterli selezionare: ecco perché con query di inserimento (INSERT) la WHERE è una clausola che non ha senso... la sintassi prevista è più che sufficiente per indicarti con precisione cosa e dove sarà inserito nel database:
    - il nome della tabella da aggiornare
    - l'elenco dei campi che specifichi: se omesso, si assume che nella clausola VALUES tu specifichi i valori da assegnare a tutti i campi, nello stesso ordine in cui sono dichiarati in fase di creazione della tabella. Se invece ometti dei campi nell'elenco, i campi mancanti saranno inizializzati con i rispettivi valori di default (NULL se nella dichiarazione della tabella non è previsto un default)
    - uno o più elenchi di valori da assegnare ai campi specificati: ogni elenco è delimitato da parentesi e corrisponde ad un singolo record

    Spero di averti chiarito le idee... stammi bene...
    Ultima modifica di dementialsite : 13-10-2009 alle ore 09.49.50
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  12. #12
    Guest

    Predefinito

    @dementialsite: Grazie

    @biccheddu

    mmm...niente, non va, mi dice

    Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /membri/zomer/mp/new_mp.php on line 30
    a me sembra tutto a posto qui:

    Codice PHP:
    $sql = 'INSERT INTO mp (destinatario, mittente, oggetto, messaggio, data)
    VALUES (\''
    . mysql_real_escape_string($dest) '\',
    \''
    . $mittente . '\' ,
    \''
    . mysql_real_escape_string($oggetto) . '\',
    \''
    . $messaggio . '\',
    \''
    . $date . '\')';

  13. #13
    Data registrazione
    04-09-2009
    Messaggi
    183

    Predefinito

    VALUES (\'' . mysql_real_escape_string($dest) '\',

    (manca il secondo punto)
    Age Of Empires GIF Creator & Archive
    New! Blog informatico di scripting PHP avanzato
    Vuoi giocare online a Age of Empires The Conquerors? -> Usa Voobly !! (MSN Zone non lo supporta più dal 19 giugno 2006)
    Il mio clan di The Conquerors -> Rifugio dei Conquerors
    Il mio stato su Xfire Live Video -> Unreal Tournament 2004
    Facebook MMORPG

  14. #14
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Prima, precisamente qui, hai scritto così:
    Codice:
    $esiste=mysql_query("SELECT * FROM mp WHERE nick=".$dest."");
    e dopo, precisamente qui, hai scritto così:
    Codice:
    $query2=mysql_query("SELECT * FROM utenti WHERE user='".$dest."'")
    Ora mi chiedo quali sono i nomi corretti?
    L'errore che restituisce è questo:
    Codice:
    Notice: Undefined index: user in /membri/zomer/mp/new_mp.php on line 13
    inoltre questo:
    Codice:
    Errore nella query: Duplicate entry '0' for key 1

  15. #15
    Guest

    Predefinito

    Si scusami, ho scordato un punto

    Codice PHP:
    $sql = 'INSERT INTO mp (destinatario, mittente, oggetto, messaggio, data)
    VALUES (\''
    . mysql_real_escape_string($dest) . '\',
    \''
    . $mittente . '\' ,
    \''
    . mysql_real_escape_string($oggetto) . '\',
    \''
    . $messaggio . '\',
    \''
    . $date . '\')';

  16. #16
    Guest

    Predefinito

    Infatti se voglio invaire due messaggi mi da questo errore

    Errore nella query: Duplicate entry '0' for key 1

  17. #17
    Guest

    Predefinito

    Posta la struttura della tabella.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •