![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 0 Dołączył: 13.05.2002 Skąd: Sanok Ostrzeżenie: (0%) ![]() ![]() |
Mam pytanie, czy da sie zrobić licznik wielu stron w jednym pliku txt ? Chodzi mi o to. Mam galerię, około 2000 obrazów i chjciał bym zrobić licznik ile razy każdy obraz był otwierany. NIe wiem czy to ma jakieś znaczenie ale numer obrazu jest podawany, do strony na której ma być wyświetlony, w postaci zmiennej np. $obraz=15. Czy jest mozliwe zrobienie takiego licznika ? myślałem nad czyms w rodzaju każdego obrazu w innej lini danego pliku txt ale niebardzo wiem jak (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Proszę o pomoc !
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Masz tutaj schemat pliku txt, kod sobie dopisz. Podpowiem funkcje: explode, implode, file, fopen, fwrite.
Kod 1|4|
2|75| ... 78|57| gdzie pierwsza kolumna to numer obrazka, druga kolumna ilość wyświetleń. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 0 Dołączył: 13.05.2002 Skąd: Sanok Ostrzeżenie: (0%) ![]() ![]() |
Pewnie jeszcze nie wspominałem ze jestem początkującym.
Nie znam tych funkcji: explode, implode, potrafie zrobić prosty licznik ale to mnie przerasta wiec oddam wszystko za kod tego licznika ! |
|
|
![]()
Post
#4
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Wszystko znajdziesz tutaj.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
jak jesteś początkującym - nie utrudniaj sobie życia.
Dużo łatwiej bedzie Ci zrobić skrypt, który tworzy samodzielene pliki na potrzeby każej podstrony, każdego licznika. _____________________________________ Wybaczcie Siedzę sobie tu z taką miłą, cieplutką ... gorączką, która skutecznie mnie rozprasza... Ale wiecie, wszystkie 'One' tak działąją... |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 0 Dołączył: 13.05.2002 Skąd: Sanok Ostrzeżenie: (0%) ![]() ![]() |
DeyV, wiem ze było by łatwiej ale tego bylo by przeszło 2500 plików, ale ok, zrobie tak. Mimo wszystko dzięki (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 86 Pomógł: 0 Dołączył: 2.04.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat jak jesteś początkującym - nie utrudniaj sobie rzycia.
Dużo łatwiej bedzie Ci zrobić skrypt, który tworzy samodzielene pliki na potrzeby każej podstrony, każdego licznika. Wszystko ine to zbędna komplikacje Ale ktos tu się spieszyl... hihi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Tyle bykow w jednym poscie... az nie wypada moderatorowi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pozdrawiam DeyV PS Czym predzej bierz sie za edycje tego posta i usun byki i ortograficzne i gramatyczne... |
|
|
![]()
Post
#8
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Cytat Wybaczcie Wybaczamy.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 435 Pomógł: 40 Dołączył: 16.02.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Oto kod php do zapisu w jednym pliku:
[php:1:a562a2dec5] <?php $plik=file("licznik.txt"); // otwierasz plik $dane=explode("||", $plik[$obraz]); //z ktorej linijki $dane[1]++; $plik[$obraz]="$dane[0]||$dane[1]"; $plik_zap=fopen("licznik.txt", "w"); //wpisz ta sama nazwe pliku co na poczatku for($i=0;$i<count($plik);$i++){ fputs($plik_zap, $plik[$i]); } fclose($plik_zap); echo "<center>Ilość wyświetleń obrazka numer $obraz:<br>$dane[1]</center>"; ?>[/php:1:a562a2dec5] Tak ma wyglądać plik licznik.txt: 0||0 0||0 0||0 ....itd..... druga liczba (0) będzie się zwiększała, zrób tyle takich nowych linijek ile masz obrazków w galerii. |
|
|
![]()
Post
#10
|
|
Administrator planeta/IRC Grupa: Przyjaciele php.pl Postów: 385 Pomógł: 0 Dołączył: 19.04.2003 Skąd: Zabrze Ostrzeżenie: (0%) ![]() ![]() |
Mam kilka pytań:
a) na co dwie liczby ? (IMG:http://forum.php.pl/style_emoticons/default/cool.gif) a co jak register_globals będzie off ? (nr obrazka będzie raczej pochodził z adresu...) c) czy nie łatwiej zamiast pętli byłoby potraktować tablice implodem ? |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 0 Dołączył: 13.05.2002 Skąd: Sanok Ostrzeżenie: (0%) ![]() ![]() |
wstawiłem skrypt i nie działał, prubowałem na różne sposoby i nic ! Moze jest w nim jakis błąd ? Prosze o pomoc
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
To raczej na pewno działa, podobny miałem u siebie.
[php:1:e88c1abd6a]<?php function licznik($obrazek) { $plik="licznik.txt"; // plik z licznikiem $file=file($plik); $d=explode("|",$file[$obrazek]); $d[1]++; $d[2]=""; $file[$obrazek]=implode("|",$d); $f=fopen($plik,"w"); for($i=0;$i<count($file); $i++) { fwrite($f,$file[$i]."n"); } fclose($f); return("Obrazek ".$obrazek." został wyświetlony ".$d[1]." razy"); } // Wywołanie funkcji echo licznik(16); ?>[/php:1:e88c1abd6a] Pewnie da się to zrobić krócej, ale to działa. |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Oczywiście najpierw musisz utworzyć plik z odpowiednią ilością pól. Plik powinien wygladać tak:
Kod 0|0|
1|0| 2|0| 3|0| 4|0| ... 80|0| Cudi: są dwie liczby, ponieważ pierwsza określa ID obrazka, druga ilość jego wyświetleń. |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 0 Dołączył: 13.05.2002 Skąd: Sanok Ostrzeżenie: (0%) ![]() ![]() |
Wiem ze zawracam wam głowy ale nadal nie działa. Fakt dodaje do licznika ale po każdym dodaniu plik licznika sie "dymie". Jeśli chce dodać do 1 pola kolejną wartość to zaraz po tej wartości dodaje czarny kwadracik, jesto on dodawany odrazu do wszystkich pól ponizej. Tak więc po kazdorazowej próbie dodania ten kwadracik jest powielany i w koncu plik licznik txt zwieksza sie do niebotycznych rozmiarów. A jak juz dodam do 1 to potem nie da sie dodać do np. 2, 3 ,4... Wiem ze chodzi tu o "n" ale jak to wykesle to wtedy skrypt niewidzi nastepnej lini po wpisaniu.
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 0 Dołączył: 13.05.2002 Skąd: Sanok Ostrzeżenie: (0%) ![]() ![]() |
Juz sobie poradziłem, moze nie jest to tak jak byc powinno ale ziała ( dodałem 3 parametr $d[3]="n"; )
[php:1:ae065f0645]<? function licznik($obrazek) { $plik="licznik.txt"; // plik z licznikiem $file=file($plik); $d=explode("|", $file[$obrazek]); $d[1]++; $d[2]=""; $d[3]="n"; $file[$obrazek]=implode("|", $d); $f=fopen($plik, "w"); for($i=0;$i<count($file); $i++) { fwrite($f, $file[$i]); } fclose($f); return("Obrazek ".$obrazek." został wyświetlony ".$d[1]." razy"); } // Wywołanie funkcji echo licznik($obrazek); ?>[/php:1:ae065f0645] Ale teraz mam jeszcze jedną sprawe. Jak bez dodawania kolejnej wartości wyswietlic wynik licznika np. 2 :?: |
|
|
![]()
Post
#16
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
To woła o pomstę do nieba... Wytnij z tego listingu linie odpowiedzialne za dodawanie i zapis i już.. Teraz tylko znaleźć w tablicy $d odpowiednia linijke i po sprawie.
Najprostrzy sposób (choć nie najergonomiczniejszy). |
|
|
![]()
Post
#17
|
|
Administrator planeta/IRC Grupa: Przyjaciele php.pl Postów: 385 Pomógł: 0 Dołączył: 19.04.2003 Skąd: Zabrze Ostrzeżenie: (0%) ![]() ![]() |
Cytat Cudi: są dwie liczby, ponieważ pierwsza określa ID obrazka, druga ilość jego wyświetleń.
Przecierz ID obrazka to linia... W taki sposób tylko komplikujesz sprawe i zwiększasz rozmiar pliku. [php:1:fbc8da0198]<?php $plik = 'dane.dat'; $o = $_GET['obraz']; $f = file($plik); $f[$o] += 1; $f[$o] = $f[$o]."n"; $fp = fopen($plik, 'w'); fputs($fp, str_replace("r", '', implode('', $f))); fclose($fp); echo 'Ilość wyświetleń obrazka nr. '.$o.': '.$f[$o]; ?>[/php:1:fbc8da0198] |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 0 Dołączył: 13.05.2002 Skąd: Sanok Ostrzeżenie: (0%) ![]() ![]() |
Cudi, wielkie dzięki, działa idealnie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ps. z jakich książek sie uczycie php ? Doradźcie mi cos (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#19
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Cytat Z jakich książek sie uczycie php ? Doradźcie mi cos (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Manual php - link w mojej sygnaturce (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#20
|
|
Administrator planeta/IRC Grupa: Przyjaciele php.pl Postów: 385 Pomógł: 0 Dołączył: 19.04.2003 Skąd: Zabrze Ostrzeżenie: (0%) ![]() ![]() |
Jeszcze nie miałem w ręku książki o php, więc trudno będzie mi poradzić Ci coś z literatury. Uczyłem sie metodą prób i blędów, kombinując, oglądając czyjś kod i potem sprawdzająć objaśnienia funkcji w manualu, pytająć na różnych forach, gnębiąc znających sie na php kolegów itd. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#21
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat Przecierz ID obrazka to linia... W taki sposób tylko komplikujesz sprawe i zwiększasz rozmiar pliku.
W tym przypadku tak, ale ten skrypt powyżej (lekko zmodyfikowany) używałem do zliacznia wyświetleń obrazków, z tym, że gdy nie było danej linii to licznik sam sobie dodwał, więc dlatego dwie wartości. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 12:59 |