Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [MYSQL PHP] modificare molti campi testo

    Ciao a tutti
    avrei bisogno di una dritta:
    dovrei creare una pagina PHP che mi permetta di modificare tutte le date sbagliate di un database MYSQL piuttosto grosso (più di 65.000 records).
    Il campo data in questione è in formato testo, e non data, ma va bene così, il problema è dovuto al fatto che il Database prima era in DB3, quindi le date erano scritte in questo formato 10/10/93, importandole in MYSQL sono diventate 10/10/1993, e fin qui va bene, ma il problema sorge dopo l'anno 2000, le date sono inserite così: 10/10/1900, lo stesso vale per gli anni successivi, fino all'importazione del nuovo database MYSQL, quest'anno.
    Adesso le date vengono inserite dall'utente nel modo giusto (ma sempre nel formato testo, e mi va bene così), ma restano indietro migliaia di record scritti sbagliati.
    come potrei fare a modificare in qualche passaggio tutte le date sbagliate?
    grazie per l'attenzione
    Fare....o NON fare...non c'è tentare!
    YODA

  2. #2
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Codice PHP:
    <?php
    $sql 
    "SELECT data FROM tua_tabella";
    $result mysql_query($sql);
    while(
    $row mysql_fetch_array($result))
    {
        
    $data $row['data'];
        
    $tokens explode("/"$data);
        
    $new_data substr($tokens['2'], 22);
        
        
    $data $tokens['0']."/".$tokens['1']."/".$new_data;
        
        
    mysql_query("UPDATE tua_tabella SET data = '".$data."'");
        
        print(
    "La data è stata aggiornata in: '".$data."' con successo!
    "
    );
    }

    ?>
    Ovviamente sostituisci le query con quelle adatte al tuo caso (le mie sono solo di esempio).


  3. #3
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Dimenticavo di dirti (anche se spero sia ovvio) di fare il BackUp del Db prima di far partire quello script^^

  4. #4
    mi sembra che faccia proprio al mio caso, lo devo provare, non è che potresti spiegarmi di preciso cosa fa questo script, passo passo?
    non ho capito come agisce.
    Un altro quesito, visto che mi dici (con sensata ragione) di fare prima un backup del DB, come posso fare? il DB è molto grosso, circa 40 Mb, PHPMYADMIN mi restituisce errore durante il tentativo di DUMP.
    Il DB è su server LINUX in INTRANET, al quale ho accesso totale ROOT, quindi pensavo di salvarlo direttamente, ma purtroppo non so usare neanche LINUX .
    Come potrei fare per effettuare una semplice copia del file di DB, magari schedulata nel tempo(una volta alla settimana o addirittura al giorno)?
    Mi rendo conto che stiamo esulando dall'argomento, ma...
    grazie
    Fare....o NON fare...non c'è tentare!
    YODA

  5. #5
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Comincio spiegandoti lo script:
    Codice PHP:
    $sql "SELECT data FROM tua_tabella"
    Definisco la stringa di selezione dal DB. Presumo tu abbia conoscenze a riguardo altrimenti ti postero' dei tutorial sulla connessione al DB via PHP.

    Codice PHP:
    $result mysql_query($sql); 
    Eseguo la query di cui sopra

    Codice PHP:
    while($row mysql_fetch_array($result))

    finchè ci sono risultati (righe del DB) eseguo i comandi riportati sotto

    Codice PHP:
        $data $row['data']; 
    Estrapolo la data dal risultato della query

    Codice PHP:
        $tokens explode("/"$data); 
    Suddivido la stringa della data (ad es. 13/02/1991), spezzandola dove trovo il carattere "/" grazie all'utilissima funzione explode che mi restituisce un array ($tokens) con all'interno i pezzetti della stringa che abbiamo "esploso".

    Codice PHP:
        $new_data substr($tokens['2'], 22); 
    Salvo nella variabile $new_data il nuovo valore DELL'ANNO che estrapolo dal terzo pezzetto di data ($tokens['2']) prendendo solo gli ultimi due caratteri con substr.

    Codice PHP:
        $data $tokens['0']."/".$tokens['1']."/".$new_data
    Ricostruisco la data ma con l'anno aggiornato nel nuovo formato

    Codice PHP:
        mysql_query("UPDATE tua_tabella SET data = '".$data."'"); 
    Inserisco la nuova data nel DB

    Codice PHP:
        print("La data è stata aggiornata in: '".$data."' con successo!
    "
    ); 
    Messaggio di debugging/conferma che ti permette di capire a che punto sei (visto che ci vorrà un po) ed, eventualmente, a che punto si è verificato un problema.


    Per quanto riguarda lo scheduling del backup di un DB non sono la persona adatta
    Cmq trovo strano che PhpMyAdmin ti dia errore nel DUMP. Sapresti riportare l'errore?

  6. #6
    Sei stato chiarissimo e ti ringrazio per la solerzia, lo provo subito.

    Dunque, PHPMYADMIN quando eseguo il DUMP rimane a lavorare per cinque minuti, poi mi da una serie di scritte con un errore generico, non ricordo di preciso, ma ne ho parlato con qualcuno e mi è stato detto che quel programma permette di fare DUMp solo fino ad una certa grandezza di DB, mi sembra di aver capito 20 Mb, ma non sono sicuro neanche di questo.

    E' per questo che pensavo di fare tutto direttamente da riga di comando LINUX.

    grazie ancora
    Fare....o NON fare...non c'è tentare!
    YODA

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.