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

    textarea con inserimento heeeeeeeelp!!

    Ciao a tutti, non me la cavo ancora molto bene con la programmazione per questo ho bisogno di fare una domanda. Ho la seguente textarea che una volta compilata e inviata basta fare un refresh della pagina con f5 e l'invio viene effettuato nuovamente. Come posso risolvere questo problema? E visto che ci sono volevo chiedere com'era possibile una volta inserita e inviata la domanda, visualizzarne l'anteprima senza nuovamente riproporre la textarea. Grazie ciao!!

    <form name="dom" method="post" onSubmit="return textarea();">
    <textarea name="domanda" cols="50" rows="9" onKeyUp="inviadomanda(this.form)"></textarea><input value="1000" size="3" name="num4" disabled />
    <input type="submit" value="Invia Domanda" name="submit">
    </form>
    </table>

    <?php
    if(!isset($_POST['submit'])){

    setlocale(LC_TIME, 'ita');
    $timestamp = strftime("%A %d %B %Y");
    connessione();
    $insert = "INSERT INTO domande (Domanda, Id_Inserzionista, Data_Domanda) VALUES ('$_POST[domanda]', '$_SESSION[Id]', '$timestamp')";
    $res = MySQL_query($insert);

    if (!$res){
    echo ("Errore n: " . mysql_errno()." : "."Query non valida: " . mysql_error());
    }
    else{
    echo "La seguente domanda è stata inviata e sarà visionata nel più breve tempo possibile.

    <fieldset>" . wordwrap($_POST['domanda'],49, "\n", 1) . "</fieldset>";
    }
    }
    ?>

  2. #2
    up

  3. #3
    Per evitare un doppio inserimento, puoi far puntare la action ad uno script che preleva la variabile da $_POST, fai l'immissione nel DB, quindi fai un redirect (senza visualizzare alcunché) ad un'altra pagina dove puoi mettere un messaggio di cortesia o qualcosa del genere.

    Se invece vuoi visualizzare un'anteprima, puoi fare in due modi.
    Il primo (onestamente un po' "sporco") è quello di far visualizzare il messaggio in una form e di mettere la stessa stringa in un campo HIDDEN.
    Alla pressione del bottone in questa seconda form, vai a recuperare la variabile passata nel campo hidden e la salvi nel DB.
    Il secondo metodo, migliore, è quello di salvare la stringa in una sessione.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  4. #4
    Grazie della risposta. Comunque il mio problema era generato più che altro dal fatto che volevo fare tutto nella stessa pagina...Ma senti un po' invece; io stavo provando a fare una cosa ancora migliore:

    Una select prima della insert con la clausula IF NOT EXIST ma sembra che mysql non ne voglia sapere, tu conosci la sintassi esatta per caso?

  5. #5
    IF NOT EXIXTS si usa per il CREATE DATABASE o TABLE.
    Non l'ho mai visto usato per una query di SELECT.

    Ad ogni modo, non capisco cosa ti serve.
    Mi potresti fare un esempio specifico?

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  6. #6
    Una roba del tipo:

    IF NOT EXIST (SELECT)
    .....
    INSERT

    Visto su sql server 2005

  7. #7
    Beh... questa mi sembra più una Stored Procedure o un Trigger, piuttosto che una query.
    Comunque..... non l'ho mai vista in MySQL.

    Ad ogni modo puoi fare qualcosa di simile in PHP.
    Se ti serve una mano posta del codice oppure un esempio.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  8. #8
    Come ho detto non sono così pratico (pensa che ho cominciato a programmare da un mese circa come autodidatta)! Dovrei studiarmi un po' i trigger e le store procedure perchè adesso che me lo dici ho letto su qualche forum inglese di qualcuno che faceva un lavoro del genere con MySQL quindi suppongo si possa fare. Il codice per la textarea non è altro che quello che vedi nel mio primo post (da perfezionare ovviamente)...

  9. #9
    Scusami ma non ho ancora capito che cosa vuoi contrallare con IF NOT EXISTS.
    La presenza o meno di una stringa nella textarea???

    Non ho neanche capito perché, nel tuo primo script, decidi di andare a popolare il DB nel caso non sia stato premuto il pulsante di submit.

    Io farei così, innanzi tutto:

    Codice PHP:

    $submitted 
    $_POST['submit'];

    if (!isset(
    $submitted)) {
    // se il pulsante non è stato premuto
    // allora l'utente non è mai stato nella pagina
    // per cui si stampa la form

    /*
    qui mandi in scho la form
    */
    } else {
    // l'utente ha compilato i campi e premuto submit
    // è il caso di processare gli input

    setlocale(LC_TIME'ita'); 
    $timestamp strftime("%A %d %B %Y"); 
    connessione();
    $insert "INSERT INTO domande (Domanda, Id_Inserzionista, Data_Domanda) VALUES ('$_POST[domanda]', '$_SESSION[Id]', '$timestamp')";
    $res MySQL_query($insert) OR DIE("Errore n: " mysql_errno()." : "."Query non valida: " mysql_error());

    echo 
    "
    [b]La seguente domanda è stata inviata e sarà visionata nel più breve tempo possibile.[/b]



    wordwrap($_POST['domanda'],49"\n"1)";

    Questo per farti capire il funzionamento.
    Spero di essere stato chiaro.
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  10. #10
    Con IF NOT EXIST vorrei controllare che la domanda dell'utente non sia già stata inserita nel database e in caso di risultato positivo effettuare la query di insert, così da non ripeterla a ogni refresh della pagina... Infatti il tuo script funziona, ma una volta inserita la domanda nel database (quindi dopo l'echo di conferma), se fai il refresh, fa un'altro inserimento uguale, questo è il problema!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.