mandaci tutto il pezzo di php e proviamo a vedere cosa combini
Ciao
Mik
mandaci tutto il pezzo di php e proviamo a vedere cosa combini
Ciao
Mik
Posto il codice, anche se taglio i tentativi sbagliati, lascio l'ultimo che ho fatto:
Forse copiando avrò sbagliato dei nomi(ho usato dei nomi che non corrispondono ai dati veri, per distinguere meglio negli esempi le tabelle e le variabili).Codice PHP:<?php if(isset($_GET['id'])){
$id = $_GET'id'];
$prova = mysql_query("INSERT INTO tabella1 SET tabella1.nome = tabella2.nome WHERE tabella2.id = '$id'");
$prova2 = mysql_query("SELECT tabella2.nome, tabella2.nome2 FROM tabella1 AS tabella2, tabella2 AS tabella1 WHERE tabella1.nome='$id' AND tabella1.nome2=tabella2.nome2");
$prova3 = mysql_query("SELECT B.nome, B.nome2 FROM tabella1 AS A, tabella2 AS B WHERE B.nome = '$id'");
echo $prova;
echo $prova2;
echo $prova3;
}
$prova1 è u nnormale INSERT, tuttavia non funzionante che stavo provando per creare almeno i ldato in questione, mentre $prova2 e $prova3 sono tentativi su:
Comunque sia, la riga nella prima tabella non esiste ancora, esiste solo nella seconda, e la prima tabella ha le stesse variabili della seconda, per questo sono compatibili.codice:SELECT B.ID, B.NOME FROM TABELLA_AAA AS A, TABELLA_AAA AS B WHERE A.ID=111 AND A.NOME=B.NOME
In pratica devo riuscire a dire alla pagina:
1)"Seleziona la riga con l'id", e fin qui ci riesco;
2)"Seleziona tutte le righe della tabella2 che hanno il campo nome in comune con quello dell' id 1 (per esempio)", che non sò bene come si faccia, forse con my_sql_num_rows(ma non ho capito come fare a prendere il nome come dato, ho fatto diversi tentativi ma non stampa nulla)?;
3)"Prendi le righe selezionate e metti i campi segnalati (quindi in questo caso nome e nome2) nella tabella1";
4)"Cancella i dati selezionati precedentemente dalla tabella 2";
5)FINE.
![]()
![]()
Vi riposto il codice php di altri 3 tentativi, questa volta non appaiono scritte strane, semplicemente non funziona. La tabella a doversi aggiornare è commenti, quella contenente i dati inizialmente è verifica. Per non incappare in errori strani avevo anche creato un record vuoto con il solo valore numerico uguale a 2, emesso in entrambe le tabelle, ma neanche così riesco a fare l'update.Il codice l'ho preso dal link qui sotto, ma nenache questo sembra andare...
http://forum.html.it/forum/showthrea...readid=1388437
Codice PHP://$prova = mysql_query("UPDATE email AS commenti, email AS verifica SET commenti.email=verifica.email WHERE commenti.numero=verifica.numero");
//$prova = mysql_query("UPDATE email AS verifica, email AS commenti SET verifica.email=commenti.email WHERE verifica.numero=commenti.numero");
$prova = mysql_query("UPDATE commenti SET commenti.email=verifica.email WHERE commenti JOIN verifica ON commenti.numero=verifica.numero");
if($prova){$prova="funziona";}else{$prova="non funziona";}
![]()
![]()
Fatto, così funziona e fà quello che chiedo. Ha solo 2 pecche: la prima è che devo scrivere 3 query per farla funzionare, più la quarta di DELETE.. , la seconda è che mi aggiunge solo il primo record che vede, ignorando gli altri due(ne ho creati 3 che corrispondono a questecaratteristiche). Sapete dirmi perchè?
Codice PHP:$safe = '2';
//1
$query = "SELECT nome FROM verifica WHERE numero LIKE $safe";
$res = mysql_query($query);
$array = mysql_fetch_array($res);
$arrnome = $array['nomel'];
$arrnome2 = "'%".mysql_escape_string($array['nome']). "%'";
//2
$query2 = "SELECT nome,nome2 FROM verifica WHERE nome LIKE $arrnome2";
$res2 = mysql_query($query2);
$arr = mysql_fetch_array($res2);
$nome = $arr['nome'];
$nome2 = $arr['nome2'];
//3
$query3 = "INSERT INTO commenti (nome,nome2) VALUES ('$nome','$nome2')";
$res3 = mysql_query($query3);
Risolto così:
Se avete idee migliori, codici più snelli, ecc, scrivete pure.Codice PHP:$safe = '2';
//1
$query = "SELECT nome FROM tabella2 WHERE numero LIKE $safe";
$res = mysql_query($query);
$array = mysql_fetch_array($res);
$nome = $array['nome'];
$nome2 = "'%".mysql_escape_string($array['nome']). "%'";
//2
$query2 = "INSERT INTO tabella1 (nome,nome2) SELECT nome,nome2 FROM(SELECT DISTINCT nome,nome2 FROM tabella2 WHERE nome LIKE $nome2) x";
$res2 = mysql_query($query2);
.
P.S. non ho capito la x (trovato su una guida in inglese di mysql) alla fine di query2 a cosa serva, ma se la tolgo non funziona: qualcuno me lo spiega?
è un alias di tabella
In mysql ogni subselect ha bisogno di un alias e in questo caso la x è l'alias della subselect
(SELECT DISTINCT nome,nome2 FROM tabella2 WHERE nome LIKE $nome2)
Ciao
Mik
Così è molto più chiaro. Grazie![]()