Recupero dati da una tabella e spostarli in un altra

Emix

Utente Attivo
15 Feb 2010
596
0
16
Ciao a tutti,
ho la necessità di spostare dei dati da una tabella ad un altra. Mi spiego meglio... Ho fatto una pagina per lac reazione di DdT, finqui tutto ok...
Uso dei campi standard piu : Numero_Doc,Transazione,Data. Poi ho una tabella Transazioni, dove memorizzo tutto il corpo del documento generato, quindi i classici campi, barcode, prezzo, quantita etc...

Quello che dovrei fare io è abbastanza semplice, arrivo da una pagina in cui metto numero documento e data. A questo punto devo far comparire a video il numero della transazione.
Primo problema, io le date le salvo col comando now(), per cui sono in formato USA ossia :

Codice:
2013-10-25 19:15:31

Mentre l'utente inserisce la data nel formata d/mm/Y compreso di slash.
Come faccio a farla diventare comparabile con quel campo?

Una volta trovata la transazione, devo far inserire di seguito, data doc, numero doc e transazione che ho appena creato (o forse lo posso passare io come dato?

Effettuata la selezione della transazione di quel documento devo prendere TUTTI i dati con numero di transazione X e trasferirlo come carico in un altra tabella di nome articoli (i campi sono i medesimi)

Grazie a chiunque mi aiuterà.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
intanto se vuoi trasformare la data da formato italiano d-m-Y a formato USA Y-m-d H:i:s
puoi usarequesta funzione
PHP:
<?php
//2013-10-25 19:15:31
function trasf_it_usa($d){
	//LA DATA DEVE ESSERE IN FORMATO d m Y (anno mese giorno) con o senza H i s
    //è indipendente dagli usuali separatori
    //riduco la data ad un solo separatore
    $pat=array('/ /','/\//','/:/','/\./');//separatori più comuni
    $d=preg_replace($pat, '-', $d);
	$e=explode("-",$d);
	//verifico che la data sia corretta
	if(!checkdate($e[1],$e[0],$e[2])){
        return false;
    } 
	//verifico se esistono anche ore o minuti o secondi
	if(!isset($e[3]) || ($e[3]<0 || $e[3]>23)){$e[3]=0;}//le ore vanno da 0 a 23
    if(!isset($e[4]) || ($e[4]<0 || $e[4]>59)){$e[4]=0;}//i minuti primi da 0 a 59
    if(!isset($e[5]) || ($e[5]<0 || $e[5]>59)){$e[5]=0;}//i minuti secondi da 0 a 59
	//ricostruisco e ritorno in
	return $e[2]."-".$e[1]."-".$e[0]." ".$e[3].":".$e[4].":".$e[5];
}
//****TEST*****
$date_prova=array('10.12/2013 5:10:33','10-12-2013 5:10:33','10-12-2013','31.02/2013 5:10:33','10.12/2013 66:10:88');
foreach($date_prova as $data_prova){
	$data_usa=trasf_it_usa($data_prova);
	if($data_usa){
		echo "$data_prova trasformata in formato USA $data_usa<br />";
	}else{
		echo "$data_prova NON corretta<br />";
	}
}
?>
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
bhè si prima quindi leggo il post dei dati, lo trasformo e lo vado a verificare nel DB, fin qui ok, ora manca la aprte dell'auto inserimento.. Puoi aiutarmi?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
nei limiti del possibile.
comunque devi spiegare meglio, ti dico quello che ho capito.
1) pinco inserisce una data
2) estrae tutte le transazioni con quella data
3) seleziona una transazione tra quelle estratte
della transazione selezionata fanno parte dei documenti (?)
cosa intendi per dare il numero di documento e di transazione, non sono già a db?
cosa contiene il/i record estratto/i ? come è fatta e cosa contiene la tabella delle transazioni?
4) cosa deve essere trasferito? è un'insert o un uppdate?
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
ciao
nei limiti del possibile.
comunque devi spiegare meglio, ti dico quello che ho capito.
1) pinco inserisce una data
2) estrae tutte le transazioni con quella data
3) seleziona una transazione tra quelle estratte
della transazione selezionata fanno parte dei documenti (?)
cosa intendi per dare il numero di documento e di transazione, non sono già a db?
cosa contiene il/i record estratto/i ? come è fatta e cosa contiene la tabella delle transazioni?
4) cosa deve essere trasferito? è un'insert o un uppdate?

