Trasferire il record lavorato in altra tabella

Max61

Utente Attivo
2 Mar 2014
740
4
18
Buonasera, sono alle prese con un problema di trasferimento dati da una tabella ad un altra.
Mi spiego, ho la tabella A dove ho già i record con alcuni dati, seleziono un record e aggiungo informazioni, quando lo salvo vorrei che lo facesse nella tabella B, ho trovato in rete alcuni esempi, ma non riesco a farli funzionare, l'unico che funziona mi trasferisce tutti i record nella seconda tabella, mentre a me servirebbe che mi trasferisse soltanto quello che sto lavorando.
Allego codice utilizzato:
PHP:
$query = "INSERT IGNORE INTO tbl_rilevati(idrilevati, PROD, M, V, Q, PP, PS)
			SELECT id, PROD, M, V, Q, PP, PS
			FROM tbl_darilevare ON DUPLICATE KEY UPDATE idrilevati = (idrilevati)";

Successivamente o simultaneamente avrei la necessità di cancellare il record trasferito nella tabella B dalla tabella A.

Mi sapete aiutare?
Grazie, Max61
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
con MS SQL faccio così,
Codice:
select count(*) from tabella     
select count(*) from tabella_2014

DELETE FROM tabella
OUTPUT DELETED.*        
INTO tabella_2014  
WHERE iv_year=2014      

select count(*) from tabella     
select count(*) from tabella_2014

il comando sposta le righe da una tabella all'altra
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
con MS SQL faccio così,
Codice:
select count(*) from tabella     
select count(*) from tabella_2014

DELETE FROM tabella
OUTPUT DELETED.*        
INTO tabella_2014  
WHERE iv_year=2014      

select count(*) from tabella     
select count(*) from tabella_2014

il comando sposta le righe da una tabella all'altra

Scusami forse non ho capito bene, ma non mi funziona e comunque ho bisogno di spostare il record a video, quello che sto lavorando.
IL codice che ho postato me li sposta tutti, forse c'è da correggere qualcosa la.

Ciao e grazie
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
Scusami forse non ho capito bene, ma non mi funziona e comunque ho bisogno di spostare il record a video, quello che sto lavorando.
IL codice che ho postato me li sposta tutti, forse c'è da correggere qualcosa la.

Ciao e grazie


Ho provato ancora la tua query, sicuramente sbagliando qualcosa perchè mi da questo errore:
Notice: Undefined index: PROD in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 18

Notice: Undefined index: M in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 19

Notice: Undefined index: V in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 20

Notice: Undefined index: Q in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 21

Notice: Undefined index: PP in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 22

Notice: Undefined index: PS in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 23

Notice: Undefined variable: id in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 34
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select count(*) from tbl_rilevati DELETE FROM tbl_darilevare OUTPUT DELETED.*' at line 2

