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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam
Od paru dni poszukuje sposobu jak napisać skrypt php, który zszyta z pliku bww.txt dane w postaci:
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:
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źć ;)
Offline
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
może tak :
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
Ok, to może inaczej, może prościej będzie napisać skrypt php, pomijając sql by zamiast:
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:
+----+-----------+----------+------+ | 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 ;)
Offline
a może frytki do tego ?
funckje masz napisaną ,samo sie nie zrobi....
Offline
Wiec tak zawartość pliku czytającego to:
<?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:
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:
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)
Offline
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)
Offline
Z MySQLem możesz spróbować zrobić coś takiego, zakładając, że tabela wygląda mniej więcej tak:
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:
INSERT INTO waluty VALUES ( '$symbol', $ilosc, $kurs1, $kurs2) ON DUPLICATE KEY UPDATE ilosc=$ilosc, kurs1=$kurs1, kurs2=$kurs2;
Offline
W końcu opanowane, bez użycia mysql ;)
<?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 ;)
http://krasnystawkantor.pl
Ostatnio edytowany przez Telkomp (2011-03-28 18:37:07)
Offline
cos nic nie widac :)
Offline