Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 18 su 18
  1. #11

  2. #12
    Posto il codice, anche se taglio i tentativi sbagliati, lascio l'ultimo che ho fatto:
    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;
    }
    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).
    $prova1 è u nnormale INSERT, tuttavia non funzionante che stavo provando per creare almeno i ldato in questione, mentre $prova2 e $prova3 sono tentativi su:

    codice:
    SELECT B.ID, B.NOME FROM TABELLA_AAA AS A, TABELLA_AAA AS B WHERE A.ID=111 AND A.NOME=B.NOME
    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.
    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.


  3. #13
    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";} 

  4. #14
    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); 

  5. #15

    Risolto

    Risolto così:
    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); 
    Se avete idee migliori, codici più snelli, ecc, scrivete pure. .

    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?

  6. #16

  7. #17
    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

  8. #18
    Così è molto più chiaro. Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.