Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][CSS] Rozmieszczenie zdjęć w galerii
bemol
post 8.05.2008, 21:41:17
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 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


--------------------
Tym ludziom zaufałem i dobrze na tym wyszedłem:
kresh
Darti
piotrekkr
Bez nich wiele bym nie zrobił. Dzięki im za to!
Go to the top of the page
+Quote Post
nexis
post 9.05.2008, 01:02:22
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


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
bemol
post 9.05.2008, 14:56:06
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


--------------------
Tym ludziom zaufałem i dobrze na tym wyszedłem:
kresh
Darti
piotrekkr
Bez nich wiele bym nie zrobił. Dzięki im za to!
Go to the top of the page
+Quote Post
konraddo
post 9.05.2008, 15:58:46
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 9.05.2008, 16:17:35
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? smile.gif
rozjedzie sie :/
trzeba tutaj zastosować parzystość i nieparzystość


--------------------
Tym ludziom zaufałem i dobrze na tym wyszedłem:
kresh
Darti
piotrekkr
Bez nich wiele bym nie zrobił. Dzięki im za to!
Go to the top of the page
+Quote Post
konraddo
post 9.05.2008, 17:01:21
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 9.05.2008, 19:45:01
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.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
bemol
post 10.05.2008, 08:37:26
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ć smile.gif
Właściwie już rozwiązałem ten problem, więc można zamknąć.
Punkt dla konraddo.


--------------------
Tym ludziom zaufałem i dobrze na tym wyszedłem:
kresh
Darti
piotrekkr
Bez nich wiele bym nie zrobił. Dzięki im za to!
Go to the top of the page
+Quote Post
batman
post 10.05.2008, 09:38:23
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.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
bemol
post 12.05.2008, 19:11:22
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.


--------------------
Tym ludziom zaufałem i dobrze na tym wyszedłem:
kresh
Darti
piotrekkr
Bez nich wiele bym nie zrobił. Dzięki im za to!
Go to the top of the page
+Quote Post
nospor
post 12.05.2008, 19:17:07
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.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
bemol
post 12.05.2008, 19:22:25
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


--------------------
Tym ludziom zaufałem i dobrze na tym wyszedłem:
kresh
Darti
piotrekkr
Bez nich wiele bym nie zrobił. Dzięki im za to!
Go to the top of the page
+Quote Post
piotrekkr
post 13.05.2008, 16:31:30
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 13.05.2008, 16:32:55
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


--------------------
Tym ludziom zaufałem i dobrze na tym wyszedłem:
kresh
Darti
piotrekkr
Bez nich wiele bym nie zrobił. Dzięki im za to!
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: 26.06.2025 - 16:27