Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043

    come evitare doppio inserimento dati nel db?

    ciao a tutti,
    ho una select che quando si sceglie la voce del menu fa refresh della pagina per visualizzarmi gli altri dati di quella voce, il problema è che quando seleziono la voce della select e mi fa refresh mi inserisce tutti quei dati nel db, si può evitare?

    Codice PHP:
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get"> 
    <select name="id_centri" onchange="this.form.submit()"> 
    <option value="">seleziona centro</option> 
    <?php 
    //compila dinamicamente la select 
    while($row mysql_fetch_object($sql2)) { 
        if (
    $row->id_centri==$_GET[id_centri]){ $sel="SELECTED";}ELSE{$sel="";}
      echo 
    "<option value=\"$row->id_centri\" $sel>$row->nome_centro</option>\n"

    echo 
    "</select>\n"

    //verifica se è stato passato o meno un valore dalla select 
    if(isset($_GET['id_centri'])) { 

      
    //memorizza il valore passato dalla select (l'id del centro) 
      
    $IDcentro $_GET['id_centri']; 

    //recupera il nome del centro scelto tramite $IDcentro 
      
    $id_centri mysql_query("SELECT * FROM b_centri 
                            WHERE id_centri = '
    $IDcentro'") or die(mysql_error()); 
       
      
    //recupera tutti i dati relativi al centro specifico tramite $IDcentro
     
    $sql2 mysql_query("SELECT * FROM b_centri 
                          WHERE id_centri = '
    $IDcentro'") or die(mysql_error()); 

      
    //verifica che ci sia almeno un risultato valido per la query precedente 
      
    if(mysql_num_rows($sql2) >= 1) { 

        
    //stampa i dati relativi al centro
         
    $row1 mysql_fetch_object($id_centri); 
        echo 
    "<table width=\"650\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">
    <tr><td height=\"12\" colspan=\"5\"></td></tr>
    <tr><td height=\"1\" bgcolor=\"BF9BB5\" colspan=\"5\"></td></tr>\n"


    echo 
    "<tr>
        <td height=\"41\" width=\"152\"><span class=\"testo_grigio_bold\">nome centro</span></td>
        <td align=\"right\" width=\"123\"><span class=\"testo_grigio_bold\">
    $row1->nome_centro</span></td>
        <td width=\"100\"></td>
        <td align=\"left\" width=\"143\"><span class=\"testo_grigio_bold\">telefono</span></td>
        <td align=\"right\" width=\"132\"><span class=\"testo_grigio_bold\">
    $row1->telefono_centro</span></td>
          </tr>
                <tr>
        <td height=\"1\" colspan=\"5\" valign=\"top\" bgcolor=\"BF9BB5\"></td>
        </tr>\n"
    ;

    echo 
    "<tr>
        <td height=\"41\"><span class=\"testo_grigio_bold\">fax</span></td>
        <td align=\"right\"><span class=\"testo_grigio_bold\">
    $row1->fax_centro</span></td>
        <td width=\"100\"></td>
        <td align=\"left\"><span class=\"testo_grigio_bold\">email</span></td>
        <td align=\"right\"><span class=\"testo_grigio_bold\">
    $row1->email_centro</span></td>
          </tr>
                <tr>
        <td height=\"1\" colspan=\"5\" valign=\"top\" bgcolor=\"BF9BB5\"></td>
        </tr>\n"
    ;

    echo 
    "<tr>
        <td height=\"41\"><span class=\"testo_grigio_bold\">partita iva</span></td>
        <td align=\"right\"><span class=\"testo_grigio_bold\">
    $row1->p_iva_centro</span></td>
        <td width=\"100\"></td>
        <td align=\"left\"><span class=\"testo_grigio_bold\">via</span></td>
        <td align=\"right\"><span class=\"testo_grigio_bold\">
    $row1->via_centro</span></td>
          </tr>
                <tr>
        <td height=\"1\" colspan=\"5\" valign=\"top\" bgcolor=\"BF9BB5\"></td>
        </tr>
    <tr>
        <td height=\"8\" colspan=\"5\"></td>
        </tr>\n"
    ;
     echo 
    "</table>\n"
      }

    ?>

  2. #2
    prova a dare una occhiata alla pillola che avevo scritto tempo fa, proprio per evitare questo ti po di problema.

    http://forum.html.it/forum/showthrea...64#post7161564

    in alternativa fai un redirect su una pagina intermedia dopo l'inserimento dei dati che poi ti rimandi a sua volta nella pagina con il form azzerando pero' il contenuto di POST.

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    ok, grazie, ora ci provo.

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    la pillola che hai realizzato è molto utile, ma non fa al caso mio.
    Il tuo esempio serve per evitare di reinserire i dati da un form, il mio problema invece non riguarda l'invio dei dati di un form ma la visualizzazione dei dati con una select che fa refresh e che da sola inserisce i dati, io vorrei che li inserisca solo dopo che io clicco sul pulsante invia e non automaticamente dopo aver scelto la voce della select.

  5. #5
    ho guardato al volo lo script e mi salta all'occhio che fai due query identica una a seguire l'altra ... a che pro?

    codice:
    //recupera il nome del centro scelto tramite $IDcentro
      $id_centri = mysql_query("SELECT * FROM b_centri
                            WHERE id_centri = '$IDcentro'") or die(mysql_error());
       
      //recupera tutti i dati relativi al centro specifico tramite $IDcentro
    $sql2 = mysql_query("SELECT * FROM b_centri
                          WHERE id_centri = '$IDcentro'") or die(mysql_error());
    e poi manca tutto il codice di inserimento dei dati nel db.

    di certo che se fai dei refresh cadi esattamente nella casistica di quella pillola, ma non si puo' dire senza vedere il codice.

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

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    Originariamente inviato da piero.mac
    ho guardato al volo lo script e mi salta all'occhio che fai due query identica una a seguire l'altra ... a che pro?
    grazie, non me n'ero accorto, ne ho cancellata una.

    Originariamente inviato da piero.mac
    e poi manca tutto il codice di inserimento dei dati nel db.
    eccolo:

    Codice PHP:
    <?php 
    $sql2 
    mysql_query("SELECT * FROM b_centri ORDER BY nome_centro") or die(mysql_error()); 
    ?> 

    <?php
    $sql 
    "INSERT INTO b_serviziounghie (id_centri)
    VALUES ('
    $id_centri')";
    mysql_query($sql$conn) or die ($sql);
    $msg "contatto inserito nel database";
    ?>

    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get"> 
    <select name="id_centri" onchange="this.form.submit()"> 
    <option value="">seleziona centro</option> 
    <?php 
    //compila dinamicamente la select 
    while($row mysql_fetch_object($sql2)) { 
        if (
    $row->id_centri==$_GET[id_centri]){ $sel="SELECTED";}ELSE{$sel="";}
      echo 
    "<option value=\"$row->id_centri\" $sel>$row->nome_centro</option>\n"

    echo 
    "</select>\n"

    //verifica se è stato passato o meno un valore dalla select 
    if(isset($_GET['id_centri'])) { 

      
    //memorizza il valore passato dalla select (l'id del centro) 
      
    $IDcentro $_GET['id_centri']; 

      
    //recupera tutti i dati relativi al centro specifico tramite $IDcentro
      
    $id_centri mysql_query("SELECT * FROM b_centri 
                            WHERE id_centri = '
    $IDcentro'") or die(mysql_error()); 

      
    //verifica che ci sia almeno un risultato valido per la query precedente 
      
    if(mysql_num_rows($sql2) >= 1) { 

        
    //stampa i dati relativi al centro
         
    $row1 mysql_fetch_object($id_centri); 
        echo 
    "<table width=\"650\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">
    <tr><td height=\"12\" colspan=\"5\"></td></tr>
    <tr><td height=\"1\" bgcolor=\"BF9BB5\" colspan=\"5\"></td></tr>\n"


    echo 
    "<tr>
        <td height=\"41\" width=\"152\"><span class=\"testo_grigio_bold\">nome centro</span></td>
        <td align=\"right\" width=\"123\"><span class=\"testo_grigio_bold\">
    $row1->nome_centro</span></td>
        <td width=\"100\"></td>
        <td align=\"left\" width=\"143\"><span class=\"testo_grigio_bold\">telefono</span></td>
        <td align=\"right\" width=\"132\"><span class=\"testo_grigio_bold\">
    $row1->telefono_centro</span></td>
          </tr>
                <tr>
        <td height=\"1\" colspan=\"5\" valign=\"top\" bgcolor=\"BF9BB5\"></td>
        </tr>
    <tr>
        <td height=\"8\" colspan=\"5\"></td>
        </tr>\n"
    ;
     echo 
    "</table>\n"
      }

    ?> 

    <input type="submit" class="pulsante" value="inserisci">
    </form>

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.