Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] prosta galeria na strone
pataka
post 29.09.2007, 22:31:17
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 13.08.2006

Ostrzeżenie: (0%)
-----


Witam was i prosze o pomoc w zrozumieniu pewnej prostej wydawałoby się sprawy...
Chciałem zrobić prostą galerie która korzystalaby z pliku tekstowego jako bazy danych.

plik wygląda tak:

nazwa_zdjecia_1|opis zdjecia 1
nazwa_zdjecia_2|opis zdjecia 2
nazwa_zdjecia_3|opis zdjecia 3
nazwa_zdjecia_4|opis zdjecia 4
nazwa_zdjecia_5|opis zdjecia 5
itd...

Zasada jest prosta zdjecie1.jpg i jego miniatura jako zdjecie1_m.jpg sa w tym samym katalogu
Zrobilem prosty skrytp ktory odczytuje dane

  1. <table border="1" width="450px">
  2. <?php 
  3.  
  4. $zdjecia = file("plik.txt") or die('nie można otworzyć pliku z danymi'); 
  5.  
  6. krsort($zdjecia); 
  7.  
  8. foreach($zdjecia as $linia) 
  9. { 
  10. echo'<tr>' ;
  11. $kom = explode("|", chop($linia)); 
  12.  
  13. echo '<td width="100px"><a href="foto/'.$kom[0].'.jpg'.'" title="'.$kom[1].'"><img src="foto/'.$kom[0].'_m.jpg'.'" alt="" /></a></td>'; 
  14. } 
  15.  
  16. ?> 
  17. </tr>
  18. </table>



I wszystko jest ok, zdjecia wyswietlaja sie po kliknieciu wyswietla sie duza fotka
Ale co zrobić jeśli chciałbym aby po wyswietleniu 4 linni czyli 4 zdjecia
skrypt wstawil znacznik </tr> i zeby nastepna partia zdjec byla wyswietlana w nastepnej linni i tak do końca...
Dlatego prosze o pomoc i wytlumaczenie tego pewnie prostego zagadnienia, za co z góry dziękuje.
Powód edycji: Dodaje tag /~strife/
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
KCG
post 29.09.2007, 22:39:23
Post #2





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

Ostrzeżenie: (0%)
-----


Musisz złapać nr zdjęcia (nie kce mi się myśleć tongue.gif ) i if ($nr % 4 == 0) { echo '</tr><tr>'; }


--------------------
9242594 - zaczynasz? jak mogę, to pomogę :D /podstawowa znajomość php :P /
"to pomoc zawsze będzie gestem pięknym, zaliczana do tych teraz rzadko spotykanych..."
Go to the top of the page
+Quote Post
nevt
post 29.09.2007, 22:55:43
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


mniej wiecej tak:
Kod
echo '<tr>';
$ile = count($tablica) - 1;
foreach($tablica as $klucz => $wartosc)
{
     //tutaj twoj kod
     ...
     if(($klucz %4 == 0) and ($klucz < $ile)
         echo '</tr><tr>';
}
echo '</tr>';

poza tym w twoim przykładzie w petli otwierasz x razy zancznik <tr> a domykasz go tylko raz za pętlą - to spory błąd...

Pozdrawiam, Leszek.

Ten post edytował nevt 29.09.2007, 22:57:34


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
pataka
post 30.09.2007, 00:02:00
Post #4





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 13.08.2006

Ostrzeżenie: (0%)
-----


niestety wywala błąd
  1. <?php
  2. echo '</tr><tr>';
  3. ?>


poza tym pobrane nazwy plikow sa uciete i zjecie zamiast nazwyac sie abcd11.jpg to nazwya sie 11.jpg

Ten post edytował pataka 30.09.2007, 00:23:06
Go to the top of the page
+Quote Post
f.tomasz
post 30.09.2007, 10:54:07
Post #5





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 30.09.2007

Ostrzeżenie: (0%)
-----


Znacznik PHP mi nie działa nie wiadomo z jakiego powodu. Ale poniższy kod działa jak chciałeś. Według mnie rozwiązanie galerii nie jest dobre.

<table border="1" width="450px">
<tr>
<?php

$zdjecia = file("plik.txt") or die('nie można otworzyć pliku z danymi');

krsort($zdjecia);
$i = 1;
foreach($zdjecia as $linia)
{
$kom = explode("|", chop($linia));
echo '<td width="100px"><a href="foto/'.$kom[0].'.jpg'.'" title="'.$kom[1].'"><img src="foto/'.$kom[0].'_m.jpg'.'" alt="" /></a></td>';
if ($i % 4 == 0)
{
echo "</tr><tr>" ;
}
$i++;
}

?>
</tr>
</table>
Go to the top of the page
+Quote Post
qqrq
post 30.09.2007, 15:31:16
Post #6





Grupa: Zarejestrowani
Postów: 418
Pomógł: 8
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


A na forum to nie łaska poszukać questionmark.gif Sam kiedyś na podobny temat odpisałem (całym kodem), więc szukaj...


--------------------
Go to the top of the page
+Quote Post
pataka
post 2.10.2007, 20:43:57
Post #7





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 13.08.2006

Ostrzeżenie: (0%)
-----


Cytat(f.tomasz @ 30.09.2007, 11:54:07 ) *
Według mnie rozwiązanie galerii nie jest dobre.


Czemu?
Chciałem do tego dodać js i otwierać fotkę w oknie, a nie moge użyć żadnej bazy danych - chyba że byłby to SQL-lite, bo takowej na tym serwerze nie posiadam...
Jeśli możesz zasugerować jakiejś inne rozwiązanie to proszę o podpowiedź...
Kod byłby wykorzystany na stronie gdzie byłoby 20-30 fotek, a osoba która miałaby to aktualizować nie ma zielonego pojecia o www.
A zrobienie fotki 375x500 i miniatury wrzucenie tego na serwer i dopisanie nazwy zdjęcia i podpisu do pliku tekstowego byłby możliwy do zrobienie przez tą osobę...

Obecnie jest to realizowane przez zwykły HTML+JS i każda taka linnia jest wpisywana oddzielnie, przeze mnie kiedy trzeba dodać zdjęcie...

A chciałem się was jeszcze zapytać o to czy można zrobić tak, że mamy cztery kolumny
  1. <?php
  2. echo '<tr>;
  3. echo '<td width="100px"><a href="foto/'.$kom[0].'.jpg'.'" title="'.$kom[1].'"><img src="foto/'.$kom[0].'_m.jpg'.'" alt="" /></a></td>';
  4. ...
  5. ...
  6. echo '<td width="100px"><a href="foto/'.$kom[0].'.jpg'.'" title="'.$kom[1].'"><img src="foto/'.$kom[0].'_m.jpg'.'" alt="" /></a></td>';
  7. echo '</tr>;
  8. ?>


i każda z nich pobiera dane z kolejnej linni w pliku tekstowym, a jeśli nie ma już wpisu to wstawia <td>&nbsp;</td> do wypełnienia linni tabeli...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 09:02