• User

    Copiare un dato da una tabella ad un'altra e cancellarlo

    Salve ragazzi,
    ecco il quesito. Vorrei copiare determinati dati da una tabella ad un'altra. Ad esempio da tabella 1 a tabella 2. Ma nel momento in cui vengono copiate, vorrei che nella tabella 1 vengano cancellati.

    Per copiare potrei fare cosi:

    INSERT INTO tabella 2 SELECT * FROM tabella 1 WHERE id=$id

    ma se volessi anche cancellare il dato dalla tabella 1??


  • User Attivo

    DELETE FROM tabella 1 WHERE id=$id

    magari facendo in modo che questa query venga fatta solo SE l'insert è andato a buon fine.


  • User

    Ma le due query debbono essere separate? Come potrei implementare la condizione if con l'insert andato a buon fine?


  • User Attivo

    si, prima inserisci dopo elimini


  • User Attivo

    si, prima inserisci dopo elimini

    tipo così:

    $con = mysql_connect("localhost","user","pass");
    if (!$con)
    {
    die('errore di connessione: ' . mysql_error());
    }
    mysql_select_db("db", $con);
    $sql="INSERT INTO tabella 2 SELECT * FROM tabella 1 WHERE id=$id";
    if (!mysql_query($sql,$con)) {
    die('Error: ' . mysql_error());
    }

    DELETE FROM tabella 1 WHERE id=$id;

    mysql_close($con)


  • User

    Ma perchè scrivendo queste righe

        $dati = mysql_query("INSERT INTO archiviorder SELECT * FROM ordini WHERE ordine_id='".$ordine_id."'");        
        $query = mysql_query("DELETE * FROM ordini WHERE ordine_id='".$ordine_id."'");
    

    mi esegue la prima query ma non la seconda? (quindi la DELETE)


  • User Attivo

    ma dopo quelle righe che hai messo..? 🙂


  • User

    Ecco il codice che comprende quelle righe:

    [php]
    $parm_d = (isset($_POST['b'])?$_POST['b']:(isset($_GET['b'])?$_GET['b']:NULL));
    if (isset($parm_d)) {
    $ordine_id = '';
    $c = explode("P1", $parm_d);
    foreach ($c as $w) {
    $valoreid = explode("=", $w);
    if (ereg("^PAY1_SHOPTRANSACTIONID", $w)) {
    $ordine_id = $valoreid[1];
    }
    }

        $esito_positivo = "KO";
    
        include("config.php"); 
        mysql_connect($db_host,$db_user,$db_password,$db_name) or die ("non riesco a connettermi"); 
        mysql_select_db("$db_name") or die ("Non riesco a selezionare il database"); 
        if ($Trovatook == $esito_positivo) {
        $sql = ("INSERT INTO archiviorder SELECT * FROM ordini WHERE ordine_id='".$ordine_id."'");        
        $sql = ("DELETE * FROM ordini WHERE ordine_id='".$ordine_id."'");
        print "La transazione è stata conclusa correttamente. "."Grazie per l'acquisto tornate presto a trovarci.<br>";
    }
        else {
        print "La transazione non si è conclusa correttamente. "."Vi preghiamo di riprovare. Grazie.<br>";
    

    }
    }
    }
    mysql_close();
    [/php]


  • User Attivo

    cambia:

    $sql = ("INSERT INTO archiviorder SELECT * FROM ordini WHERE ordine_id='".$ordine_id."'");
    $sql = ("DELETE * FROM ordini WHERE ordine_id='".$ordine_id."'");

    con:

    mysql_query("INSERT INTO archiviorder SELECT * FROM ordini WHERE ordine_id='".$ordine_id."'");
    mysql_query("DELETE * FROM ordini WHERE ordine_id='".$ordine_id."'");