- Home
- Categorie
- Coding e Sistemistica
- PHP
- Copiare un dato da una tabella ad un'altra e cancellarlo
-
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??
-
DELETE FROM tabella 1 WHERE id=$id
magari facendo in modo che questa query venga fatta solo SE l'insert è andato a buon fine.
-
Ma le due query debbono essere separate? Come potrei implementare la condizione if con l'insert andato a buon fine?
-
si, prima inserisci dopo elimini
-
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)
-
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)
-
ma dopo quelle righe che hai messo..?
-
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]
-
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."'");