Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di blob696
    Registrato dal
    Feb 2007
    Messaggi
    119

    INSERT_INTO con i dati di una query modificati

    come faccio ad inserire i valori che vedo a video con il while in una nuova tabella?

    mi spiego meglio:

    ho una tabella in un db mysql

    la tabella è cosi composta:

    -- Struttura della tabella `mio_nome`
    --

    CREATE TABLE IF NOT EXISTS `mio_nome` (
    `id` int(8) NOT NULL,
    `costo` varchar(15) NOT NULL,
    `data_acquisto` varchar(15) NOT NULL,
    `prodotto` varchar(25) NOT NULL,

    UNIQUE KEY `id` (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;


    purtroppo, i campi `costo` e `data_acquisto` sono in formato varchar e contengono i valori in questo modo:

    costo => '3.654,11'
    data_acquisto => '26/04/2010'

    sono in pratica delle stringhe

    io dovrei trasformare il campo costo in formato DECIMAL(10,2)
    e il campo data_acquisto in formato INT(11) per convertire la stringa in timestamp

    IL FATTO PERO' E' CHE DEVO LAVORARE SU TABELLE GIà CON I VALORI IMMESSI che sono parecchi e che devono essere mantenuti.

    quindi, se converto direttamente la struttura della tabella, trasformando il campo costo da varchar a DECIMAL(10,2), il valore 3.654,11 mi diventa 3.65 mentre a me serve che resti 3654.11 e se converto data_acquisto il valore mi diventa 26.

    la soluzione più appropriata potrebbe essere quella di effettuare una select e poi con while ($row = mysql_fetch_array($result)) {
    effettuare le appropriate funzioni di conversioni su $row['costo'] e $row['prodotto'] prima di stamparle con echo, che sono già riuscito a fare, (mi stampa il result con i valori costo e data_acquisto in formato numerico per come sono nella tabella originaria).

    ma come faccio ad inserire i valori che vedo a video con il while in una nuova tabella?? qui casca l'asino (almeno per me) con result select non sono riuscito a fare le conversioni.

    Ho provato ad inserire un INSERT_INTO dentro il While della SELECT ma mi inserisce nella nuova tabella soltanto la prima riga, mentre le righe sono parecchie.

    Insomma è da 4 ore che provo , ma niente.

    Avrei bisogno di un IMPUT (al cervello) chi mi aiuta? datemi almeno una traccia, sarebbe sempre un buon aiuto.

    ringrazio tutti

    saluti
    Giuseppe

  2. #2
    crea due nuovi campi con le giuste caratteristiche e poi fai un update dai vecchi campi ai nuovi modificando il contenuto stringa in numerico e timestamp. poi rimuovi i vecchi e rinomini i nuovi

    per il campo costo prima elimini il punto e poi converti la virgola in punto
    per il campo data_acquisto trasformi la stringa in data con str_to_date passandola a unix_timestamp.

    piu' o meno sara':

    codice:
    update mio_nome 
    set 
    nuova_data = unix_timestamp(str_to_date(data_acquisto, '%d/%m/%Y')),
    nuovo_costo = replace(replace(costo, '.', ''), ',', '.')
    comunque sia provalo prima di modificare tutta la tabella.

    Ma mi pare un argomento buono per il forum database

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

  3. #3
    Utente di HTML.it L'avatar di blob696
    Registrato dal
    Feb 2007
    Messaggi
    119
    funziona, grazie.

    ho anche modificato altri campi con Ltrim() e altre funzioni mysql.


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.