Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Galeria zdjęć oparta o mySQL.
Forum PHP.pl > Forum > PHP
Mazur_pl
Witam winksmiley.jpg.
Napisałem galerie zdjęć ale tym razem opartą o bazę danych mySQL i w bazie danych mam tabele a w niej:
Kod
-id
-title
-image
-opis
-katalog


Oto kod:
  1. <?php
  2. define("db_host", "localhost");
  3. define("db_user", "Mazur");
  4. define("db_password", "#######");
  5. define("db_name", "galeria");
  6. mysql_connect(db_host, db_user, db_password);
  7. mysql_select_db(db_name);
  8. $file_name = "./big/";
  9. if(file_exists($file_name)) {
  10. if($_GET['id']>0) {
  11. $gallery = mysql_query("SELECT * FROM galeria WHERE id=".$_GET['id']."");
  12. if($gallery && $id = mysql_fetch_assoc($gallery)) {
  13. if($_GET['id']>1) {
  14. echo("<a href="gallery.php?id=".($_GET['id']-1)."">Poprzednie zdjecie</a>");
  15. }
  16. echo("<a href="gallery.php">&nbsp; | Galeria |&nbsp; </a>");
  17. if($_GET['id']<count($id)) {
  18. echo("<a href="gallery.php?id=".($_GET['id']+1)."">Następne zdjecie</a>");
  19. }
  20. echo("<table width="600" align="center" border="1" bordercolor="#e9e9e9" style="border-collapse: collapse;">rn");
  21. echo(" <tr>rn");
  22. echo(" <td colspan="2">Tytul pracy:&nbsp;".$id['title']."</td>rn");
  23. echo(" </tr>rn");
  24. echo(" <tr>rn");
  25. echo(" <td colspan="2" style="text-align: center; padding: 10px;">rn");
  26. echo(" <a href="".$file_name.$id['image']."" target="_new">");
  27. echo("  <img src="image.php?link=".$file_name.$id['image']."&amp;size=100" />rn");
  28. echo(" </a>");
  29. echo(" </td>rn");
  30. echo(" </tr>rn");
  31. echo(" <tr>rn");
  32. echo(" <td colspan="2">Katalog:&nbsp;".$id['katalog']."</td>rn");
  33. echo(" </tr>rn");
  34. echo(" <tr>rn");
  35. echo(" <td colspan="2">Opis pracy:&nbsp;".$id['opis']."</td>rn");
  36. echo(" </tr>rn");
  37. echo("</table>rn");
  38. } else {
  39. echo("Nie ma obrazka o takim numerze !<br />Spróbuj ponownie!");
  40. }
  41. } elseif(count($file_name)>0) {
  42.  echo("<center><h2>Galeria</h2></center>");
  43.  echo("Miniatury");
  44. } else {
  45. echo("Katalog jest pusty");
  46. }
  47. } else {
  48. echo("Folder $file_name nie istnieje!<br />");
  49. }
  50. ?>


Lecz mam taki problem. Kiedy przejdę pod adres na przykład gallery.php?id=1 mam u góry linki do:
Galeria | Następne zdjęcie . Wszystko chodzi. Lecz kiedy przejdę pod ostatni id obrazku mam :
Poprzednie zdjęcie | Galeria | Następne zdjęcie
Chociaż następnego zdjęcia nie ma dry.gif .
A drugi problem to jak zrobić tutaj:
  1. <?php
  2. } elseif(count($file_name)>0) {
  3.  echo("<center><h2>Galeria</h2></center>");
  4.  echo("Miniatury");
  5. ?>

Aby były wszystkie zdjęcia z bazy? A zdjęcie to link do id tego obrazka?
Próbowałem zrobić to na przykładzie mojej starej galerii ale nic mi nie wychodzi angrysmiley.gif .

Przy okazji. Jak zrobić ostatnie 3 wpisy do bazy? smile.gif
nospor
Cytat
Chociaż następnego zdjęcia nie ma

  1. <?php
  2. if($_GET['id']<count($id))
  3. ?>
a co te count($id) ma niby zwracac? Patrzac wyzej to $id to:
$id = mysql_fetch_assoc($gallery)
czyli jeden rekord z tabeli (tablica pol z danego rekordu), a nie wszystkie elementy.
Mazur_pl
Dzięki winksmiley.jpg . Czegoś się nauczyłem . Zrobiłem tak:
  1. <?php
  2. if(!($_GET['id']>1)) {
  3. echo("<a href="gallery.php?id=".($_GET['id']+1)."">Następne zdjecie</a>");
  4. }
  5. ?>


A wiecie może co do tych zdjęć ?
michas999
proste,
jak masz kod:
  1. <?php
  2. $gallery = mysql_query("SELECT * FROM galeria");
  3. ?>
to dodajesz do tego limit, czyli:
  1. <?php
  2. $gallery = mysql_query("SELECT * FROM galeria LIMIT 3");
  3. ?>

i pokazuje 3 zdjecia, lecz jak by nie pokazywalo 3 ostatnich dodaj: LIMIT 3 DESC

a potem juz normalny kod na pokazanie smile.gif

pozdr!
FliSs_tCv
Witam chciałbym sie dowiedziec jak stworzyc galerie oparta własnie o mysql php z podziałem na kategorie co prawda mam juz jakis skrypt ale to nie jest to sad.gif o to ten kod smile.gif
  1. <?phpmysql_connect('host','login','haslo');mysql_select_db('baza');if(!isset($_GET['zdj']))$_GET['zdj']=0;if(strlen($_GET['zdj'])>4)$_GET['zdj']=0;$zapytanie = 'SELECT * FROM kategorie WHERE id_rodzica='.$_GET[zdj];$odpowiedz = mysql_query($zapytanie) or die(mysql_error());while ($wiersz = mysql_fetch_array($odpowiedz)) {extract($wiersz);echo '<a href=index.php?akcja=galeria&kat='.$wiersz[nazwa].'&zdj='.$wiersz[id].'><b>'.$wiersz[nazwa].'</b></a><br> ';}$zapytanie = 'SELECT * FROM galeria WHERE id_kategorii='.$_GET[zdj];$odpowiedz = mysql_query($zapytanie) or die(mysql_error()); echo '<table>'; $i=1;while ($dane = mysql_fetch_assoc ($odpowiedz)) {if($i==1) echo '<tr>';echo '<td><img src=\"galeria/male/'.$dane['zdjecie'].'\" alt=\"'.$dane['tytul'].'\" /></td>';if($i==3) { echo '<tr>'; $i=0;}$i++;}echo '</table>';mysql_close();?>
ok to jest kod smile.gif a teraz moje pytania ...
  1. <?phpecho '<td><img src=\"galeria/male/'.$dane['zdjecie'].'\" alt=\"'.$dane['tytul'].'\" /></td>';?>
w tym fragmęcie wyswietla mi tylko małe obrazki sad.gif jak widac:P a chciałbym aby po kliknięciu w jakie kolwiek z nich pokazało sie duże nie wiem jak to wykonac robiłem a href i cos cudowałem ale nie wychodzilo sad.gif ?2 pytanie mozna jakos rozdzielic albo jakos inaczej to napisac abym mogl na głownej stronie galerii wyswietlac same kategorie po czym jak sie w nie kliknie pokażą sie fotki bo teraz robi sie tak ze jak chce zrobic po wyswietleniu obrazów wpisac a href z opcja powrót do głównej to tez mi sie to wyswietla na stronie głównej przy kategoriach ten powrót :/ to chyba na tyle winksmiley.jpg bede naprawde wdzieczny za pomoc smile.gif pozdrawiam smile.gif


I co nikt nic nie wie questionmark.gif? sad.gif
Hazel
A mógłbyś zrobić z tego burdelu w kodzie coś normalnego?
Bo próbowałem się w to wczytać i niewiele udało mi się wypatrzeć :/
Nie lubię takiego kodu...
FliSs_tCv
nie wie co sie stalo ze sie ze soba skleil ;/ jescze raz go wkleje smile.gif jak patrzałem wczesniej bylo ok smile.gif o to ten kod jescze raz smile.gif

  1. <?php
  2. mysql_connect('localhost','login','haslo');
  3. if(!isset($_GET['zdj']))$_GET['zdj']=0;
  4. if(strlen($_GET['zdj'])>4)$_GET['zdj']=0;
  5.  
  6.  
  7. $zapytanie = 'SELECT * FROM kategorie WHERE id_rodzica='.$_GET[zdj];
  8.  
  9. $odpowiedz = mysql_query($zapytanie) or die(mysql_error());
  10.  
  11. while ($wiersz = mysql_fetch_array($odpowiedz)) {
  12. extract($wiersz);
  13.  
  14. echo '<a href=index.php?akcja=galeria&kat='.$wiersz[nazwa].'&zdj='.$wiersz[id].'><b>'.$wiersz[nazwa].'</b></a><br>';
  15.  
  16. }
  17.  
  18. $zapytanie = 'SELECT * FROM galeria WHERE id_kategorii='.$_GET[zdj];
  19.  
  20. $odpowiedz = mysql_query($zapytanie) or die(mysql_error());
  21. echo '<table>'; $i=1;
  22. while ($dane = mysql_fetch_assoc ($odpowiedz)) {
  23.  
  24. if($i==1) echo '<tr>';
  25.  
  26. echo '<td><img src="galeria/male/'.$dane['zdjecie'].'" alt="'.$dane['tytul'].'" /></td>';
  27.  
  28. if($i==3) {
  29.  echo '<tr>';
  30.  $i=0;
  31. }
  32. $i++;
  33. }
  34. echo '</table>';
  35.  
  36. ?>
Hazel
Zeksportuj mi baze danych, bo się nie łapię w tym, co Ci ten kod wyświetla, a nie chce mi sie tworzyc Twojej bazy od początku...
Daj kod SQL.
FliSs_tCv
O to kod sql tabeli galeria
  1. CREATE TABLE `galeria` (
  2. `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `id_kategorii` int(30) NOT NULL,
  4. `tytul` varchar(150) NOT NULL,
  5. `zdjecie` varchar(100) DEFAULT NULL,
  6. `opis` varchar(200) DEFAULT NULL,
  7. PRIMARY KEY (`id`)
  8. ) ENGINE=MyISAM AUTO_INCREMENT=30 DEFAULT CHARSET=latin2 AUTO_INCREMENT=30 ;


jescze jej wnetrze ;P

  1. INSERT INTO `galeria` (`id`, `id_kategorii`, `tytul`, `zdjecie`, `opis`) VALUES
  2. (1, 1, 'tytul', 'P1050642.JPG', 'opis'),
  3. (2, 1, 'tytul', 'P1050659.JPG', 'opis'),
  4. (3, 1, 'tytul', 'P1050688.JPG', 'opis'),
  5. (4, 1, 'tytul', 'P1050717.JPG', 'opis'),
  6. (5, 1, 'tytul', 'P1050742.JPG', 'opis'),
  7. (6, 1, 'tytul', 'P1050792.JPG', 'opis'),
  8. (7, 1, 'tytul', 'P7280045.JPG', 'opis'),
  9. (8, 1, 'tytul', 'P7280053.JPG', 'opis'),
  10. (9, 1, 'tytul', 'P7280055.JPG', 'opis'),
  11. (10, 1, 'tytul', 'P7280070.JPG', 'opis'),
  12. (11, 1, 'tytul', 'P7280076.JPG', 'opis'),
  13. (12, 1, 'tytul', 'P7280082.JPG', 'opis'),
  14. (13, 1, 'tytul', 'P7280083.JPG', 'opis'),
  15. (14, 1, 'tytul', 'P7280085.JPG', 'opis'),
  16. (15, 1, 'tytul', 'P7280093.JPG', 'opis'),
  17. (16, 2, 'tytul', 'P7280094.JPG', 'opis'),
  18. (17, 2, 'tytul', 'P7280097.JPG', 'opis'),
  19. (18, 2, 'tytul', 'P7280098.JPG', 'opis'),
  20. (19, 2, 'tytul', 'P7280099.JPG', 'opis'),
  21. (20, 2, 'tytul', 'P7280105.JPG', 'opis'),
  22. (21, 2, 'tytul', 'P7280109.JPG', 'opis'),
  23. (22, 2, 'tytul', 'P7280119.JPG', 'opis'),
  24. (23, 2, 'tytul', 'P7280120.JPG', 'opis'),
  25. (24, 2, 'tytul', 'P7280132.JPG', 'opis'),
  26. (25, 2, 'tytul', 'P7280137.JPG', 'opis'),
  27. (26, 2, 'tytul', 'P7280138.JPG', 'opis'),
  28. (27, 2, 'tytul', 'P7280143.JPG', 'opis'),
  29. (28, 2, 'tytul', 'Zlot IK1 2007.JPG', 'opis'),
  30. (29, 2, 'tytul', 'Zlot IK11 2007.JPG', 'opis');


a oto kod tabeli kategorie

  1. CREATE TABLE `kategorie` (
  2. `id` int(10) NOT NULL AUTO_INCREMENT,
  3. `nazwa` varchar(100) NOT NULL,
  4. `kategoria` varchar(50) NOT NULL,
  5. `id_rodzica` int(10) NOT NULL DEFAULT '0',
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin2 AUTO_INCREMENT=3 ;


jej wnetrze smile.gif

  1. INSERT INTO `kategorie` (`id`, `nazwa`, `kategoria`, `id_rodzica`) VALUES (1, 'Test1', '1', 0),
  2. (2, 'Test2', '2', 0);


dzieki za zainteresowanie sie moim problemem smile.gif
Hazel
Nie wiem dokladnie, czy o coś takiego Ci chodziło, czy nie bardzo, ale masz tyle:

  1. <?php
  2. mysql_connect('localhost','login','haslo');
  3.  
  4. if (!isset($_GET['zdj']))
  5. {
  6.  $_GET['zdj']=0;
  7. }
  8. if (strlen($_GET['zdj'])>4)
  9. {
  10.  $_GET['zdj']=0;
  11. }
  12.  
  13.  
  14. $zapytanie1 = 'SELECT * FROM kategorie WHERE id_rodzica='.$_GET[zdj];
  15.  
  16. $odpowiedz1 = mysql_query($zapytanie1) or die(mysql_error());
  17.  
  18.  
  19. $zapytanie2 = 'SELECT * FROM galeria WHERE id_kategorii='.$_GET[zdj];
  20.  
  21. $odpowiedz2 = mysql_query($zapytanie2) or die(mysql_error());
  22.  
  23. if ($_GET['akcja']=='zdjecie')
  24. {
  25.  echo '<img src="'.$dane['zdjecie'].'" alt="'.$dane['tytul'].'" height=300 width=400/>';
  26.  echo '<a href="index.php">Powrót</a>';
  27.  exit;
  28. }
  29.  
  30. while ($wiersz = mysql_fetch_assoc($odpowiedz1))
  31. {
  32.  echo '<a href=index.php?akcja=galeria&kat='.$wiersz[nazwa].'&zdj='.$wiersz[id].'><b>'.$wiersz[nazwa].'</b></a><br>';
  33. }
  34.  
  35. echo '<table>';
  36. $i=1;
  37. while ($dane = mysql_fetch_assoc ($odpowiedz2))
  38. {
  39.  if($i==1)
  40.  {
  41. echo '<tr>';
  42.  }
  43.  echo '<td><a href="index.php?akcja=zdjecie&zdj='.$dane['zdjecie'].'"><img src="'.$dane['zdjecie'].'" alt="'.$dane['tytul'].'" /></a></td>';
  44.  if($i==3)
  45.  {
  46. echo '<tr>';
  47. $i=0;
  48.  }
  49.  $i++;
  50. }
  51. echo </table>;
  52.  
  53. ?>


A drugie pytanie sprecyzuj, bo do końca nie zrozumiałem.
FliSs_tCv
To tez nie rozwiązało sytuacji

--------> EDIT <-------

czy da rade jakos rozdzieloc te 2 rzeczy jakimi sa galeria i kategorie ? w sensie takim abym mogł tak jak w formularzu np wypelniam cos i odwołuje sie do 2 pliku który cos zaczyna wykonywac tak samo chyba tongue.gif chcialbym aby ten podzial galeri na kategorie wygladał ze w 1 pliku kategorie.php pokaze mi same kategorie a w 2 pliku galeria.php wyswietlalo by zdjecia z danej kategori smile.gif da rade tak zrobic ? bo teraz jak jest to wszystko w tym jednym pliku to nie moge np dac opcji w powrót aby powrócic do kategorii (czyli strony głównej galerii) bo ta opcja wyswietli mi sie także pod kategoriami czyli wygladało by to tak ze wchodzac na strone galeria otrzymałbym takie cos


kategoria 1
kategoria 2
kategoria 3
kategoria 4
kategoria 5

powrót

a po co mi powrót do strony na której jestem biggrin.gif kurde mam nadzieje ze jest to zrozumiałe smile.gif
Hazel
Cytat(FliSs_tCv @ 17.08.2007, 13:21:05 ) *
kurde mam nadzieje ze jest to zrozumiałe


Szczerze to raczej średnio.
Musisz pokombinować z adresami odwołań w odnośnikach <a> po prostu...
Utwórz plik galeria.php i zamiast odwołań do index.php?akcja=galeria odwołuj się do galeria.php?zdj=$zdj.
FliSs_tCv
Czyli jak mam stworzyc plik galeria i kategorie tak ? czy jak bo nie wiem tongue.gif heh chyba ze masz inny pomysł w sprawie tego powrót ;>
Hazel
Powiem Ci tak:
Jeżeli uważasz, że jest to potrzebne do rozwiązania problemów - tak.
W przeciwnym przypadku - nie.
Eksperymentując, niczego nie tracisz. Tu trzeba trochę logiki (całkiem niedużo), więc ja Ci kodu nie napiszę. Myśl.
Inne pomysły mam, ale sam też na nie wpadniesz.
FliSs_tCv
dobra sama logikie to moze i bym mial ale napisac sam bez kierunku nie napisze tongue.gif bo nie znam sie az tak dobrze smile.gif przerobic przerobie troche jak nie jest trudne smile.gif . Wiec miałbym prosbe abys mi cos tak tylko podsunoł moze cos mi sie zacznie układac w glowie tym bardziej goni mnie czas bo na jutro musze miec gotowy projekt sad.gif no i taka lipa sad.gif ... zaznaczam nie chce gotowca bo to nie bylo by moje tylko twoje biggrin.gif
Hazel
No to będziesz miał 3 pliki:
1. index.php
2. kategoria.php
3. zdjecie.php

W indexie masz spis kategorii (np.: )
  1. <?php
  2. echo '<a href='kategoria.php?kat="'.$_GET['kat'].'">;
  3.  // to jest tylko forma odnośnika, pobrać z bazy danych potrafisz ;>
  4. ?>


W pliku kategoria.php sprawdzasz $_GET['kat'] i zależnie od tego wyświetlasz odpowiednią kategorię.
Odnośniki będące zdjęciami mają postać:
  1. <?php
  2. echo '<a href="zdjecie.php?zdj="'.$_GET['zdj'].'">'; // to też odnośnik, dalej musisz wstawić znacznik <img>
  3. ?>


No i w pliku zdjecie.php wyświetlasz duże zdjęcie, sprawdziwszy $_GET['zdj']. Odnośnik Powrót zrobisz w zależności od tego, gdzie on ma przekierowywać po kliknięciu - albo do index.php, albo do kategorie.php?kat=$_GET['kat'] (w drugim przypadku musisz zarejestrować zmienną sesji albo zrobić formularz z ukrytym polem). To wszystko.
FliSs_tCv
Ok dzieki smile.gif zobaczę co mi sie uda zrobic smile.gif pozdro i dobrej nocy wszystkim biggrin.gif
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.