La query usata è questa (ma non vedo l'insert):
PHP:
$query = "select count(*) from tbl_darilevare     
	select count(*) from tbl_rilevati

	DELETE FROM tbl_darilevare
	OUTPUT DELETED.*        
	INTO tbl_darilevare  
	WHERE id='$id'      

	select count(*) from tbl_darilevare     
	select count(*) from tbl_rilevati";

Grazie ancora per la pazienza
Max61
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
DELETE FROM tbl_darilevare
OUTPUT DELETED.* INTO tbl_rilevati
WHERE id='$id'

output è di fatto la insert nella nuova tabella,
ovvero cancella da "tbl_darilevare" e inserisce (output) nella "tbl_rilevati"
agendo sui record della condizione where

tu hai detto al sistema di cancellare e di inserire nella stessa tabella ...

le select count... a me servono per controllare il lavoro finito, a te forse non servono ed in ogi caso non sono parte della delete ...
 
Ultima modifica:

Max61

Utente Attivo
2 Mar 2014
740
4
18
DELETE FROM tbl_darilevare
OUTPUT DELETED.* INTO tbl_rilevati
WHERE id='$id'

output è di fatto la insert nella nuova tabella,
ovvero cancella da "tbl_darilevare" e inserisce (output) nella "tbl_rilevati"
agendo sui record della condizione where

tu hai detto al sistema di cancellare e di inserire nella stessa tabella ...

le select count... a me servono per controllare il lavoro finito, a te forse non servono ed in ogi caso non sono parte della delete ...


Scusami ma mi continua a dare errore:

Ti posto tutta la pagina dell'insert, probabilmente l'errore sta da un altra parte:
PHP:
<?php
     // connessione al database
include('Connessione.php');

	 $db= 'tbl_rilevati';
		
     $db = mysql_connect($host, $user, $password) or die ("Impossibile connettersi al server");
	 echo " ";
				
     mysql_select_db($database, $db) or die ("impossibile connettersi al database");
	 echo " ";
	 
	$PROD = $_POST['PROD'];
	$M = $_POST['M'];
	$V = $_POST['V'];
	$Q = $_POST['Q'];
	$PP = $_POST['PP'];
	$PS = $_POST['PS'];
	
	$query = "select count(*) from tbl_darilevare     
	select count(*) from tbl_rilevati

	DELETE FROM tbl_darilevare
	OUTPUT DELETED.* INTO tbl_rilevati
	WHERE id='$id'";      
	
   // invio la query
   $result = mysql_query($query);

   // controllo l'esito
   if (!$result) {
				die("<span style=\"color:red: font-size: 20pt\"Errore nell'inserimento. Riprova...</span>" . mysql_error());
   }
   echo "<span style=\"color: yellow; font-size: 24pt\"><strong><i>Calcolo inserito correttamente. </span>";
      header('location:../views/VisualizzaDati.php');//reindirizza alla pag
?>

L'errore:
Notice: Undefined index: PROD in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 18

Notice: Undefined index: M in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 19

Notice: Undefined index: V in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 20

Notice: Undefined index: Q in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 21

Notice: Undefined index: PP in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 22

Notice: Undefined index: PS in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 23

Notice: Undefined variable: id in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 30
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select count(*) from tbl_rilevati DELETE FROM tbl_darilevare OUTPUT DELETED.*' at line 2


Ciao
Max61
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
ok... mysql

PHP:
    $query = "
      START TRANSACTION;
      set @id := ".$id.";
      INSERT INTO tbl_rilevati select * from tbl_darilevare where id=@id;
      DELETE FROM tbl_darilevare WHERE id=@id;
      COMMIT;
    ";
     
   // invio la query 
   $result = mysql_query($query);
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
ok... mysql

PHP:
    $query = "
      START TRANSACTION;
      set @id := ".$id.";
      INSERT INTO tbl_rilevati select * from tbl_darilevare where id=@id;
      DELETE FROM tbl_darilevare WHERE id=@id;
      COMMIT;
    ";
     
   // invio la query 
   $result = mysql_query($query);


Scusami, ma ancora non ci siamo, infatti mi restituisce questo errore:

Notice: Undefined index: PROD in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 18

Notice: Undefined index: M in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 19

Notice: Undefined index: V in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 20

Notice: Undefined index: Q in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 21

Notice: Undefined index: PP in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 22

Notice: Undefined index: PS in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 23

Notice: Undefined variable: id in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 27
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set @id := ; INSERT INTO tbl_rilevati select * from tbl_darilevare where i' at line 2

Non so come risolverlo.
Ciao
Max61
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
potresti cominciare a sistemare questi errori,
Notice: Undefined index: PROD in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 18
Notice: Undefined index: M in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 19
Notice: Undefined index: V in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 20
Notice: Undefined index: Q in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 21
Notice: Undefined index: PP in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 22
Notice: Undefined index: PS in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 23
Notice: Undefined variable: id in C:\xampp\htdocs\Sopravitto\views\Inserisci.php on line 27
il $_POST non viene passato a "Inserisci.php" o i nomi dei campi sono diversi da quelli che hai inserito
e la variabile $id non è definita
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
potresti cominciare a sistemare questi errori,

il $_POST non viene passato a "Inserisci.php" o i nomi dei campi sono diversi da quelli che hai inserito
e la variabile $id non è definita


Buongiorno, e grazie per la pazienza, i campi sono gli stessi in tutte le pagine e nel DB, il problema credo che sia su come l'ho organizzato, cerco di spiegarmi:
vado in visualizzazione di tutti i record (nell'edit), seleziono il record da lavorare e lo modifico con la query Update, successivamente gli passo la pagina di insert, secondo me è qui il problema, quando gli passo l'insert, è come se non avesse a più disposizione i dati dei campi con $_POST, va rivisto tutto.
Infatti se faccio solo l'edit mi modifica i record perfettamente, dovrei poi passarli all'insert modificati.

Con la speranza di essermi spiegato ti invio la pagina di edit dove secondo me sta l'errore.
Ciao
Max61
Vedi l'allegato Edit_Dati.zip
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
lo script è impossibile da leggere ...
ti evidenzio solo la riga seguente,
HTML:
&nbsp;<form><input type="submit" name="submit" value="Salva modifiche"></form>
passa solo il bottone, non il set dei dati ....
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
lo script è impossibile da leggere ...
ti evidenzio solo la riga seguente,
HTML:
&nbsp;<form><input type="submit" name="submit" value="Salva modifiche"></form>
passa solo il bottone, non il set dei dati ....



Ciao e scusa se non ti ho risposto prima, ma durante il fine settimana ho avuto molto da fare.
Come ti dicevo nel post precedente il problema secondo me stava nella pagina di Edit che ti ho inviato, infatti oggi sono riuscito a passare i dati modificati alla query di insert, e una volta andato a buon fine l'nsert lo cancello dalla'archivio di partenza.
Allego la parte di codice di Update, insert, delete:
PHP:
// salva i dati nel database
mysql_query("UPDATE tbl_darilevare SET PROD='$PROD', M='$M', V='$V', Q='$Q', PP='$PP', PS='$PS' WHERE id='$id'")
or die(mysql_error());	
 
	$PROD = $_POST['PROD'];
	$M = $_POST['M'];
	$V = $_POST['V'];
	$Q = $_POST['Q'];
	$PP = $_POST['PP'];
	$PS = $_POST['PS'];
	

	$query = "INSERT INTO tbl_rilevati (PROD, M, V, Q, PP, PS)
			VALUES ('$PROD', '$M', '$V', '$Q', '$PP', '$PS')";

   // invio la query
   $result = mysql_query($query);

   // controllo l'esito
   if (!$result) {
				die("<span style=\"color:red: font-size: 20pt\"Errore nell'inserimento. Riprova...</span>" . mysql_error());
   }
   
   // elimina la voce
$resultDelete = mysql_query("DELETE FROM tbl_darilevare WHERE id=$id")
or die(mysql_error());

   header('location:../views/VisualizzaDati.php');//reindirizza alla pag

Ti ringrazio per la pazienza

Max61
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
se le due tabelle "darilevare" e "rilevati", sono uguali,
io userei una sola query, che fa l'insert e la delete contemporaneamente,
perchè in caso di errore il db rimane "consistente"

nella tabella "rilevati" importerei lo stesso "id" della tabella "darilevare" senza usare l'incremento automatico

poi... va bene tutto ma, per me, logica e sicurezza sono importanti

PHP:
$query = "
START TRANSACTION; 
INSERT INTO tbl_rilevati select * from tbl_darilevare where id=".$id."; 
DELETE FROM tbl_darilevare WHERE id=".$id."; 
COMMIT;
";
$result = mysql_query($query);
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Trasferire data plugin da un dominio ad un altro WordPress 6
S Trasferire dati sulle pagine del sito PHP 7
R Trasferire app su scheda SD Sviluppo app per Android 1
J [PHP] [HTML] Trasferire dati da un form ad un dominio diverso. PHP 3
F Trasferire mio sito su wordpress WordPress 5
F Trasferire dati di una variabile globale Javascript 11
F Trasferire un DIV jQuery 1
M Trasferire un sito Asp.net da un server ad un altro ASP.NET 0
filippino Trasferire utenti da mybb a vbulletin CMS (Content Management System) 1
Licantropo Trasferire contenuti da Joomla! a phpBB e viceversa phpBB 8
filippino Trasferire WP da cartella a root del sito WordPress 1
felino Trasferire APP su SD Smartphone e tablet 4
asevenx trasferire sito wordpress su Aruba Hosting 2
E come trasferire i dati su una pagina di raccolta (o di riepilogo) Discussioni Varie 0
pierantonio trasferire dati selezionati da una select box PHP 3
E Trasferire i dati da una tabella html in un tabella PHP 2
Eugene Cambiare server di posta senza trasferire il dominio Posta Elettronica 1
W Cerco urgentemente entro domani sera 16/05 webmaster che mi aiuti a trasferire sito Offerte e Richieste di Lavoro e/o Collaborazione 1
P trasferire dns su un server dedicato Web Server 3
I trasferire variabili PHP 10
B trasferire un file PHP 2
GennyX Trasferire un dominio Domini 1
W trasferire dominio .com Domini 1
M trasferire il proprio dominio Domini 0
I Come trasferire file via ftp con Word? HTML e CSS 2
6 Trasferire i dati da un Array al database. Come si fa? Classic ASP 0
F access ricerca record con apostrofo. MS Access 0
T come ordinare dei record recuperati da due tabelle MySQL 0
T vista record tabellare MySQL 0
K form Inserimento record mysql PHP 2
R query DELETE non cancella i record PHP 1
M Accodare record presi da un altra tabella PHP 8
MarcoGrazia Trovare record nel database partendo da id non sequenziali PHP 6
G notifiche dekstop/mobile ogni volta che record è inserito/eliminato/aggiornato PHP 0
P Pagina modifica record che non funziona PHP 0
S Selezionare ultimo record di una sotto query MySQL 27
A Tabella con bottoni per aggiornamento record PHP 6
S Differenza date record successivi MS Access 7
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
S Aggiornamento lista record Database 2
M Esportazione in CSV, salta il primo record PHP 4
T foreach e fetchAll dove recupero solo l'ultimo record PHP 5
A Raggruppare record con stessa data PHP 13
R Scorporare array e recuperare record tabella PHP 10
Tommy03 Select in ordine per numero di record MySQL 7
L Creazione di 2 o più record PHP 6
mazman mysqli_query() mi ritorna un array vuoto anche se presente un record nella tabella PHP 13
L contare record uguali in file csv PHP 4
M Estrapolare singoli record da intervallo (dal al/inizio fine) MS Access 0
max1974 [MySQL] Estrapolare record finti/inisistenti MySQL 9

Discussioni simili