Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Php, txt e MySQL

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    216

    Php, txt e MySQL

    ho un problema con un file txt...

    in poche parole devo mettere tutto ciò che è al suo interno in una tabella (composta da 5 elementi compreso l'id) in MySQL.

    ho provato e riprovato e sono anche andato a dare un'occhiata sul manuale ma non ho trovato nulla che facesse al mio caso...

    comunque sia sono riuscito ad aprire il file e a stamparlo a video...

    codice:
    <?php 
    $file=file_exists("siga.txt");
    	if($file==true)
    		{
    		 $file=fopen("siga.txt","a+");
    		}
    	else
    		{
    			echo "file non trovato!";
    		}
    
    $leggi=fread($file,filesize("siga.txt"));
    $max = count($leggi);
    $sss=nl2br($leggi);
    
    echo $sss;
    ?>
    come posso continuare???
    Server utilizzato: MySQL


    (cit.)
    Un misto tra pazzia ed intelligenza

  2. #2
    Una curiosità, perchè prendi elementi da un database e li inserisci in un file txt ? non è sicuro come metodo perchè chiunque può leggere quel file .txt con un semplice scanner.
    Programmatore e responsabile seo della testata giornalistica www.europacalcio.it - www.canforagennaro.it

  3. #3
    Ciao,
    molto dipende da come è fatto il tuo file txt

    se è una cosa tipo
    1, pippo, pluto
    2, paperino, topolino
    3, caio, tizio

    o se è:
    1, pippo, pluto, 2, paperino, topolino,3, caio, tizio

    o altro ancora

    nel primo caso caso non devi usare fread(), ma fgets() e poi explode()
    nel secondo capo va bene fread() ma poi devi fare un bel ciclo per trovare gli elementi giusti

    insomma senza sapere come è fatto il tuo txt è più difficile suggerire come fare :-)

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    216
    Ciao,
    molto dipende da come è fatto il tuo file txt

    se è una cosa tipo
    1, pippo, pluto
    2, paperino, topolino
    3, caio, tizio

    o se è:
    1, pippo, pluto, 2, paperino, topolino,3, caio, tizio

    o altro ancora

    nel primo caso caso non devi usare fread(), ma fgets() e poi explode()
    nel secondo capo va bene fread() ma poi devi fare un bel ciclo per trovare gli elementi giusti

    insomma senza sapere come è fatto il tuo txt è più difficile suggerire come fare :-)
    hai perfettamente ragione...

    il txt è fatto cosi:
    pippo
    0,10
    10,00
    0,60
    pluto
    7,00
    0,60
    9,00
    paperino
    1,00
    0,10
    2,00

    quindi per ogni nome ho tre valori...
    di conseguenza la tabella nel db, sara formata da 5 campi i 4 che formano il txt più uno per l'id...

    andando avanti mi sono reso conto che potrei fare un do{}while(!feof($array)), trovando la soluzione di passare i dati al db...

    quindi prendere il nome e metterlo nel db; prendere il primo valore e meterlo nel db e cosi via quando arriva al nome successivo cambia record(inevitabilmente in quanto i campi sono finiti)...
    Server utilizzato: MySQL


    (cit.)
    Un misto tra pazzia ed intelligenza

  5. #5
    Allora,
    immaginiamo che la tua tabella DB abbia il campo id AUTO_INCREMENT, e che quindi non verrà valorizzato sempre a null così che verrà autocalcolato dal db stesso.

    Tu a questo punto devi prendere i 4 valori , e metterli nella tabella.
    Puoi fare un cosa del genere (occhio che non l'ho testata e magari c'è qualche svista)

    Codice PHP:
    $file=file_exists("siga.txt");
        if(
    $file==true)
            {
             
    $file=fopen("siga.txt","a+");
            }
        else
            {
                echo 
    "file non trovato!";
            }

    //cicli il file
    while(! feof($file))
     {

        
    $string fgets($file); //fgets legge una riga alla volta dal file e si posiziona alla prox
        
    $value1 =fgets($file);
        
    $value2 =fgets($file);
        
    $value3 =fgets($file);   
        
        
    //qui prepari l'inserimento al DB 
        
    $query "INSERT INTO nome_tabella (id, campo_stringa, valore1, valore2, valore3) ";
        
    $query .="  VALUES (null, '$string', $value1,$value2,$value3)");

       
    //qui fai l'inserimento (do' per scontato che tu abbia già aperto la connessione al DB)
      
    $result mysql_query($query);

      
    // Controlli che sia andato tutto ok
      
    if (!$result
        {
           
    $message  'Invalid query: ' mysql_error() . "\n";
           
    $message .= 'Whole query: ' $query;
           die(
    $message);
         }
      } 

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    216
    Invalid query: No database selected Whole query: INSERT INTO sigarette (id, marca, catrame, nicotina, monossido) VALUES (null, 'BARI ', 8,00 ,0,60 ,7,00 )

    questo è l'errore che mi da'
    ti posto tutto il code:
    codice:
    <?php require_once('Connections/leggi_txt.php'); ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    </head>
    
    <body>
    
    <?php 
    $file=file_exists("siga.txt");
    	if($file==true)
    		{
    		 $file=fopen("siga.txt","a+");
    		 //$array = file("siga.txt");
    		 //$max = count($array);
    		}
    	else
    		{
    			echo "file non trovato!";
    		}
    //echo $max;
    //$i = 0;
    while(! feof($file))
    {
     	$marca = fgets($file); //fgets legge una riga alla volta dal file e si posiziona alla prox
        $catrame =fgets($file);
        $nicotina =fgets($file);
        $monossido =fgets($file);
    	
    	//qui prepari l'inserimento al DB 
        $query = "INSERT INTO sigarette (id, marca, catrame, nicotina, monossido) ";
        $query .="  VALUES (null, '$marca', $catrame,$nicotina,$monossido)"; 
    
    $result = mysql_query($query); 
    
    // Controlli che sia andato tutto ok
      if (!$result) 
        {
           $message  = 'Invalid query: ' . mysql_error() . "\n";
           $message .= 'Whole query: ' . $query;
           die($message);
         }
      }
    	
    /*
    $leggi=fread($file,filesize("siga.txt"));
    $sss=nl2br($leggi);
    echo $sss;*/
    ?>
    </body>
    </html>
    praticamente non ho fatto altro che un copia e incolla e ho cambiato i vari nome delle variabili...
    tutto il resto (quello che avevo fatto) l'ho commentato

    sono nelle tue mani...
    Server utilizzato: MySQL


    (cit.)
    Un misto tra pazzia ed intelligenza

  7. #7
    Vabbeh, ma te l'ho detto:

    Codice PHP:
    //qui fai l'inserimento (do' per scontato che tu abbia già aperto la connessione al DB)
      
    $result mysql_query($query); 
    dove l'hai aperta la connessione al DB?
    non l'hai aperta...


    devi usare mysql_connect() per connetterti a mysql
    e poi mysql_select_db() per selezionare il db da usare

    ...se no per forza che ti dice "Invalid query: No database selected"

  8. #8
    Crea un file config.php e scrivi il codice per la connessione, poi ad ogni pagina la riapri con include("config.php");
    Programmatore e responsabile seo della testata giornalistica www.europacalcio.it - www.canforagennaro.it

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    216
    Invalid query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\r\n, 0,60\r\n, 7,00\r\n)' at line 1 Whole query: INSERT INTO sigarette (id, marca, catrame, nicotina, monossido)VALUES (NULL, 'BARI\r\n', 8,00\r\n, 0,60\r\n, 7,00\r\n)

    codice:
    <?php require_once('Connections/leggi_txt.php'); ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    </head>
    
    <body>
    
    <?php 
    $file=file_exists("siga.txt");
    	if($file==true)
    		{
    		 $file=fopen("siga.txt","a+");
    		 //$array = file("siga.txt");
    		 //$max = count($array);
    		}
    	else
    		{
    			echo "file non trovato!";
    		}
    //echo $max;
    //$i = 0;
    while(! feof($file))
    {
     	$marca = mysql_real_escape_string(fgets($file)); //fgets legge una riga alla volta dal file e si posiziona alla prox
        $catrame =mysql_real_escape_string(fgets($file));
        $nicotina =mysql_real_escape_string(fgets($file));
        $monossido =mysql_real_escape_string(fgets($file));
    	
    	//qui prepari l'inserimento al DB 
        $query = "INSERT INTO sigarette (id, marca, catrame, nicotina, monossido)";
        $query .="VALUES (NULL, '$marca', $catrame, $nicotina, $monossido)"; 
    	mysql_select_db($database_leggi_txt);
    $result = mysql_query($query); 
    
    // Controlli che sia andato tutto ok
      if (!$result) 
        {
           $message  = 'Invalid query: ' . mysql_error() . "\n";
           $message .= 'Whole query: ' . $query;
           die($message);
         }
      }	
    /*
    $leggi=fread($file,filesize("siga.txt"));
    $sss=nl2br($leggi);
    echo $sss;*/
    ?>
    </body>
    </html>
    Server utilizzato: MySQL


    (cit.)
    Un misto tra pazzia ed intelligenza

  10. #10
    Originariamente inviato da rare
    Invalid query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\r\n, 0,60\r\n, 7,00\r\n)' at line 1 Whole query: INSERT INTO sigarette (id, marca, catrame, nicotina, monossido)VALUES (NULL, 'BARI\r\n', 8,00\r\n, 0,60\r\n, 7,00\r\n)
    significa che dal file legge anche gli "a capo" (\r\n)
    dove:
    \r = return carriage
    \n = new line
    e quindi poi cerca di inserirli nel DB


    prova ad usare trim() nel ciclo while, così:
    Codice PHP:

        $string 
    trim(fgets($file)); //fgets legge una riga alla volta dal file e si posiziona alla prox
        
    $value1 =trim(fgets($file));
        
    $value2 =trim(fgets($file));
        
    $value3 =trim(fgets($file)); 
    così dovrebbe togliere \r\n alla fine dei valori...

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.