estrarre dati da una tabella e riscriverli su di un altra

  • Creatore Discussione Creatore Discussione Monital
  • Data di inizio Data di inizio

Monital

Utente Attivo
15 Apr 2009
778
2
18
Salve avrei un problemino già descritto in sommi capi in un altra discussione ma pensa pensa credo che la cosa sia risolvibile in maniera più veloce e forse più adatta con il php

in pratica io ho creato uno script molto esteso e solo successivamente ho pensato alla possibilità di collegare un paio di tabelle ma non sono sicuro si possa fare

ho due tabelle (ma alla fine possono esse anche più di 2) in una ho una serie di nominativi(CAMPO:NOME) con una serie di dati

nell'altra tabella ho un'altra serie di nominativi(CAMPO: NOME) di cui alcuni coincidono con quelli della tabella 1 ora ho un campo in comune(ma il nome campo è diverso) e vorrei creare unos cript(che poi sarà un tasto) che mi permetta di farequesto

quando viene selezionato un nome dalla tabella 2 deve cercarlo nella tabella1, se lo trova deve prendere il valore del campoA della tabella1 e inserirlo nella tabella 2(sovrascrivendo il valore già esistente)nel campoB, ovviamente corrispondente al NOME

pensate sia possibile la cosa?

se si potete aiutarmi nel farlo? è una cosa un pò ostica per me quindi accetterei m olto volentieri qualunque tipo di aiuto

grazie
 
ciao
se non ho capito male vorresti fare una cosa del genere

PHP:
<?php
//tutto quello che viene prima
$nome_da_tab2 ="pinco";//come lo selezioni non lo so, probabilmente da un form in cui estrai i nomi
//lo cerchi nella tabella 1 A PROPOSITO E' UNICO??
$qry=mysql_query("SELECT campoA FROM tabella_1 WHERE campoA='$nome_da_tab2'");
//verifichi che esista
$esiste=mysql_num_rows($qry);
if($esiste > 0){
	//lo estrai
	$row=mysql_fetch_array($qry);
	//scrivo per esteso, ma poi puoi semplificare
	$nome_da_tab1=row['campoA'];
	$qry="UPDATE FROM tabella_2 SET campoB='$nome_da_tab1' WHERE campoB='$nome_da_tab2'";
	$result=mysql_query($qry);
}else{
	//quant'altro devi fare
}
//ecc
.....
?>

p.s.
ho scritto E'UNICO? perchè se non lo è devi procedere in altra maniera
 
sto forum epr il php non lo batte nessuno

ok borgo hai fatto centro è proprio quello che cerco

però però però però e cìè un però

volevo se era possibile far fare la cosa su tutta la tabella senza selezionare il singolo nome(che è unico)

creerò un tasto che ogni volta che aggiorno la tabella 1(con importazione dati in csv) deve aggirnarmi il campo B della tabella 2 in base al campo a della 1

sicuramente ci vuole un array che scorr ai nomi della tabella 2 ne trovi la corrispondena nella tabella 1 e copiincolli(semplifico per spiegare brevemente) il campo A tab1 nel campo B tab2

come ben saprete oramai :rolleyes: l'array è largomento opiù duro e che odio di + di tutto il php

cmq intanto le tue informazioni sono molto utili per aggiornare la cosa singolarmente però dato che si tratta sempre di circa 400 righe per 3 tabelle volevo usare l'array per smeplificare la cosa

HELP
 
ciao
prima di procedere vorrei capire una cosa perchè ho "rimuginato" su quanto hai chiesto.
ti faccio un esempio
tabella_1 campoA
sofonisba
sempronio
adrubale
.......

tabella_2 campoB
asdrubale
pamcrazio
carneade
........

1)tu estrai un nome dalla tabella_2.campoB es. asdrubale
2)verifichi se sulla tabella_1.campoA esiste asdrubale (in questo caso si)
3)estrai da tabella_1.campoA il nome (sempre asdrubale)
4)aggiorni tabella_2.campoB con sempre asdrubale

conseguenza nel campoB avevi "asdrubale", dopo tutto l'ambaradan nel campoB avrai ancora "asdrubale"

il tutto avrebbe un senso se nella tabella_1 tu avessi un altro campoA1, e nella tabella_1 tu avessi anche il campoB1, che possono contenere
valori diversi, per cui facendo quello che chiedi il valore del campoB1 viene uppato al valore del campoA1.

es.
tabella_1: campoA = asdrubale, campoA1 = genio
tabella_2: campoB = asdrubale, campoB1 = tronista

dopo l'uppaggio avrai
tabella_1: campoA = asdrubale, campoA1 = genio
tabella_2: campoB = asdrubale, campoB1 = genio


se è questo che intendi, cioè alla fine avere le tabella_2 aggiornata con i valori della tabella_1
quano ti ho scritto diventa:

PHP:
<?php 
//tutto quello che viene prima....
//estraggo i valori dei campi dalla tabella_2
$qry2=mysql_query("SELECT * FROM tabella_2 ORDER BY campoB");//l'order by può o no servire
while($row_2=mysql_fetch_array($qry2)){
	$nome_da_tab2=$row_2['campoB'];
	$valore_da_tab2=$row_2['campoB1'];
	//cerco su tabella_1 la corrispondenza tra i nomi
	$qry1=mysql_query("SELECT * FROM tabella_1 WHERE campoA='$nome_da_tab2'");
	//verifico l'esistenza
	$esiste=mysql_num_rows($qry1);
	if($esiste > 0){//se maggiore di o : esiste
		//estraggo i valori dei campi da tabella_1
		$row_1=mysql_fetch_array($qry1);
		$nome_da_tab1=$row_1['campoA'];//questo non servirebbe in quanto == a $nome_da_tab2
		$valore_da_tab1=$row_1['campoA1'];
		//verifico che i valori del campoB1 sia uguale a quello del campoA1
		//se sono diversi uppo
		//se uguali inutile uppare
		if($valore_da_tab2 != $valore_da_tab1){
			$result=mysql_query("UPDATE tabella_2 SET campoB1='$valore_da_tab1' WHERE campoB='$nome_da_tab1' ");
			//sarebbe lo stesso mettendo WHERE campoB='$nome_da_tab2'
		}//fine if diversi
	}//fine if esiste
}//fine del while
//eccetera............
?>
se fai uno script del genere e lo lanci la tabella_2 si uppa con i valori della tabella_1

s.e.o.
 
borgo non ho ancora testato e spero di ruisucire a farlo + tardi però permettimi di farti i miei complimenti

inanzitutto come giustamente osservavi credo dia ver dimenticato il passaggio e difatti e proprio come immaginavi

nella tabella 2 ho dei nomi rpesenti anche nella 1 ed il campo A1 e Campo B1 sono quelli che devono esse ugali in base al nome che sarebbe il campo A e B

grazie ancora sei un genio e sono stato unos tupido alal fine eprchè potevo arrivarci anche io con la funzione
mysql_num_rows

cmq come rieso testo tutto e vediamo se va tutto bene anche se di prima è proprio quello che cercavo
 
Testato un paio di giorni fa e reso operativo

Funziona

P
E
R
F
E
T
T
A
M
E
N
T
E

:beer:
 

Discussioni simili