Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [MySQL] Query memorizza dati due volte

    Salve a tutti,

    visto che ho sempre ricevuto assistenza ottima e a tempi record insisto (speriamo di essere ancora fortunato :P).

    Vi spiego il mio problema è un po' stupido in effetti, ho una pagina a cui arrivo tramite paypal e gestisce l'ipn. Ora in questa pagina faccio alcune query e mi interessava realizzare un if dimodoché se la query va bene invia una mail altrimenti stampa un errore. Così ho pensato di fare un codice di questo tipo:
    Codice PHP:
    $query "INSERT INTO payments (name, surname, email, website, country) VALUES ('$first_name', '$last_name', '$website', '$address_country')";

    mysql_connect($host_nome,$db_utente,$db_pass) or die("Error connecting to the database
    mysql_error(). "
    mysql_errno());
    mysql_selectdb("$db_nome") or die("Error selecting the database");
    $risultato mysql_db_query($db_nome$query);

    if (
    $risultato) {

    // codice per inviare mail

    }

    else {

    echo 
    "errore!" 
    Ora non capisco perché questo codice mi salva nel database due volte la query. Perciò ho due record identici con l'id incrementato. Il problema scompare se uso questo codice qui:

    Codice PHP:
    $query "INSERT INTO payments (name, surname, email, website, country) VALUES ('$first_name', '$last_name', '$payer_email', '$website', '$address_country')";

    mysql_connect($host_nome,$db_utente,$db_pass) or die("Error connecting to the database
    mysql_error(). "
    mysql_errno());
    mysql_selectdb("$db_nome") or die("Error selecting the database");

    mysql_db_query($db_nome$query);

    //codice invio mail 
    ho provato anche così ma salva sempre due volte :S

    Codice PHP:
    $query "INSERT INTO payments (name, surname, email, website, country) VALUES ('$first_name', '$last_name', '$website', '$address_country')";

    mysql_connect($host_nome,$db_utente,$db_pass) or die("Error connecting to the database
    mysql_error(). "
    mysql_errno());
    mysql_selectdb("$db_nome") or die("Error selecting the database");

    if (
    mysql_db_query($db_nome$query) {

    // codice per inviare mail

    }

    else {

    echo 
    "errore!" 
    Per ora ho risolto evitando l'if e non riportando eventuali errori (potrei anche fare or die nella query però boh...mi piace la soluzione dell'if così mantengo la formattazione della pagina). Comunque non è una cosa urgente quindi non vi affrettate , si tratta più di una curiosità perchè mi sembra tutto un po' strano :P.

    Ciao a tutti e grazie in anticipo
    Diablo

  2. #2
    Secondo me il problema è nel "codice di invio mail",
    sei sicuro che la staees pagina non venga eseguita erroneamente due volte?
    Fidatevi del dottor Auz!
    http://dottorauz.blogspot.com

  3. #3
    Originariamente inviato da ggimigli
    Secondo me il problema è nel "codice di invio mail",
    sei sicuro che la staees pagina non venga eseguita erroneamente due volte?
    sicuro al 100% in effetti no nel senso che ho una pagina purchase.php da cui si va al sito di paypal si inserisce i propri dati e poi si va alla pagina confirm.php di cui ho postato il codice. Possibile che venga eseguita due volte? :S Forse sì magari devo levare l'indirizzo di ipn dal profilo paypal.

    Comunque il codice per l'invio della mail è questo:

    $mittente = 'From: ***** <***@***.it> \r\n';
    $reply = "Reply-to: ***@***.it\r\n";
    $destinatario = "***@***.it";
    $oggetto = "Thank you";
    $messaggio = "Hi $first_name! My congratulations!";

    mail($destinatario, $oggetto, $messaggio, $mittente.$reply);

    Il nuovo aggiornamento è che non mettendo l'if ma inserendo il "or die" registra comunque i dati due volte, ora verifico nuovamente se levando l'if e non mettendo nulla mi registra una volta sola. Grazie per la mano comunque
    Diablo

  4. #4
    ops avevo risolto il mister e mi sono scordato di inserire la risposta. Ad ogni modo era ovvio il codice è corretto , bisognava andare sul profilo di paypal e in preferenze per la notifica dei pagamenti, lasciare l'opzione come attivata ma non specificare l'url in cui riesiede il vostro script ipn.

    Se non specificate il return_url nel form che usate per farvi pagare allora dovrete specificare l'url nel profilo .

    Grazie a tutti per la mano, alla prossima!
    Diablo

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.