arek_inc
15.06.2003, 15:00:00
Mam taki problem. oto czesc skryptu do kat. linkow:
[php:1:a139329939]<?php
$tablica=file("../users/domowe.txt");
$tablica=array_reverse($tablica);
for($i=0;$i{
$http_string=basename($SCRIPT_NAME);$sign=strpos($http_string,".");
$kat=substr($http_string,0,$sign);
$ile=@file("../komentarze/$kat/$id.txt");
$ile_kom=count($ile);
if(@filesize("../komentarze/$kat/$id.txt")<=0){$ile_kom="brak";
}
$ex=explode("",$tablica[$i]);
?>[/php:1:a139329939]
jak widac odwracam tablice, po to zeby nowsze linki pojawialy sie na gorze, ale tu wlasnie pojawia sie problem, bo mam tez komentarze, ktore po dodaniu zapisuja sie w postaci id.txt (np 3.txt), ale przez to ze odwrocilem tablice, wszystkie linki maja zmienne id (najnowsze ma zawsze 0) przez co komentarze sie przesowaja wypadaloby spowrotem odwrocic tablice przed komentarzami, ale jak?
----------------------------
Używaj odpowiedniego BBcode -DeyV
DeyV
15.06.2003, 16:35:55
zanim przejdziemy dalej - co to za pętla? --> for($i=0;$i{
arek_inc
15.06.2003, 16:42:37
eh, wiesz co, ja sie na php znam srednio, nie ja napisalem ten skrypt...
scanner
15.06.2003, 17:19:10
i według Ciebie to co nam pokazałeś to niby działa?
arek_inc
15.06.2003, 17:28:49
Oto caly kod (wraz z html-em (jak za duzo, to usune)) jednej ze stron (dzialow). Chyba fatycznie wkradl tam sie jakis blad (sorki).
[php:1:455022dbeb]
<?
echo"
<center><a HREF=../dodaj.php>dopisz do katalogu</A> | <a HREF=../dir.php>Wykaz katalogów</A></center><br>";
$id=0;
$tablica=file("../users/domowe.txt");
$tablica=array_reverse($tablica);
for($i=0;$i<count($tablica);$i++)
{
$http_string=basename($SCRIPT_NAME);$sign=strpos($http_string,".");
$kat=substr($http_string,0,$sign);
$ile=@file("../komentarze/$kat/$id.txt");
$ile_kom=count($ile);
if(@filesize("../komentarze/$kat/$id.txt")<=0){$ile_kom="brak";
}
$ex=explode("|**|",$tablica[$i]);
echo "<div align=center><center><table border=0 cellpadding=0 cellspacing=1 bgcolor=white width=360 height=94><tr><td width=137 height=21 valign=middle align=center bgcolor=rgb(245,245,245)>
<font class=text>dodał: </font><a HREF=mailto:$ex[2]>$ex[1]</A></td><td width=217 height=21 valign=middle align=center bgcolor=rgb(245,245,245)>
<a HREF=$ex[0] target=new>$ex[0]</A></td></tr><tr><td width=138 height=69 style=background-color:transparent></td><td width=216 height=69 valign=middle align=center valign=top bgcolor=rgb(235,235,235)>
<div align=center><center><table border=0 cellpadding=5 cellspacing=0 width=193 height=54><tr><td width=193 height=54 valign=top bgcolor=rgb(245,245,245)><font class=text>$ex[3]</font></td></tr></table>
</center>
</div></td></tr></table></center></div>
<div align=center><center><table border=0 cellpadding=0 cellspacing=0 width=360 height=11><tr><td width=138 height=11>
<font class=text>Komentarzy [ $ile_kom ]</FONT></td><td width=216 height=11 bgcolor=rgb(245,245,245) align=center><a HREF=../komentarze/domowe.php?id=$id>dodaj komenatrz</A>
<a HREF=../kom.pokaz.php?id=$id>Zobacz opinie</A></td></tr></table><hr noshade size=1 width=360></center></div>";
$id++;
}
?>[/php:1:455022dbeb]
arek_inc
15.06.2003, 18:57:09
eno przeciez sie przyznalem do bledu! scaner napisales i usunales czemu?
scanner
15.06.2003, 19:14:12
Może to pomoże?
[php:1:bd7f73348a]
<?php
// (...)
$tablica=file("../users/domowe.txt");
$tablica1=array_reverse($tablica);
for($i=0;$i<count($tablica1);$i++)
// (...)
?>[/php:1:bd7f73348a]
Usunąłem coś, co miało cie zmusic do pokazania poprawnego kodu. Ale zaraz po wysłaniu okazało się, ze właśnie to zrobiłes, więc po co trzymac zbednego posta.
arek_inc
15.06.2003, 19:58:29
Niestety, to nawet nie odwocilo tablicy
scanner
15.06.2003, 20:03:37
podpowiedz:
$tablica - oryginal
$tablica1 - tablica odwrocona
arek_inc
15.06.2003, 20:07:27
a jak zrobic oryginal?
scanner prosze przejrzysciej...
scanner
15.06.2003, 20:21:07
[php:1:02b3f0e786]<?php
echo 'Nie dobijaj mnie...';
$tablica1 = array_reverse($tablica); // odwracamy
$tablica2 = array_reverse($tablica1); // znowu odwracamy
?>[/php:1:02b3f0e786]
Mówi ci to coś?
arek_inc
15.06.2003, 20:25:42
no wiec odwocilo sie, ale id wciaz jest w zla strone.
zobacz jak to wyglada w praktyce
http://punk.do.pl/~arek/dzialy/domowe.php
a czy nie ma jakiejs opcji do zmiennej id typu $reverse_id ?
scanner
15.06.2003, 20:35:33
1. Ostrzeżenieczacie.
2.[php:1:0d9a1d40f3]<?php
echo 'Myślenie naprawdę nie boli';
$reverse_id = $max_id - $id
?>[/php:1:0d9a1d40f3]
arek_inc
15.06.2003, 20:42:18
PRZEPRASZAM!
Zalamac sie idzie... nie dziala :cry:
scanner
15.06.2003, 21:38:03
Wiesz co.. pokaz dwie pierwsze linijki z pliku "domowe.txt" i dwie pierwsze z dowolnego pliku z komentarzami. Od tego zaczniemy.
Cudi
15.06.2003, 21:38:16
Nie odwracaj array_reversem tylko napisz inną pętle, żeby szło od count($tablica), dopóki $i jest większe od zera i $i--
arek_inc
16.06.2003, 07:32:17
Domowe txt:
Kod
http://cedar.prv.pl|**||**||**|Strona po¶więcona softwerowi. Znajdziesz tu wiele spolszczeń do popularnych programów.|**|Monday, 05 May 2003
[url=http://www.denis35.prv.pl|**|denis35|**|denis35@wp.pl|**|taka]http://www.denis35.prv.pl|**|denis35|**|de...5@wp.pl|**|taka[/url] moja stronka o wszystkim|**|Wednesday, 07 May 2003
Komentarze:
Kod
arek|**|arek_inc@o2.pl|**|tresc komentarza
Cytat
Nie odwracaj array_reversem tylko napisz inną pętle, żeby szło od count($tablica), dopóki $i jest większe od zera i $i--
Czyli jak ta petla ma wygladac? Sluchajcie, ja wiem o czym wy mowicie, natomiast nie jestem na tyle zaawansowany zeby pisac cokolwiek, z petlami wlacznie
scanner
16.06.2003, 07:59:07
Co do plików - powiedz komuś, kto ten skrypt pisał, że bardzo dobrym roziązaniem jest dodawanie na poczatku każdej linii ID wpisu. Tak jak to ma miejsce w bazach danych. Inaczej zawsze coś będzie nie tak, szczególnie, gdy usuniesz jakąś linię z danego elementu. każdy wpis powienien być poprzedzony swoim ID - jak dla mnie ten skrypt jest do napisania od nowa.
Co do pętli:
Przeanalizuj poniższą konktrukcję:[php:1:11fc23bb74]<?php
$intArraySize = sizeof($tablica); // sizeof i count to to samo
// jezeli tablica nie zmienia rozmairów wewnatrz petli, zawsze sizeof() sprawedzamy przed petla
// dzieki temu przyspieszamy dzialania skryptu.
// to jak ty masz napisane powoduje
// ze rozmiar tablicy jest sprawdzany za kazdym obrotem petli
for($intLoopA = $intArraySize; $intLoopA >= 0; $intLoopA--)
{
// tu wyświetlasz co chcesz traktując $intLoopA jako index tablicy.
}
?>[/php:1:11fc23bb74]
To powinno dac tabele w odwrotnej kolejności z zachowaniem indexów.
Cudi
16.06.2003, 13:48:00
Ja nigdy nie używam ID w plikach txt, dla mnie ID to numer lini w której leży dany wpis, a numery te są generowane zawsze na bierząco, więc po usunięciu problemu z tym raczej nie ma...
A co do pętli:
[php:1:595926be68]<?php
for($i = count($tablica); $i >= 0; $i--) {
// i tutaj wyświetlanie
}
?>[/php:1:595926be68]
scanner
16.06.2003, 13:54:32
Cudi: przecież ja pętle pokazałem i nawet skomentowałem dlaczego wygląda tak a nie inaczej. Poczytaj prosze mojego posta. Piszesz nieoptymalnie.
arek_inc
16.06.2003, 14:00:34
eh chlopaki dzieki za pomoc, ale to chyba wina nie tylko petli...
trudno :cry:
Cudi
16.06.2003, 14:10:46
Scanner -> nie doczytałem, a w zasadzie nie przejrzałem kodu, ale wydawał sie dziwnie długi więc myślałem że jest tam coś innego... Następnym razem będe analizował posty do końca...
arek_inc -> a co jeszcze jest nie tak (jak już zaczeliśmy to nie skończymy póki nie będzie działać...)
arek_inc
16.06.2003, 14:22:43
moze lepiej bedzie jak zobaczycie wszystkie pliki (tekze add.php odpowiedzialny za zapisywanie). Mozna go siagnac stad:
http://punk.do.pl/~arek/katalog.rar
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.