Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2010-02-12 10:20:16

  Telkomp - Użytkownik

Telkomp
Użytkownik
Skąd: Krasnystaw
Zarejestrowany: 2007-04-03
Serwis

Czytanie TXT do MySql

Witam

Od paru dni poszukuje sposobu jak napisać skrypt php, który zszyta z pliku bww.txt dane w postaci:

Kod:

USD#100#286.00#300.00
EUR#100#393.00#407.00
GBP#100#460.00#471.00
CHF#100#267.00#281.00
...

i prześle je do bazy MySql w takiej postaci:

Kod:

INSERT INTO `kursy` VALUES (1,'USD','100','275.00','291.00');

ważne też jest to, by bezproblemowo po każdorazowym odpaleniu skryptu, bezbłędnie nadpisywał wartości tabel bazy danych.

Ma ktoś pomysł jak to ugryźć ;)


Aptosid User ;)

Offline

 

#2  2010-02-12 10:41:45

  BiExi - matka przelozona

BiExi
matka przelozona
Skąd: Gorlice
Zarejestrowany: 2004-04-16
Serwis

Re: Czytanie TXT do MySql

czytaj z pliku w petli i zapisuj do bazy ::] Ciąg znakóe dziel explode
tu masz opis operacji do na plikach
http://programowanie.celary.net/operacje_na_plikach_w_php.html
a tu masz przyklada do explode
http://www.egrafik.pl/kurs-php/strings.substrings.php

Offline

 

#3  2010-02-12 11:04:34

  Telkomp - Użytkownik

Telkomp
Użytkownik
Skąd: Krasnystaw
Zarejestrowany: 2007-04-03
Serwis

Re: Czytanie TXT do MySql

Tyle to ja też znalazłem, pytanie jak to połączyć w całość ??


Aptosid User ;)

Offline

 

#4  2010-02-12 11:16:43

  szewczyk - Stary wyjadacz :P

szewczyk
Stary wyjadacz :P
Zarejestrowany: 2006-12-03

Re: Czytanie TXT do MySql

może tak :

Kod:

    function parse($plik) 
    {
        $uchwyt=fopen($plik, 'r');
        while (!feof($uchwyt)) 
          {
            $wiersz = trim(fgets($uchwyt));
            if(substr($wiersz, 0, 1)==' ' or empty($wiersz)) continue;    // usuwa puste linie
            explode('#',$wiersz);    
            echo $wiersz[0] . ' - '. $wiersz[1] . ' - ' . $wiersz[2] ;
        

          }         
    }

pisane na szybko ale powinno działać

Offline

 

#5  2010-02-12 12:11:51

  Telkomp - Użytkownik

Telkomp
Użytkownik
Skąd: Krasnystaw
Zarejestrowany: 2007-04-03
Serwis

Re: Czytanie TXT do MySql

Ok, to może inaczej, może prościej będzie napisać skrypt php, pomijając sql by zamiast:

Kod:

USD#100#286.00#300.00
EUR#100#393.00#407.00
GBP#100#460.00#471.00
CHF#100#267.00#281.00
...

pokazywał tabelkę jako strona php a w niej wskazania tych walut, np jak te nazwiska:

Kod:

+----+-----------+----------+------+
| id | imie      | nazwisko | wiek |
+----+-----------+----------+------+
|  1 | Jan       | Nowak    |   37 |
|  2 | Piotr     | Kowalski |   15 |
|  3 | Anna      | Guzik    |   22 |
|  4 | Katarzyna | Belka    |   56 |
|  5 | Marian    | Krzaczek |   47 |
+----+-----------+----------+------+

Walut jest aż 15, plik bww.txt generuje program kasjerski i przesyła go na serwer w w/w postaci, a ja przyznam że nie jestem specjalistą w php, bardziej znam podstawy ;)


Aptosid User ;)

Offline

 

#6  2010-02-12 14:57:19

  szewczyk - Stary wyjadacz :P

szewczyk
Stary wyjadacz :P
Zarejestrowany: 2006-12-03

Re: Czytanie TXT do MySql

a może frytki do tego ?

funckje masz napisaną ,samo sie nie zrobi....

Offline

 

#7  2010-02-12 16:16:05

  Telkomp - Użytkownik

Telkomp
Użytkownik
Skąd: Krasnystaw
Zarejestrowany: 2007-04-03
Serwis

Re: Czytanie TXT do MySql

