Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][CSS] Rozmieszczenie zdjęć w galerii
bemol
post
Post #1





Grupa: Zarejestrowani
Postów: 286
Pomógł: 29
Dołączył: 5.04.2007
Skąd: Rymanów Zdrój/Rzeszów

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


Witam, podczas pisania pewnej aplikacji narodził się błąd. Mianowicie chodzi o zapytanie lub coś czego właśnie nie znam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
A mianowicie mam 2 tabele w bazie danych o strukturach:

Gallery:
  1. CREATE TABLE `Gallery` (
  2. `GalleryID` int(11) NOT NULL AUTO_INCREMENT,
  3. `GalleryDate` datetime NOT NULL,
  4. `GalleryDescription` text NOT NULL,
  5. `GalleryContent` text NOT NULL,
  6. PRIMARY KEY (`GalleryID`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=2 ;


Photos:
  1. CREATE TABLE `Photos` (
  2. `PhotoID` int(11) NOT NULL AUTO_INCREMENT,
  3. `PhotoDate` datetime NOT NULL,
  4. `PhotoGalleryID` int(11) NOT NULL,
  5. `PhotoDescription` text NOT NULL,
  6. PRIMARY KEY (`PhotoID`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=1 ;


oraz plik:
offer.php (część kodu)
  1. <?php
  2. $Db = new db_engine(HOST, USER, DBPASSWORD, NAME);
  3. if ( $Db->is_connected ) {
  4. $Db->query_db("SELECT * FROM Gallery");
  5. if ( $Db->num_rows() > 0 ) {
  6.  
  7.  while ( $Row = $Db->fetch_array() ) {
  8. echo '<div class="div_head">';
  9. echo $Row['GalleryDescription'];
  10. echo '</div>';
  11. echo '<div class="div_body">';
  12. $Db->Query("SELECT * FROM Photos WHERE PhotoGalleryID=".$Row['GalleryID']);
  13. while ( $Verse = $Db->fetch_array() ) {
  14. echo '<img src="photos/mini/'.$Verse['PhotoID'].'.jpg" alt="'.$Verse['PhotoDescription'].'" />&nbsp;&nbsp;';
  15. }
  16. echo $Row['GalleryContent'];
  17. echo '<hr size="1" color="#555555">
  18. <a href="offer.php?Action=Edit&ID='.$Row['GalleryID'].'"><img src="actions/edit.png" alt="edytuj" class="a_img" /> Edytuj</a>&nbsp;&nbsp;
  19. <a href="offer.php?Action=Delete&ID='.$Row['GalleryID'].'"><img src="actions/delete.png" alt="kasuj" class="a_img" /> Kasuj</a>&nbsp;&nbsp;</div>';
  20. }
  21. } else {
  22. echo '<div align="center"><a href="startpage.php?Action=Add"><img src="actions/addpage.png" alt="dodaj" class="a_img" /> Dodaj treść</a><br /><br />Pusta zawartość. Kliknij w przycisk Edytuj stronę główną, żeby dodać zawartoś
    ć.</div>'
    ;
  23. }
  24. }
  25. $Db->close_db();
  26. ?>


Chcę, aby wyświetlane były dwie kolumny zdjęć.

Przykład:

Galeria1 *zdjęcie1 | zdjęcie2*
Galeria1 ******zdjęcie3****
Galeria2 ******zdjęcie1****
Galeria3 *zdjęcie1 | zdjęcie2*
Galeria3 *zdjęcie3 | zdjęcie4*

Prosze o pomoc

Ten post edytował batman 10.05.2008, 09:39:45
Powód edycji: modyfikacja tytułu
Go to the top of the page
+Quote Post
nexis
post
Post #2





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


W temacie nazwałeś swój problem "zaawansowanym zapytaniem", a w opisanym problemie nie widzę niczego, co miałoby z tym coś wspólnego.

// Proszę o nie nabijanie postów.
// ~webdicepl
Go to the top of the page
+Quote Post
bemol
post
Post #3





Grupa: Zarejestrowani
Postów: 286
Pomógł: 29
Dołączył: 5.04.2007
Skąd: Rymanów Zdrój/Rzeszów

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


widocznie nie rozumiesz co napisałem i co chce osiągnąć, ja widze duży związek temtu z treścią.
niepotrzebny spam
Go to the top of the page
+Quote Post
konraddo
post
Post #4





Grupa: Zarejestrowani
Postów: 42
Pomógł: 1
Dołączył: 9.01.2007
Skąd: Sejny/Elbląg

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


Problem leży tu zapewne w odpowiednim ułożeniu znaczników html'a i nadaniu im reguł css'a, bądź atrybutów
ustaw odpowiednią szerokość dla klasy div_body i obrazka, otocz pojedyńczy obrazek dodatkowym div'em wyrównaj go do lewej, ustaw szerokość, a będą się układać jeden obok drugiego aż sie nie zmieszczą w szerokości div_body i przejdą do nowego wiersza
Go to the top of the page
+Quote Post
bemol
post
Post #5





Grupa: Zarejestrowani
Postów: 286
Pomógł: 29
Dołączył: 5.04.2007
Skąd: Rymanów Zdrój/Rzeszów

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


niestety z tego skorzystać nie mogę. to jest wyświetlanie jedynie w panelu administracyjnym, a co bedzie na stronie? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
rozjedzie sie :/
trzeba tutaj zastosować parzystość i nieparzystość
Go to the top of the page
+Quote Post
konraddo
post
Post #6





Grupa: Zarejestrowani
Postów: 42
Pomógł: 1
Dołączył: 9.01.2007
Skąd: Sejny/Elbląg

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


Jeśli chcesz korzystać z parzystości nieparzystości najprościej będzeie zrobic if'a z operacją modulo(%), który zwraca resztę z dzielenia
np. if($i%2 == 1)echo '<br clear="all"/>';
Go to the top of the page
+Quote Post
batman
post
Post #7





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Cytat(nexis @ 9.05.2008, 02:02:22 ) *
W temacie nazwałeś swój problem "zaawansowanym zapytaniem", a w opisanym problemie nie widzę niczego, co miałoby z tym coś wspólnego.

// Proszę o nie nabijanie postów.
// ~webdicepl

Co racja, to racja. Temat nie należy do najbardziej trafionych, ale zamiast bawić się moderatora należy to zgłosić.


@bemol
Proszę zmienić temat na taki, który będzie lepiej oddawał naturę Twojego problemu. Mała podpowiedź, to nie zapytanie jest zaawansowane, lecz html + css. A do tego nie zaawansowany, a podstawowy.
Go to the top of the page
+Quote Post
bemol
post
Post #8





Grupa: Zarejestrowani
Postów: 286
Pomógł: 29
Dołączył: 5.04.2007
Skąd: Rymanów Zdrój/Rzeszów

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


@batman powiedz mi więc co mam zrobić z html+css podstawowym? Co on mi pomoże?
Tutaj tylko i wyłącznie chodzi o poprawne zapytanie które wypisze mi rekordy jeden obok drugiego. Jeśli rekordów będzie nieparzysta ilość to ostatni rekord zostaje wycentrowany.
Zgadzam się z konraddo trzeba bardziej w ten sposób pokombinować (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Właściwie już rozwiązałem ten problem, więc można zamknąć.
Punkt dla konraddo.
Go to the top of the page
+Quote Post
batman
post
Post #9





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




@bemol
1. Nie powinno wykonywać się zapytań w pętli.
2. HTML + CSS ( ewentualnie + jedna instrukcja warunkowa) załatwi Twój problem, wystarczy nieco pokombinować.
3. Tematu nie zamykam, ponieważ podejrzewam, że jeszcze będziesz miał jakieś pytania.
4. Zmieniam tytuł tematu.
Go to the top of the page
+Quote Post
bemol
post
Post #10





Grupa: Zarejestrowani
Postów: 286
Pomógł: 29
Dołączył: 5.04.2007
Skąd: Rymanów Zdrój/Rzeszów

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


Hmmm, temat nie bardzo odpowiada ale ok. Poradzilem sobie z zapytaniem, teraz jednak chodzi o wyświetlanie.

Skrypt wygląda obecnie tak:
  1. <?php
  2. include "admin/Engine.php";
  3. include "admin/Globals.php";
  4.  
  5. error_reporting(E^ALL & NOTICE);
  6.  
  7. $Db = new Engine(HOST, USER, DBPASSWORD, NAME);
  8.  
  9. if ( $Db->IsConnected ) {
  10.  
  11. $Db->Query("SELECT Gallery.*, Photos.* FROM Gallery LEFT JOIN Photos ON Gallery.Gallery
    ID=Photos.PhotoGalleryID ORDER BY GalleryDescription, PhotoDescription"
    );
  12.  
  13. while ( $Row = $Db->FetchAssoc() ) {
  14.  
  15. }
  16. }
  17.  
  18. $Db->Close();
  19.  
  20. ?>


W pętle while trzeba wpisać konstrukcje foreach, tylko kompletnie nie wiem jak się za to zabrać :/

Proszę o pomoc, ale nie w postaci odnośników do kursów w których są opisane wielowymiarowe tablice asocjacyjne, bo czytalem i nie zakumałem, tym bardziej, że w tym przypadku jest to wypisanie danych z bazy.
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
W pętle while trzeba wpisać konstrukcje foreach, tylko kompletnie nie wiem jak się za to zabrać :/
Jaki foreach, poczym? Whilem iterujesz po zapytaniu, a foreachem to po czym chcesz iterowac bo nie rozumiem.
Go to the top of the page
+Quote Post
bemol
post
Post #12





Grupa: Zarejestrowani
Postów: 286
Pomógł: 29
Dołączył: 5.04.2007
Skąd: Rymanów Zdrój/Rzeszów

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


nie mam pewnosci ze to jest dobrze, ale wydaje mi sie ze whilem wypisuje wszystkie wartosci do tablicy asocjacyjnej. Teraz z tej tablicy musi posortować i przypisac odpowiednie dane do odpowiedniego GalleryID, tak żeby GalleryID posiadało nazwe(GalleryDescription), tresc(GalleryContent) i zdjecia(PhotoID - kazde zdjecie ma przypisane w bazie PhotoGalleryID, czyli kazde zdjecie jest przypisane do konkretnej galleri, oraz PhotoDescription wyswietlane w znaczniku img alt="PhotoDescription", oraz ID zdjecia, ktore odpowiada nazwie konkretnego pliku).
byc moze zawile to tlumacze ale mam nadzieje ze ktos zrozumie ;p
Go to the top of the page
+Quote Post
piotrekkr
post
Post #13





Grupa: Zarejestrowani
Postów: 386
Pomógł: 25
Dołączył: 28.09.2005

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


cos takiego:
  1. <?php
  2. $Db->Query("SELECT Gallery.*, Photos.* FROM Gallery LEFT JOIN Photos ON Gallery.Gallery
    ID=Photos.PhotoGalleryID ORDER BY GalleryID, PhotoID"
    );
  3.  
  4. $galleries = array();
  5. while($aRow = $Db->FetchArray()){
  6. $galleries[$aRow['GalleryID']] = array(
  7. 'GalleryDate' => $aRow['GalleryDate'], 
  8. 'GalleryDescription' => $aRow['GalleryDescription'], 
  9. 'GalleryContent' => $aRow['GalleryContent']);
  10. $galleries[$aRow['GalleryID']]['photos'][] = array(
  11. 'PhotoID' => $aRow['PhotoID'], 
  12. 'PhotoDate' => $aRow['PhotoDate'], 
  13. 'PhotoGalleryID' => $aRow['PhotoGalleryID'], 
  14. 'PhotoDescription' => $aRow['PhotoDescription']);
  15. }
  16.  
  17. foreach($galleries as $gallery_content){
  18. echo '<div><b>'.$gallery_content['GalleryDescription'].'</b></div>';
  19. echo '<div>'.$gallery_content['GalleryContent'].'</div>';
  20. echo '<br />';
  21. foreach($gallery_content['photos'] as $photo){
  22. echo '<img src="photos/thumbs/'.$photo['PhotoID'].'.jpg" alt="'.$photo['PhotoDescription'].'" />';
  23. }
  24. }
  25. ?>
Go to the top of the page
+Quote Post
bemol
post
Post #14





Grupa: Zarejestrowani
Postów: 286
Pomógł: 29
Dołączył: 5.04.2007
Skąd: Rymanów Zdrój/Rzeszów

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


wyświetla prawie dobrze, tylko zamiast trzech zdjęć galerii Okna wyświetla 1 - ostanie :/
czy ktoś znalazł jakiś błąd?
prosze o pomoc
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 23:39