Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: odwracanie tablic
Forum PHP.pl > Forum > Gotowe rozwiązania
arek_inc
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?questionmark.gif


----------------------------
Używaj odpowiedniego BBcode -DeyV
DeyV
zanim przejdziemy dalej - co to za pętla? --> for($i=0;$i{
arek_inc
eh, wiesz co, ja sie na php znam srednio, nie ja napisalem ten skrypt...
scanner
i według Ciebie to co nam pokazałeś to niby działa?
arek_inc
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
eno przeciez sie przyznalem do bledu! scaner napisales i usunales czemu?
scanner
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
Niestety, to nawet nie odwocilo tablicy sad.gif
scanner
podpowiedz:
$tablica - oryginal
$tablica1 - tablica odwrocona
arek_inc
a jak zrobic oryginal?
scanner prosze przejrzysciej... sad.gif
scanner
[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
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 ? biggrin.gif
scanner
1. Ostrzeżenieczacie.
2.[php:1:0d9a1d40f3]<?php
echo 'Myślenie naprawdę nie boli';
$reverse_id = $max_id - $id
?>[/php:1:0d9a1d40f3]
arek_inc
PRZEPRASZAM!
Zalamac sie idzie... nie dziala :cry:
scanner
Wiesz co.. pokaz dwie pierwsze linijki z pliku "domowe.txt" i dwie pierwsze z dowolnego pliku z komentarzami. Od tego zaczniemy.
Cudi
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-- smile.gif
arek_inc
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 sad.gif
scanner
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
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
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
eh chlopaki dzieki za pomoc, ale to chyba wina nie tylko petli...
trudno :cry:
Cudi
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
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.