Ok już sobie poradziłem bez mysql, skrypt php czyta z txt i miodzio wyświetla ;)


Aptosid User ;)

Offline

 

#8  2010-02-12 19:05:31

  Telkomp - Użytkownik

Telkomp
Użytkownik
Skąd: Krasnystaw
Zarejestrowany: 2007-04-03
Serwis

Re: Czytanie TXT do MySql

Wiec tak zawartość pliku czytającego to:

Kod:

<?php
$plik = file('bww.txt', 'r');
$tmp = str_replace("eur", "EURb", $plik);
$out = '';
foreach ($tmp as $row) {
    $linia = explode('#', trim($row));
    $out .= '<tr bgcolor="#CCCCCC">';
    $out .= '<td><font color="#3333FF" size="2">&nbsp;&nbsp;'.implode('</font></td><td><font color="#6666FF" size="2">&nbsp;', $linia).'</font></td>';
    $out .= '</tr>';
}
echo $out;
?>

I wszystko ładnie pięknie, w krasnalu mi pięknie stronę odpala, sczytuje, ale odpalając ją na serwerze wywala taki błąd:

Kod:

Warning: file() expects parameter 2 to be long, string given in /home/a8519481/public_html/kursy.php on line 15

chodzi o tą linijkę $plik = file('bww.txt', 'r'); i dalej:

Kod:

Warning: Invalid argument supplied for foreach() in /home/a8519481/public_html/kursy.php on line 18

Co może być jeszcze źle w tym kodzie ??
Z góry dzięki za pomoc.

Ostatnio edytowany przez Telkomp (2010-02-12 19:08:38)


Aptosid User ;)

Offline

 

#9  2010-02-12 20:47:22

  jezoo - Dzięcioł

jezoo
Dzięcioł
Skąd: Z lasu
Zarejestrowany: 2005-09-02

Re: Czytanie TXT do MySql

zastosuj fopen('plik','atrybut'); a pozniej fread a na koniec fclose($handle) i po klopocie, peweniejsze to jest

---// EDIT
funkcja file() nie przyjmuje 2 parametru

Ostatnio edytowany przez jezoo (2010-02-12 20:49:14)


LRU #480459

Offline

 

#10  2010-02-13 15:30:28

  Contravene - Użytkownik

Contravene
Użytkownik
Zarejestrowany: 2006-08-07

Re: Czytanie TXT do MySql

Z MySQLem możesz spróbować zrobić coś takiego, zakładając, że tabela wygląda mniej więcej tak:

Kod:

CREATE TABLE waluty (
  symbol char(3) NOT NULL PRIMARY KEY,
  ilosc integer NOT NULL,
  kurs1 DEC(3,2) NOT NULL,
  kurs2 DEC(3,2) NOT NULL
);

Aktualizacja (jeśli dane masz już wczytane do odpowiednich zmiennych) wyglądać będzie w ten sposób:

Kod:

INSERT INTO waluty VALUES ( '$symbol', $ilosc, $kurs1, $kurs2) ON DUPLICATE KEY UPDATE ilosc=$ilosc, kurs1=$kurs1, kurs2=$kurs2;

Offline

 

#11  2010-02-20 15:39:21

  Telkomp - Użytkownik

Telkomp
Użytkownik
Skąd: Krasnystaw
Zarejestrowany: 2007-04-03
Serwis

Re: Czytanie TXT do MySql

W końcu opanowane, bez użycia mysql ;)

Kod:

<?php
$plik = file('bww.txt');
$tmp = str_replace("eur", "EURb", $plik);
$out = '';
foreach ($tmp as $row) {
    $linia = explode('#', trim($row));
    $out .= '<tr bgcolor="#CCCCCC">';
    $out .= '<td><font color="#3333FF" size="2">&nbsp;&nbsp;'.implode('</font></td><td><font color="#6666FF" size="2">&nbsp;', $linia).'</font></td>';
    $out .= '</tr>';
};
echo $out;
?>

A tu można podejrzeć efekt końcowy ;)
http://krasnystawkantor.pl

Ostatnio edytowany przez Telkomp (2011-03-28 18:37:07)


Aptosid User ;)

Offline

 

#12  2010-02-22 16:03:39

  jezoo - Dzięcioł

jezoo
Dzięcioł
Skąd: Z lasu
Zarejestrowany: 2005-09-02

Re: Czytanie TXT do MySql

cos nic nie widac :)


LRU #480459

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)