Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    cerco tutorial per inserimento dati in db da file di testo

    sono completamente ignorante in fatto di programmazione di qualsiasi genere, sto quindi cercando un tutorial od uno script gia fatto se qualcuno me lo volesse passare che faccia questo tipo di operazione:

    - prendere le righe di un file di testo composto da parole o frasi, una parole o frase per riga
    - prendere linea per linea dal file di testo ed inserirla in un database mysql formato da un solo campo, un record per linea
    - controllare se una frase o parola esiste gia nel database e scartarla

    immagino che mi direte che e' semplicissimo, pero' come dicevo prima, non so programmare con php/mysql

    se qualcuno volesse aiutarmi, grazie

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    http://dev.mysql.com/doc/refman/5.1/en/load-data.html

    load data infile "c:/tuo_path/tuofile.txt" into table tua_tabella

    poi con una insert into select in una nuova tabella rimuovi i duplicati

  3. #3
    Si con il LOAD DATA INFILE dalla console di MySQL oppure:

    Codice PHP:
    <?php
    /*PARTE DA MODIFICARE */
    $nomeTabella="";
    $nomeCampo="";
    /* CONNESSIONE AL SERVER MYSQL */
    $server="";
    $username="";
    $password="";
    $nomeDatabase="";
    /* FINE PARTE DA MODIFICARE */
    mysql_connect ($server,$username,$password) or die(mysql_error());
    mysql_select_db ($nomeDatabase) or die(mysql_error());
    $nomefile="file.txt";
    $news=fopen($nomefile,"r");  //apre il file
       
    while (!feof($news)) 
       {
          
    $buffer fgets($news4096); //lo leggo riga per riga
          
    $queryControllo=mysql_query("SELECT * FROM $nomeTabella WHERE $nomeCampo='$news'") or die (mysql_error());
          
    $esiste=mysql_num_rows($queryControllo);
          if (
    $esiste==0)
          {
                
    mysql_query("INSERT INTO $nomeTabella ($nomeCampo) VALUES ('$news')") or   die(mysql_error());
          }
           else
           {
                 echo 
    "[b]Riga $news esistente[/b]";
           }
       }
    fclose ($news); //chiude il file
    ?>
    Vedi un po' se funziona.
    Spero di esserti stato d'aiuto.

    --Cosimo
    --Cosimo
    MAIL: cosimo.g18@gmail.com

  4. #4
    ho provato a farlo funzionare pero' c'e' un problema, questo e' il risultato dello script quando viene eseguito:

    Riga Resource id #3 esistenteRiga Resource id #3 esistenteRiga Resource id #3 esistenteRiga Resource id #3 esistenteRiga Resource id #3 esistenteRiga Resource id #3 esistente
    queste sono le parole che ho inserito nel file di testo:
    ciao
    parola
    sette
    diviso
    ultra
    parola
    nemmeno



    mentre questo e' il dump del database:
    Codice PHP:
    -- phpMyAdmin SQL Dump -- version 2.11.9.4 -- [url]http://www.phpmyadmin.net[/url] -- -- Host: localhost -- Generato il: 14 Mag, 2009 at 09:53 AM -- Versione MySQL: 5.0.67 -- Versione PHP: 5.2.6  SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";  -- -- Database: `adultawi_wordtracker` --  -- --------------------------------------------------------  -- -- Struttura della tabella `ricerche` --  CREATE TABLE IF NOT EXISTS `ricerche` (   `ricerca` varchar(50) character set utf8 collate utf8_bin NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;  -- -- Dump dei dati per la tabella `ricerche` --  INSERT INTO `ricerche` (`ricerca`) VALUES ('Resource id #3'); 

    lo scopo di questo script dovrebbe essere la creazione di un suggeritore di parole molto semplice, senza dati di quantita' e frequenza, solo parole e/o frasi che poi possono essere ricercate in vari modi "inizia per" "contiene" "intera", ecc. ecc.

  5. #5
    ho modificato il database prendendo una tabella di log search da un altro script e questo sarebbe il dump del database attuale:

    -- phpMyAdmin SQL Dump
    -- version 2.11.9.4
    -- http://www.phpmyadmin.net
    --
    -- Host: localhost
    -- Generato il: 14 Mag, 2009 at 10:14 AM
    -- Versione MySQL: 5.0.67
    -- Versione PHP: 5.2.6

    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

    --
    -- Database: `adultawi_wordtracker`
    --

    -- --------------------------------------------------------

    --
    -- Struttura della tabella `sg_log_search`
    --

    CREATE TABLE IF NOT EXISTS `sg_log_search` (
    `what` char(1) NOT NULL default '',
    `word` varchar(255) NOT NULL default '',
    `count` int(10) unsigned NOT NULL default '0',
    `n` int(10) unsigned NOT NULL auto_increment,
    PRIMARY KEY (`n`),
    KEY `what` (`what`),
    KEY `word` (`word`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

    --
    -- Dump dei dati per la tabella `sg_log_search`
    --


    la stringhe nello script sono impostate cosi:

    $nomeTabella="sg_log_search";
    $nomeCampo="word";

    gli altri campi li ignoro

  6. #6
    Prova a fare così:
    Codice PHP:
    <?php
    /*PARTE DA MODIFICARE */
    $nomeTabella="";
    $nomeCampo="";
    /* CONNESSIONE AL SERVER MYSQL */
    $server="";
    $username="";
    $password="";
    $nomeDatabase="";
    /* FINE PARTE DA MODIFICARE */
    mysql_connect ($server,$username,$password) or die(mysql_error());
    mysql_select_db ($nomeDatabase) or die(mysql_error());
    $nomefile="file.txt";
    $news=fopen($nomefile,"r");  //apre il file
       
    while (!feof($news))
       {
          
    $buffer fgets($news4096); //lo leggo riga per riga
          
    $queryControllo=mysql_query("SELECT * FROM $nomeTabella WHERE $nomeCampo='$buffer'") or die (mysql_error());
          
    $esiste=mysql_num_rows($queryControllo);
          if (
    $esiste==0)
          {
                
    mysql_query("INSERT INTO $nomeTabella ($nomeCampo) VALUES ('$buffer')") or   die(mysql_error());
          }
           else
           {
                 echo 
    "[b]Riga $buffer esistente[/b]";
           }
       }
    fclose ($news); //chiude il file
    ?>
    Scusami ma non ho tempo di provare questo script ma ora "dovrebbe" andare...
    C'era un errore: il contenuto delle righe lette dal file sono salvate nella variabile $buffer e non in $news che è il puntatore al file

    Fammi sapere se va......

    --Cosimo
    --Cosimo
    MAIL: cosimo.g18@gmail.com

  7. #7
    immagino che sto abusando, pero' il primo inserimento funziona, anche se il primo record e' vuoto, la parola ripetuta viene ignorata, se pero' faccio un secondo inserimento sempre con una parola ripetuta, questa viene inserita due volte lo stesso

  8. #8
    Ok l'ho provato

    Così funziona tutto.

    Codice PHP:
    <?php
    /*PARTE DA MODIFICARE */
    $nomeTabella="";
    $nomeCampo="";
    /* CONNESSIONE AL SERVER MYSQL */
    $server="";
    $username="";
    $password="";
    $nomeDatabase="";
    /* FINE PARTE DA MODIFICARE */
    mysql_connect ($server,$username,$password) or die(mysql_error());
    mysql_select_db ($nomeDatabase) or die(mysql_error());
    $nomefile="file.txt";
    $news=fopen($nomefile,"r+");  //apre il file in modalità r+
       
    while (!feof($news))
       {
          
    $buffer fgets($news4096); //lo leggo riga per riga
          
    $parola=trim($buffer); // elimino gli spazi.....
          
    $queryControllo=mysql_query("SELECT * FROM $nomeTabella WHERE $nomeCampo='$parola'") or die (mysql_error());
          
    $esiste=mysql_num_rows($queryControllo);
          if (
    $esiste==0)
          {
                
    mysql_query("INSERT INTO $nomeTabella ($nomeCampo) VALUES ('$parola')") or   die(mysql_error());
             echo 
    "[b]Ho inserito la parola: $parola[/b]
    "
    ;    
          }
           else
           {
                 echo 
    "[b]Parola: $parola esistente[/b]
    "
    ;
           }
       }
    fclose ($news); //chiude il file
    ?>
    Riprova un attimo e poi dimmi...
    --Cosimo
    MAIL: cosimo.g18@gmail.com

  9. #9
    sembra proprio funzionare

    adesso mi mettero' a studiarmi gli script per interrogare il database, pero' credo che mi aiutero' con qualche applicazione prefatta


    grazie mille

  10. #10
    se hai bisogno, scrivimi pure (anche in PVT)

    ciao
    --Cosimo
    MAIL: cosimo.g18@gmail.com

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.