Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    54

    insert into da query select

    Ciao a tutti sono di nuovo qua. Ho un piccolo problema che non riesco a capire. Vorrei che il risultato della query venisse scritto in una tabella esistente.
    Codice PHP:
    $query " SELECT * FROM interventi WHERE 1=1 ";/ $w_cliente=""; if($cliente != ""){$w_cliente=" AND cliente LIKE '%".$cliente."%' ";} $w_cognome=""; if($cognome!=""){$w_cognome=" AND cognome LIKE '%".$cognome."%' ";} $w_nome=""; if($nome!=""){$w_nome=" AND nome LIKE '%".$nome."%' ";} $query .=$w_tipologia.$w_cognome.$w_nome." ORDER BY id"$ris=mysql_query($query) or die ('errore: qualcosa è andato storto'); $esiste=mysql_num_rows($ris); 
    Con questa query riesco a "stampare" la tabella di ricerca.
    Codice PHP:
    $query " insert into tempo SELECT * FROM interventi WHERE 1=1 ";/ $w_cliente=""; if($cliente != ""){$w_cliente=" AND cliente LIKE '%".$cliente."%' ";} $w_cognome=""; if($cognome!=""){$w_cognome=" AND cognome LIKE '%".$cognome."%' ";} $w_nome=""; if($nome!=""){$w_nome=" AND nome LIKE '%".$nome."%' ";} $query .=$w_tipologia.$w_cognome.$w_nome." ORDER BY id"$ris=mysql_query($query) or die ('errore: qualcosa è andato storto'); $esiste=mysql_num_rows($ris); 

    Con quest'altra invece non vedo stampato nulla ma scrive correttamente i dati nella tabella. Come posso fare per visualizzare a video la ricerca e contemporaneamente inserire i dati nella nuova tabella?? Grazie.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Formatta bene il codice, tutto su una riga non si capisce niente.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    54
    Scusa eccola iscritta come nella pagina php
    1) questa sotto ricerca i dati da me scelti e li stampa a video. Ovviamente non inserisce nulla nella tabella
    $query = " SELECT * FROM interventi WHERE 1=1 ";
    $w_cliente=""; if($cliente != ""){$w_cliente=" AND cliente LIKE '%".$cliente."%' ";} $w_cognome=""; if($cognome!=""){$w_cognome=" AND cognome LIKE '%".$cognome."%' ";} $w_nome=""; if($nome!=""){$w_nome=" AND nome LIKE '%".$nome."%' ";}
    $query .=$w_tipologia.$w_cognome.$w_nome." ORDER BY id";
    $q="INSERT INTO tempo$query";
    $ris=mysql_query($query) or die ('errore: qualcosa è andato storto'); $esiste=mysql_num_rows($ris);

    2) Questa sotto inserisce i dati ricercati in tabella ma non mi stampa a video i risultati
    $query = " INSERT INTO tempo SELECT * FROM interventi WHERE 1=1 ";
    $w_cliente=""; if($cliente != ""){$w_cliente=" AND cliente LIKE '%".$cliente."%' ";} $w_cognome=""; if($cognome!=""){$w_cognome=" AND cognome LIKE '%".$cognome."%' ";} $w_nome=""; if($nome!=""){$w_nome=" AND nome LIKE '%".$nome."%' ";}
    $query .=$w_tipologia.$w_cognome.$w_nome." ORDER BY id"; $ris=mysql_query($query) or die ('errore: qualcosa è andato storto');
    $esiste=mysql_num_rows($ris);

  4. #4
    l'insert non prevede di restituire un record set ma solo l'esito dell'insert stesso.

    Devi rifare la query con select.

    1) insert ... select
    2) select

    sono due query totalmente diverse

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    54
    Ho inserito alla fine $qw="INSERT INTO tempo select * from $query";
    ma niente. mi effettua la ricerca e la vedo solo a video non inserisce nella tabella.

    Preciso che nella seconda ipotesi cioè quando inserisce e non stampa nulla a video mi esce questo warning
    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/cerca2.php on line 47
    questo è il rigo 47
    $esiste=mysql_num_rows($ris);

  6. #6
    Originariamente inviato da lelemkop
    Ho inserito alla fine $qw="INSERT INTO tempo select * from $query";
    ma niente. mi effettua la ricerca e la vedo solo a video non inserisce nella tabella.

    Preciso che nella seconda ipotesi cioè quando inserisce e non stampa nulla a video mi esce questo warning
    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/cerca2.php on line 47
    questo è il rigo 47
    $esiste=mysql_num_rows($ris);
    forse non hai visto il mio post precedente....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    54
    Ho fatto così
    $query="INSERT INTO tempo select * from clienti";
    $query = "SELECT * FROM clienti WHERE 1=1 ";
    $w_tipologia="";
    if($tipologia != ""){$w_tipologia=" AND tipologia LIKE '%".$tipologia."%' ";}
    $w_cognome="";
    if($cognome!=""){$w_cognome=" AND cognome LIKE '%".$cognome."%' ";}
    $w_nome="";
    if($nome!=""){$w_nome=" AND nome LIKE '%".$nome."%' ";}
    $query .=$w_tipologia.$w_cognome.$w_nome." ORDER BY id";

    ma niente.
    Scusa ma non so dove sbattere più la testa.

  8. #8
    le due devono essere query distinte.

    codice:
    // questa query inserisce tutta la tabella clienti in tempo
    $query="INSERT INTO tempo select * from clienti";
    
    // ma $query sovrascrive la variabile precedente....
    $query = "SELECT * FROM clienti WHERE 1=1 ";
    $w_tipologia="";
    if($tipologia != ""){$w_tipologia=" AND tipologia LIKE '%".$tipologia."%' ";}
    $w_cognome="";
    if($cognome!=""){$w_cognome=" AND cognome LIKE '%".$cognome."%' ";}
    $w_nome="";
    if($nome!=""){$w_nome=" AND nome LIKE '%".$nome."%' ";}
    $query .=$w_tipologia.$w_cognome.$w_nome." ORDER BY id";
    dovresti eseguire INSERT .... SELECT quello che ti serve.
    Poi verifica con mysql_affected_row() quante righe sono state inserite nella tabella tempo e metti il numero delle righe copiate in una variabile es: $num

    A questo punto dovrai fare semplicemente (se hai un id progressivo):
    codice:
    mysql_query("select * from tempo order by id desc limit $num");
    ripeto INSERT - INSERT .... SELECT son modifiche al database. Invece SELECT non modifica il database.
    Entrambe le query rendono true con il resurce id oppure false.

    Se fai modifiche dovrai leggere il numero delle righe modificate con mysql_affected_rows(id link)
    Se fai solo SELECT potrai leggere il numero dei record trovato con mysql_num_rows(id resource)

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    54
    Un milione di grazie... ho risolto.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.