![]() |
![]() ![]() |
![]() |
-Aklim...- |
![]()
Post
#1
|
Goście ![]() |
Witam.
Mam sobie funkcję: Kod function nowe_pliki($ilosc_plikow) { $path = "/var/www/html/pafiledb"; $template = "{INFO} - <a title=\"{FULLFILENAME}\" class=\"link\" href=\"{FILELINK}\">{SHORTFILENAME}</a><br />"; require $path. "/includes/mysql.php"; $pafiledb_sql->connect($db); $config = $pafiledb_sql->query($db,"SELECT * FROM $db[prefix]_settings",1); { $result = $pafiledb_sql->query($db, "SELECT * FROM $db[prefix]_files ORDER BY file_time DESC LIMIT 0, $ilosc_plikow", 0); $info = "{DATE}"; $text = "{NAME}"; } $i = 1; while ($file = mysql_fetch_object($result)) { $line = str_replace("{NUMBER}", $i, $template); $line = str_replace("{FILELINK}", "$config[3]/pafiledb.php?action=file&id=$file->file_id", $line); $fileline = str_replace("{NAME}", skracaj($file->file_name), $text); $infoline = str_replace("{DATE}", date("j.m.Y", $file->file_time), $info); $line = str_replace("{FULLFILENAME}", $file->file_name, $line); $line = str_replace("{SHORTFILENAME}", $fileline, $line); $line = str_replace("{INFO}", $infoline, $line); echo $line; $i++; } } Oraz deklaruję sposób odwołania do funkcji w szablonie (w szablonie [bok.tpl] wpisuję tylko {OSTATNIE_PLIKI}): Kod [...] $ilosc_plikow = "10"; $template->set_file('bok', 'bok.tpl'); $template->set_var(array( 'OSTATNIE_PLIKI' => nowe_pliki($ilosc_plikow))); I teraz efekty- kod (funkcja newfiles($show)) działa, ale wynik pojawia się w najmniej oczekiwanym miejscu strony, nie tam gdzie to wstawiłem w szablonie (czyli w akapicie, boczej częsci strony). Użyłem więc return $line, zamiast echo $line i efektem było wyświetlanie wyniku funkcji w prawidłowym miescu, ale samo zadziałanie funkcji było nieprawidłowe, ponieważ wyświetlało tylko 1 najnowszy plik z pafiledb, a nie tyle ile zadeklarowałem w zmiennej $ilosc_plikow (czyli 10). Natomiast gdy wyrzuciłem return $line poza pętle while efektem było wyświetlanie w pożądanym miejscu 1 najstarszego pliku. Ja oczywiście chciałbym (najprawdopodobniej z użyciem return, nie echo i możliwe, że z użyciem pętli for zamiast while [nie wiem jak- zgaduję i przypuszczam]) uzyskać efekt wyświetlania tylu plików ile zadeklaruję w tej zmiennej $ilosc_plikow i w miejscu takim, jakim już sobie wybiorę wstawienie tego {OSTATNIE_PLIKI} w szablonie bok.tpl. Proszę o pomoc, bo sam sobie z tym nie radzę! P.S wiem, że ten temat razi brakiem kompletnych podstaw i nie potrafię dobrze opisać problemu... nie wiem, czy ktoś go zrozumie i mi pomoże, ale mam nadzieję, że tak, bo męczę się z tym i googluję ponad 3 dni. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 446 Pomógł: 0 Dołączył: 5.03.2005 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
return zwraca ci wartosc i dlatego jak miales w petli wyswietlilo Ci tylko najnowszy plik. natomiast poza petla wyswietlilo Ci tylko ostatni bo w petli przypisywales kolejne pliki do zmiennej $line czyli nadpisywales ta zmienna. najlepiej to w petli zapisuj do zmiennej tablicowej i zwracaj returnem poza petla cala tablice i pozniej w petli juz we wlasciwym miejscu odczytuj i wyswietlaj kolejne elementu tablicy.
|
|
|
-Aklim...- |
![]()
Post
#3
|
Goście ![]() |
Mniejwięcej rozumiem to co pisesz, ale wciąż nie wiem jak to zrobić... może ktoś to zaprezentuje w oparciu o kod, który podałem wcześniej, bo znając życie ja będę się z tym męczył tydzień, albo wcale tego nie zrobię, a ktoś inny zrobi to w 5 minut i będę mógł to przeanalizować, zrozumieć
![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 742 Pomógł: 0 Dołączył: 14.12.2003 Skąd: Gdańsk, Trójmiasto Ostrzeżenie: (0%) ![]() ![]() |
@Aklim...:
![]() |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 446 Pomógł: 0 Dołączył: 5.03.2005 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
wyswietlanie:
powinno dzialac |
|
|
-Aklim...- |
![]()
Post
#6
|
Goście ![]() |
kurcze... lama jestem. Mam 2 problemy i ten drugi najprawdopodobniej wynika z pierwszego choć nie wiem, a mianowcie:
1. nie wiem gdzie wstawić to do wyświetlania, bo dotychczas wyświetlałem w sposób:
i w pliku bok.tpl w wybranym miejscu wpisywałem tylko: Kod {OSTATNIE_PLIKI} funkcją było to co podałem na początku, a teraz funkcja wygląda tak:
i samo to daje mi tylko wyświetlenie "Array", więc gdzieś muszę wpisać to
ale nie wiem gdzie - to pierwszy problem. 2. Gdziekolwiek nie próbowałem użyć tej pętli for z echo to parser wywalał Kod Parse error: parse error, unexpected ')', expecting ';' in /var/www/html/test/funkcje.php on line 466 Mam nadzieję, że wynika to z tego, że nie wiem gdzie to wstawić (choć próbowałem w różnych miejscach nawet z odrobiną logiki)... Pomózcie... wiem, że to bezinteresowne i w ogóle mam zapewne lamerskie problemy, ale znam inne języki (taak... czytałem kursy, książki php itp.), a programista php/sql, który się tym zajmował wyparował i teraz ja muszę wszystko dokończyć :/ Radzę sobie powiem szczerz dobrze, ale tylko operując i modyfikując to co już on zrobił, a nie tworząc swoje (choć już pare rzeczy udało mi się stworzyć [edytor wysywig z bbcode ![]() ![]() |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 446 Pomógł: 0 Dołączył: 5.03.2005 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
bo pisalem z glowy i jest blad
![]()
a ty nie kopiuj poprostu tylko czytaj cos robisz ![]() ------------ pozatym komunikat o bledzie informowal cie co jest zle Ten post edytował Pigula 27.06.2005, 08:09:28 |
|
|
-Aklim...- |
![]()
Post
#8
|
Goście ![]() |
uhu, to teraz pewnie ktoś mnie ochrzani, bo dalej sobie nie radze... tzn. już opisuję-
Całość działa, wyświetlane są ostatnie pliki, ale nie tak jak ja bym chciał. Działa to tak jak kod, który podałem na początku z tym echo, a mianowicie:
Ustalenie czym jest OSTATNIE_PLIKI w pliku szablonu bok.tpl:
Oraz wyświetlenie tego poprzez wstawienie w bok.tpl wpisu OSTATNIE_PLIKI: To jednak skutkowało wyświetlaniem całości nie w tym miejscu co trzeba- nie tam, gdzie to w bok.tpl usadziłem. Więc Piguła pomógł i powstał taki kod funkcji:
oraz coś do wyświetlania:
I zadeklarowanie czym jest OSTATNIE_PLIKI w szablonie bok.tpl:
oraz wstawienie tego wpisu w plik szablonu bok.tpl: Efekt jest taki sam jak poprzednio- ostatnie pliki pojawiają się w najmniej oczekiwanym miejscu gdzieś na końcu strony będąc lekko pod innym tekstem. Nie wiem czemu tak jest, najwyraźniej nie mogę tam nigdzie użyć echo, a return w funkcji nowe_pliki powinno już zwracać gotowy tekst w postaci ostatnich iluś ($ilosc_plikow) plików. Nie wiem, jak powinien wyglądać taki kod. Pokażę dla przykładu działający kod tak jak należy, który wyświetlam w ten sam sposób- może to pomoże (napisany przez programiste, ktory sie tym zajmowal wczesniej...).
Wyświetlanie:
Potem tylko wstawiam {TEXT} w pliku i mam zawartość (wykonanie funkcji parsuj_text($n)) w miejscu jakie sobie ustale w tym szablonie. Wyraźna różnica to brak echo. Any idea? Help... tak, wiem- powinnem sobie ciachnąć łeb, bo straszna maruda jestem i ciągle mam problemy... pomóżcie ![]() |
|
|
-Aklim...- |
![]()
Post
#9
|
Goście ![]() |
Kurcze, edytowac nie mogę.
Nie ma odpowiedzi, czyli się tego nie da zrobić? jejku... zależy mi na tym, bo bez tego będę musiał przerwać wszystkie prace, a projekt porzucić :/ Jeśli ktoś w pełni nie rozumie problemu (badziewnie opisuję) to proszę dopytać! ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 1.07.2025 - 20:31 |