• User Attivo

    con un insert vengono inserite due righe

    Salve a tutti, ho uno script che mi inserisce dei dati in un db, ma alla sua esecuzione questo inserisce due records uguali, come se facesse un refresh della pagina o come se cliccassi due volte. Da cosa potrebbe dipendere?
    Questo è il codice:
    [PHP]
    <?php

    /* dichiariamo alcune importanti variabili per collegarci al database /
    $DBhost = "
    ";
    $DBuser = "";
    $DBpass = "
    ";
    $DBName = "*";

    /* Connettiamoci al database */
    mysql_connect($DBhost,$DBuser,$DBpass) or die("Impossibile collegarsi al server");
    @mysql_select_db("$DBName") or die("Impossibile connettersi al database $DBName");

    $click = $_GET['click'];
    if ($click == "si") {
    $nome = $_POST['nome'];
    $eta = $_POST['eta'];
    $marca = $_POST['marca'];
    $possiedo = $_POST['possiedo'];
    $attrezzatura = $possiedo." - ".$marca;
    $pratico = $_POST['pratico'];
    $teorico = $_POST['teorico'];
    $imparare = $_POST['imparare'];
    $orario = $_POST['orario'];
    $cell = $_POST['cell'];
    $mail = $_POST['mail'];
    //$data = date("Y-m-d");

    $sqlquery = "INSERT into iscrizioni (nome,eta,attrezzatura,livello_pratico,livello_teorico,corso,dispo,cellulare,mail) VALUES('".$nome."','".$eta."','".$attrezzatura."','".$pratico."','".$teorico."','".$imparare."','".$orario."','".$cell."','".$mail."')";

    mysql_query($sqlquery) or die(mysql_error());
    ?>
    Grazie per l'iscrizione
    <?php
    }else{
    ?>
    <form ... // ometto il codice html del form d'iscrizione
    <?php
    }
    ?>
    [/PHP]

    Lo script è semplice ma l'ho semplificato togliendo le parti statiche che posso fornire.
    Grazie a tutti coloro che vorrebbero aiutarmi.


  • User Attivo

    Guardando il codice non vedo nessun motivo dello strano comportamento che lamenti. Il problema deve essere da qualche altra parte, magari nelle parti che non hai postato.


  • User Attivo

    Ciao Oslino, grazie per la risposta, infatti ho provato il codice in una pagina vuota e funziona, quindi ho dedotto che il problema sta nel template in cui io l'ho inserito, a questo punto vorrei sapere come dovrei fare per testare tutta la pagina perchè credo che il template venga caricato due volte.


  • User Attivo

    Che una pagina venga caricata due volte è un comportamento molto strano e diciamo che dovrebbe essere abbastanza evidente se ciò succedesse.

    E dovrebbe essere anche abbastanza facile da scoprire avendo il codice sotto mano. Sei in locale?


  • User Attivo

    Riguardando il tutto in realtà un'anomalia del codice c'è, ma dovrebbe dare altri problemi e non quelli che lamenti:

    quello che immagino sia il controllo sull'invio di un form lo esprimi con GET
    $click = $_GET['click'];

    mentre le assegnazioni della varie variabili le fai con POST
    $nome = $_POST['nome'];

    il method del FORM può essere solo uno tra POST o GET (se non indicato viene usato GET di default) per cui devi usare uno o l'altro.


  • User Attivo

    Ciao Oslino, il get carica la variabile del form mandata nella querystring, mentre il post mi carica le variabili recuperate dal form.
    Il codice è un template di wordpress, l'ho analizzato e non ci sono funzioni particolari, tuttavia include dei files che non ho analizzato. Nel caso ti servisse del codice da analizzare di uno specifico file posso postarlo, o nel caso potresti dirmi dove devo andare a spulciare per analizzarlo.
    Grazie per il tuo aiuto.


  • User Attivo

    Il form può avere un solo method: o è POST o è GET.
    Se mandi via GET i valori vengono aggiunti nell'URI che richiama il file action; se li mandi via POST i valori vengono passati nel corpo del form. Che io sappia non è possibile, con un unico form, inviare dei dati in GET e recuperarli via POST.

    Non ho idea di che template sia quindi non posso dirti dove cercare.


  • User Attivo

    ho modificato questa riga:
    [PHP]
    $click = $_GET['click'];
    if ($click == "si") {
    [/PHP]
    In questo modo:
    [PHP]
    //$click = $_GET['click'];
    if(isset($_POST) && !empty($_POST)){
    [/PHP]

    Ma il risultato non cambia :mmm:


  • User Attivo

    Vabbè... non è che puoi modificare "ad capocchiam" (che oltretutto è una modifica sbagliata), bisogna vedere il metodo che usa il form. Comunque, come ti dicevo, il tuo problema del doppio inserimento non dipende da quello ma da quanche altro script presente da qualche parte.


  • User Attivo

    si, è vero, ma al momento ho risolto con ajax ma se qualcuno ha lo stesso problema credo sia dovuto al core di worpress