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


[url=http://dug.net.pl][b]DUG[/b][/url]

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">  '.implode('</font></td><td><font color="#6666FF" size="2"> ', $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ę [b]$plik = file('bww.txt', 'r');[/b] 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 [url=http://pl.php.net/manual/pl/function.fopen.php]fopen('plik','atrybut');[/url] a pozniej [url=http://pl.php.net/manual/pl/function.fread.php]fread[/url] a na koniec fclose($handle) i po klopocie, peweniejsze to jest

---// EDIT
funkcja [url=http://pl.php.net/manual/pl/function.file.php]file()[/url] nie przyjmuje 2 parametru

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


[img]http://intershock.pl/images/icons/freebsd.jpg[/img] [img]http://www.the-eleven.com/site_media/static/img/postgresql_powered.png[/img] [img]http://www.wwgmc.com/images/badge_php.gif[/img]
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">  '.implode('</font></td><td><font color="#6666FF" size="2"> ', $linia).'</font></td>';
    $out .= '</tr>';
};
echo $out;
?>

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

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 :)


[img]http://intershock.pl/images/icons/freebsd.jpg[/img] [img]http://www.the-eleven.com/site_media/static/img/postgresql_powered.png[/img] [img]http://www.wwgmc.com/images/badge_php.gif[/img]
LRU #480459

Offline

 

Stopka forum

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

[ Generated in 0.009 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00010 SET CHARSET latin2
0.00005 SET NAMES latin2
0.00128 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.139.239.157' WHERE u.id=1
0.00075 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.139.239.157', 1732404644)
0.00048 SELECT * FROM punbb_online WHERE logged<1732404344
0.00059 DELETE FROM punbb_online WHERE ident='18.117.99.192'
0.00054 DELETE FROM punbb_online WHERE ident='18.219.47.239'
0.00029 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=16099 AND t.moved_to IS NULL
0.00021 SELECT search_for, replace_with FROM punbb_censoring
0.00166 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=16099 ORDER BY p.id LIMIT 0,25
0.00068 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=16099
Total query time: 0.00663 s