Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] prosta galeria na strone
Forum PHP.pl > Forum > Przedszkole
pataka
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.
KCG
Musisz złapać nr zdjęcia (nie kce mi się myśleć tongue.gif ) i if ($nr % 4 == 0) { echo '</tr><tr>'; }
nevt
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.
pataka
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
f.tomasz
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>
qqrq
A na forum to nie łaska poszukać questionmark.gif Sam kiedyś na podobny temat odpisałem (całym kodem), więc szukaj...
pataka
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...
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.