Ciao, innanzitutto grazie... Per rispondere vado a punti :

1 - Pinco inserisce una data e un numero di documento (facendo riferimento ad un DDT precedentemente stampato).
2 - Una volta inserite cerco con numero documento e data il numero della transazione (questo passaggio tecnicamente è possibile saltarlo.. Nel senso che il numero di transazione serve solamente a selezionare tutte le informazioni da estrarre con quella transazione.
3 - I dati da estrarre sono i medesimi da inserire... E vanno inseriti tramite INSERT e non UPDATE, perchè sono "nuovi",
4 - Vedi sopra.

La tabella DDT è la seguente:

ddt.jpg

Mentre la tabella delle Transazioni è la seguente :

transazioni.jpg

Dall'ultima tabella bisogna recuperare le informazioni (non tutte) e trasferirle in un altra tabella di nome articoli.

Spero di essere stato più chiaro....
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
allora se non ho capito male
la tabella ddt e la transazioni sono legate dal campo transazione giusto?
se è così: tu hai una data e un numero di documento
PHP:
<?php
//....
$data=$_POST['data'];// trattata con la funzione che ti ho postato
$num_doc=$_POST['documento'];
//verifiche se sono corretti, se no riinvii dove vuoi
$query_1="SELECT transazione FROM ddt WHERE data='$data' AND numero_doc='$num_doc'";
$ris_1=mysql_query($query_1);
//verifichi che eissta o meno se si
$riga=mysql_fetch_array($ris_1);
$transazione=$riga['transazione'];
//e estrai dalla transazione quello che ti serve es ne metto due)
$query_2="SELECT barcode, quantita FROM transazioni WHERE transazione='$transazione'";
$ris_2=mysql_uqry($query_2);
//e qui mi fermo perche non so
//se possono essere  uno o più e dove vuoi metterli
//...
?>
le due select ppotrebbero essere fatte con una join pero devo pensarci un poco
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
ciao
allora se non ho capito male
la tabella ddt e la transazioni sono legate dal campo transazione giusto?
se è così: tu hai una data e un numero di documento
PHP:
<?php
//....
$data=$_POST['data'];// trattata con la funzione che ti ho postato
$num_doc=$_POST['documento'];
//verifiche se sono corretti, se no riinvii dove vuoi
$query_1="SELECT transazione FROM ddt WHERE data='$data' AND numero_doc='$num_doc'";
$ris_1=mysql_query($query_1);
//verifichi che eissta o meno se si
$riga=mysql_fetch_array($ris_1);
$transazione=$riga['transazione'];
//e estrai dalla transazione quello che ti serve es ne metto due)
$query_2="SELECT barcode, quantita FROM transazioni WHERE transazione='$transazione'";
$ris_2=mysql_uqry($query_2);
//e qui mi fermo perche non so
//se possono essere  uno o più e dove vuoi metterli
//...
?>
le due select ppotrebbero essere fatte con una join pero devo pensarci un poco


Ciao,
si esatto, ma non è così dura come sembra... inoltre la select è una.. visto che bisogna semplicemente "copiare" quello che c'è nella tabella transazioni con la determinata condizione (numero_doc,transazione e data) e spostarlo nella tabella articoli. niente piu.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
anche se non capisco a che ti serva
PHP:
<?php
//.......
//e estrai dalla transazione quello che ti serve (es ne metto due ma tu estrrari quelli che ti servono)
$query_2="SELECT barcode, quantita FROM transazioni WHERE transazione='$transazione'";
$ris_2=mysql_uqry($query_2);
while($riga=mysql_fetch_array($ris_2)){
	$bar=$riga['barcode'];
	$qua=$riga['quantita'];
	$query_3="INSERT INTO articoli(barcode, quantita) VALUES('$bar','$qua')";
	$ris_3=mysql_fetch_array($query_3);
}
//....
?>
con questo sistema non fai certo una gestione di magazzino
io farei così se si tratta di gestire un magazzino
PHP:
<?php
//.......
//e estrai dalla transazione quello che ti serve (es ne metto due ma tu estrrari quelli che ti servono)
$query_2="SELECT barcode, quantita FROM transazioni WHERE transazione='$transazione'";
$ris_2=mysql_uqry($query_2);
while($riga=mysql_fetch_array($ris_2)){
	$bar=$riga['barcode'];
	$qua=$riga['quantita'];
	$query_3="INSERT INTO articoli(barcode, quantita) VALUES('$bar','$qua')
		ON DUPLICATE KEY
		UPDATE quantita = quantita + $qua,";
		/*cioè se non esiste lo inserisce (anche se secondo me dovrebbe esistere altrimenti da dove prendi tutti i dati dell'articolo?, 
                   se esiste aggiorna la quantità (a te sapere se in più o meno)*/
//...
?>
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
ciao
anche se non capisco a che ti serva
PHP:
<?php
//.......
//e estrai dalla transazione quello che ti serve (es ne metto due ma tu estrrari quelli che ti servono)
$query_2="SELECT barcode, quantita FROM transazioni WHERE transazione='$transazione'";
$ris_2=mysql_uqry($query_2);
while($riga=mysql_fetch_array($ris_2)){
	$bar=$riga['barcode'];
	$qua=$riga['quantita'];
	$query_3="INSERT INTO articoli(barcode, quantita) VALUES('$bar','$qua')";
	$ris_3=mysql_fetch_array($query_3);
}
//....
?>
con questo sistema non fai certo una gestione di magazzino
io farei così se si tratta di gestire un magazzino
PHP:
<?php
//.......
//e estrai dalla transazione quello che ti serve (es ne metto due ma tu estrrari quelli che ti servono)
$query_2="SELECT barcode, quantita FROM transazioni WHERE transazione='$transazione'";
$ris_2=mysql_uqry($query_2);
while($riga=mysql_fetch_array($ris_2)){
	$bar=$riga['barcode'];
	$qua=$riga['quantita'];
	$query_3="INSERT INTO articoli(barcode, quantita) VALUES('$bar','$qua')
		ON DUPLICATE KEY
		UPDATE quantita = quantita + $qua,";
		/*cioè se non esiste lo inserisce (anche se secondo me dovrebbe esistere altrimenti da dove prendi tutti i dati dell'articolo?, 
                   se esiste aggiorna la quantità (a te sapere se in più o meno)*/
//...
?>
Hai pienamente ragione ma la tabella Articoli e quella della Transazioni sono medesime... Solamente che la tabella Transazioni si riempie eseguendo dei documenti, nel caso specifico quello a cui serve questa funzione, è fare un DDT normalmente, quindi prendo i dati li recupero dal DB articoli (vecchio) salvo le 6\7 voci che mi servono, stampo il ddt in formato pdf e popolo il DB Transazioni, inserendo le 6\7 cose che uso più il numero della transazione stessa. In questa maniera l'utente che deve caricare i prodotti in magazzino non fa altro che inserire il numero del documento, la data ed in automatico si caricherà tutti gli articoli nel DB articoli(nuovo).
Per chè questa cosa? perchè il DB vecchio degli articoli è quello del negozio A e a me serve popolare ex novo il DB del negozio B.
Chiaramente una volta effettuato il primo carico, si userà la seconda sintassi che hai scritto te, quindi se esiste faccio l'update della quantità e stop.

Provo quello che hai scritto te e ti faccio sapere...
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
borgo, sto provando ad effettuare il carico ma ho un problema... Se il campo del db è di tipo datetime, quindi salva anche ore minuti e secondi, ma ovviamente nel documento non c'è scritto, come la posso confrontare?

Cerco di spiegarmi meglio, nel db ho il campo data cosi : 2013-10-24 16:31:36
Mentre nella schermata di ricerca inserisco solo : 24/10/2013

La tua funzione la converte bene, ma non mi da ore, minuti e secondi chiaramente.. Non me lo da perche ovviamente l'utente non lo inserisce... e mi restituisce 0:0:0
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
ho cambiato il campo in date e stop, mi ha troncato la parte dei minuti secondi etc, ma ora quando faccio la query con la data giusta mi dice : Incorrect data value: '1978' for column 'data' at row 1, ma io come ricerca inserisco 2013-10-25, come è possibile?
 
Discussioni simili
Autore Titolo Forum Risposte Data
Sergio Unia Recupero dati da una vecchia versione MySql [Risolto] MySQL 4
S problema con recupero dati tabella mysql PHP 2
D Recupero dati da HDD esterno Hardware 0
L Recupero dati da SSD Windows 10 prof Windows e Software 2
L Problema con recupero dati in PHP cURL e JAVA con server PHP 1
S [PHP] Recupero più dati da form realizzata ciclo FOR PHP 5
P [PHP] Recupero dati da un array PHP 5
F Recupero dati json Ajax 2
I tabella con ciclo, recupero dati PHP 3
Emix Problema recupero Dati da MYSQL PHP 20
L Recupero dati da tutte le tabelle nel db MySQL 4
Alessio Gebbia [PHP] Recupero dati da un WHILE ! PHP 3
M recupero dati... PHP 1
P Recupero dati per select form PHP 9
L Recupero dati form in tabella e invio con ajax. Problemino jQuery 1
felino HDD 2.5'' caduto a terra: possibile recupero dei dati al suo interno Hardware 8
C Recupero dati da pagina esterna PHP 5
M recupero dati da db PHP 6
T Problema con form e recupero dati da mysql PHP 17
F errori sul recupero dati mysql e php PHP 3
minatore Recupero dati PHP 47
minatore Recupero dati MySQL 10
T Problema recupero dati da file [era: help script php] PHP 9
Vale2 Recove my files ™ Recupero dati Windows e Software 1
Vale2 Software per Recupero dati Windows e Software 0
D relazioni 1:n e recupero dati da form PHP 2
R Recupero dati hd esterno Windows e Software 3
O recupero dati da pagina web PHP 1
M Recupero dati Database tramite form richiesta PHP 9
B aiuto con ajax (recupero dati da un db) Javascript 2
M Recupero dati da pagina php PHP 2
E Recupero dati da database PHP 8
I Recupero particolari dati PHP 32
T recupero dati ASP.NET 0
T recupero dati da database ASP.NET 6
W Problema recupero dati database Javascript 2
C recupero dati dal form Javascript 1
C Anomalia Cartteri & recupero dati!!!!! Supporto Mr.Webmaster 0
O Recupero valori da listato Javascript 0
T foreach e fetchAll dove recupero solo l'ultimo record PHP 5
T recupero valori select multipla da android Javascript 3
W Recupero password Classic ASP 16
S [PHP] Recupero nome immagine da Form con input file PHP 3
bubino8 [PHP] Recupero id autoincrement PHP 8
I Recupero accesso pannello di controllo dominio Leggi, Normative e Fisco 2
S [PHP] form con metodo get e recupero id PHP 4
Emix [PHP] Check - Select e recupero variabili PHP 40
bubino8 [PHP] Recupero input senza invio PHP 1
U [PHP] Selezione con menu a tendina e recupero selezione PHP 5
P Javascript o Jquery - recupero testo (oltre al valore) di una select Javascript 5

Discussioni simili