Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]PRoszę o pomoc w zapytaniu php mysql, Mam galerię zdjęć w bazie danych chcę zrobić odnośnik następne zdjęcie
Manioo
post
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.06.2008

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


Mam galerię zdjęć w bazie danych. Każde zdjęcie na stronie otwiera się pojedynczo potem trzeba je zamknąć i otworzyć kolejne. Chcę zrobić aby po otwarciu się był link "następne" i po jego kliknięciu pojawiało się kolejne zdjęcie bez konieczności zamykania otwartego już okna. Problemu nie ma bo zastosowałem:
Kod
$zapytanie=mysql_query("select * from zdjecia where id='$zo_d1[id]'");      
  if (mysql_num_rows($zapytanie)==0) {             jesli ilośc wyników różna od 0 czyli nie znaleziono to
  
   .............................?............................   tu jest problem bo nie wiem co zrobić gdy zdjęcie nie istnieje  
  }else
  {
   $y=$zo_d1[id]+1;     gdy zdjęcie istnieje do adresu dodaje +1 i wysietla kolejne zdjęcie np 456    
  }
  
  <a href="<?php echo"$adres/z/$y/$gl_tablink/"; ?>">NASTĘPNE</a>


Adres strony mam taki:
Kod
  www.domena/z/667/Array/
liczba to id zdjecia ktore istnieje
jesli doda mi skrypt +1 czyli otworzy 668, ale jeśli tego zdjęcia nie będzie w bazie to jak zrobić by przeskoczyło do następnego? (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Proszę o pomoc bo już się pogubiłem.

Ten post edytował Manioo 14.06.2008, 10:39:04
Go to the top of the page
+Quote Post
JoShiMa
post
Post #2





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Cytat(Manioo @ 6.06.2008, 09:58:55 ) *
Problemu nie ma bo...


No to właściwie w czym problem??

A zapytanie do pierwszego zdjęcia zrobiłabym tak?

  1. SELECT * FROM zdjecia ORDER BY id LIMIT 2


Wtedy weźmie Ci pierwsze zdjęcie i następne, odpadnie problem że może nie być zdjęcia o taki id.

Do następnych zdjęć wzięłabym id z drugiego rekordu i dała zapytanie:

  1. SELECT * FROM zdjecia WHERE id >= '$id' ORDER BY id LIMIT 2



Możesz od razu zacząć od ustawienia początkowego
  1. <?php
  2. $zo_d1[id] = 1;
  3. SELECT * FROM zdjecia WHERE id >= '$zo_d1[id]' ORDER BY id LIMIT 2
  4. ...
  5. $zo_d1[id] = id z drugiego rekordu
  6. SELECT * FROM zdjecia WHERE id >= '$zo_d1[id]' ORDER BY id LIMIT 2
  7. itd
  8. ?>
Go to the top of the page
+Quote Post
Manioo
post
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.06.2008

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


coś mi nie wychodzi

Gdy mam otworzoną podstronę np. zdjęcie
Kod
[url="http://www.domna/z/647/Array/"]http://www.domna/z/647/Array/[/url]
o numerze 647 chodzi o zmianę w linku

Kod
<a href="<?php echo"$adres/z/$y/$gl_tablink/"; ?>">NASTĘPNE</a>
aby tej zmiennej $y w linku przyporzadkować kolejną liczbę +1 zdjęcia która istnieje
to samo jeśli chciałbym dać POPRZEDNIE zdjęci czyli -1 jesli np nie ma kolejnego żeby automatycznie w linku pokazywało np 650 jako kolejne.

Nie wiem jak to wymyślić żeby dobrze było.

Ten post edytował Manioo 8.06.2008, 22:06:37
Go to the top of the page
+Quote Post
toch18
post
Post #4





Grupa: Zarejestrowani
Postów: 40
Pomógł: 3
Dołączył: 4.01.2007
Skąd: Starogard GD-&gt;Gdynia

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


nie jestem pewien ale w zapytaniu SQL jest coś takiego jak IF EXISTS tamk sam w php np if(file_exists) i wtedy możesz się bawić tą swoją tablicą np

$array[$i++] ,na przykład kiedy nie wykryje pliku.
Go to the top of the page
+Quote Post
Manioo
post
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.06.2008

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


faktycznie chyba o to chodzi bo jesli nie wykryje zdjecia o danym numerze to go po prostu ni wyswietli,
tylko jak to zrobić ?

to działa:
Kod
          $y=$zo_d1[id]+1;     gdy <a href="<?php echo"$adres/z/$y/$gl_tablink/"; ?>">NASTĘPNE</a>
wówczas wyświetla kolejne zdjęcie np

Kod
[url="http://www.domena/z/651//"]http://www.domena/z/651//[/url]
$zo_d1[id] - to jest nazwa zdjecia oraz  id zdjecia


ale jak juz dam nastepne i bedzie 652 którego nie ma w bazie ponieważ np zostało usunięta to zamiast wyświetlać kolejne to jest:

Warning: getimagesize(http://www.domena//duzy/.jpg) [function.getimagesize]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/domena/ftp/domena/inc/strona/zobacz.php on line 90

Ten post edytował Manioo 8.06.2008, 22:07:37
Go to the top of the page
+Quote Post
toch18
post
Post #6





Grupa: Zarejestrowani
Postów: 40
Pomógł: 3
Dołączył: 4.01.2007
Skąd: Starogard GD-&gt;Gdynia

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


ja tak nie potrafie z głowy pisać ale moge ci pokazać schemat


  1. <?php
  2. //tu gdzies powinna być pętlafor z ilościa twoich zdięć
  3.  
  4. for($i=1; $i<=$ilosc_zdiec; $i++)
  5.  
  6.  
  7. SELECT * FROM '' IF EXISTS LIMIT 0,1) //1.wczytaj z mysql zdięci (chyba tak)
  8.  (if(file_exits)) //2.zobaczy czy istnieje
  9.  
  10.  <img src='.$array[$i].'> //jeśli tak to wczytaj co tam sobie chcesz
  11.  
  12. break; //jeśli nie
  13. ?>


to jest tylko zarys (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Ten post edytował toch18 6.06.2008, 13:32:11
Go to the top of the page
+Quote Post
Kicok
post
Post #7





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


1. Podczas wyświetlania zdjęcia również sprawdzaj, czy znaleziono ID w bazie, np.:
  1. <?php
  2. <php
  3.  
  4. $result = mysql_query( 'SELECT * FROM zdjecia WHERE id = ' . intval( $_GET['id'] ) );
  5. if( !mysql_num_rows( $result ) ) {
  6. // Nie ma takiego zdjęcia w bazie danych
  7. }
  8.  
  9. ?>



2. Co do linków POPRZEDNI, NASTĘPNY:
Pobierz sobie z bazy danych:
- Najmniejsze ID większe od $_GET['id'];
- Największe ID mniejsze od $_GET['id'];

Czyli 2 proste zapytania z WHERE, ORDER BY i LIMIT. Ewentualnie jedno, jeśli użyjesz UNION
Potem już tylko wystarczy sprawdzić, czy zapytanie zwróciło wynik, i jeśli tak to wyświetlić link do poprzedniego/następnego zdjęcia, a jeśli nie to nie wyświetlać nic.

Ten post edytował Kicok 6.06.2008, 14:49:35
Go to the top of the page
+Quote Post
Manioo
post
Post #8





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.06.2008

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


ogólnie wcześniejszego jak tak pomyslałem to wystarczy zmienić zmienną w linku (cyfre) na kolejną aby kolejne zdjęcie się wyświetlało, ale blad jest gdy dane zdjecie nie wystepuje (bo zmienna w linku jest to id zdjecia), wowczas należalo by zmienną w linku jakos polaczyc z id aby gdy koljena cyfra w bazie danych id nie wystepuje bralo kolejna az wyswietli tą ktora istnieje. ale jak to zrobic, dokladny kod

Kod
<a href="<?php echo"$adres/z/$zo_d1[id]/$gl_tablink/"; ?>

$zo_d1[id] - zmienna linku czyli także id zdjecia ona ma się zmieniać

$zo_d1[id]+1;   to działa jesli jest kolejne id a jesli nie ma to jest blad i wlasnie jak to zrobic? (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)


Chodzi tylko aby zmieniać adres (cyfre) w linku

Ten post edytował Manioo 8.06.2008, 22:07:55
Go to the top of the page
+Quote Post
JoShiMa
post
Post #9





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Kilka postów wyżej Ci napisałam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

  1. SELECT * FROM zdjecia WHERE id >= '$zo_d1[id]' ORDER BY id LIMIT 2


Ten post edytował JoShiMa 7.06.2008, 13:16:05
Go to the top of the page
+Quote Post
Manioo
post
Post #10





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.06.2008

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


ale co dalej? Proszę o cały kod żrodłowy bo jestem w programowaniu kiepski (+ przecinki i kropki cudzysłowy nawiasy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ), i jak by to wyglądało także z linkiem POPRZEDNIE czyli -1 nie mówiąc już że chciałbym porusać się tylko w jednej kategorii zdjęć nie wszystkich w bazi ale to inna kwestia

Próbowałem tak i nie idzie:
Kod
<?php
$zapytanie=mysql_query("select * from zdjecia where id='$zo_d1[id]'");
if (mysql_num_rows($zapytanie)==0)
{

$z=("SELECT * FROM zdjecia WHERE id >= '$zo_d1[id]' ORDER BY id LIMIT 2");
$y=z+1;
  }
else
{
$y=$zo_d1[id]+1;
}
?>

<a href="<?php echo"$adres/z/$y/$gl_tablink/"; ?>"><font color="#FF4000">NASTĘPNE  >></font></a>  </center>


Ten post edytował Manioo 8.06.2008, 22:08:14
Go to the top of the page
+Quote Post
ppp
post
Post #11





Grupa: Zarejestrowani
Postów: 33
Pomógł: 3
Dołączył: 29.01.2008

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


kiedys cos podobnego robilem, mozna pewnie ladniej ale prosciej to chyba sie nie da juz. Trzy zapytania do bazy, jedno zeby pobrac aktualne zdjecie, jedno zeby pobrac nastepne i jedno zeby pobrac poprzednie.
  1. <?php
  2. $aktualne = mysql_fetch_assoc(mysql_query("SELECT * FROM zdjecia WHERE id='$zo_d1[id]'"));
  3. $poprzednie = mysql_fetch_assoc(mysql_query("SELECT * FROM zdjecia WHERE id<'$zo_d1[id]' ORDER BY id DESC LIMIT 1"));
  4. $nastepne = mysql_fetch_assoc(mysql_query("SELECT * FROM zdjecia WHERE id>'$zo_d1[id]' ORDER BY id ASC LIMIT 1"));
  5. if ($poprzednie) {
  6. echo "<a href=\"$adres/z/$poprzednie[id]/$gl_tablink/\"><font color=\"#FF4000\">POPRZEDNIE >></font></a> </center>";
  7. }
  8. if ($nastepne) {
  9. echo "<a href=\"$adres/z/$nastepne[id]/$gl_tablink/\"><font color=\"#FF4000\">NASTĘPNE >></font></a> </center>";
  10. }
  11. ?>


Kicok pisał o co chodzi i co sie tu dzieje.
Go to the top of the page
+Quote Post
nevt
post
Post #12





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

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


kolego Manioo, prosze niezwłocznie dodać odbowiednie znaczniki BBcode do wszystkich swoich postów albo temat zostanie zamknięty!
Go to the top of the page
+Quote Post
Manioo
post
Post #13





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.06.2008

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


Odnośnie bbcode już rozumiem i zastosowałem się do tego.

Jesteście świetni wszystko działa dzięki powyższemu skryptowi!!

Mam jeszcze jedno pytanie jak by to zrobić gdyby po kliknięciu na zdjęcie w danej kategorii po kliknięciu w nastepne czy poprzednie wyskakiwały zdjęcia tylko z danej kategorii a nie z całej bazy?
Go to the top of the page
+Quote Post
erix
post
Post #14





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Dodaj do WHERE warunek sprawdzający kategorię. ;]
Go to the top of the page
+Quote Post
Manioo
post
Post #15





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.06.2008

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


Mógłbyś to dodać do powyższego kodu to byś pomógł bardzo oraz aby wyświetlało także nazwę kategorii przeglądanego zdjęcia


nazwa tabel:
ZDJECIA: ID, KATEGORIA (NUMER ID Z KATEGORII), TYTUL, OPIS, OCENA, itd.
KATEGORIE: ID, NAZWA

PRoszę o pomoc (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?
Chodzi o to żeby po wybraniu zdjęcia wyświetla je i poniżej są linki POPRZEDNIE NASTĘPNE wszystko działa ale zdjęcia przeglądają się wszystkie z całej bazy, a mi chodzi żeby tylko z wybranej kategorii wyświetlonego zdjęcia. Jak dokładnie zmienić powyższy kod napisany przez ppp v??

Ten post edytował Manioo 11.06.2008, 21:06:32
Go to the top of the page
+Quote Post
erix
post
Post #16





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  1. WHERE id=23948 AND kategoria=23434


?
Go to the top of the page
+Quote Post
Manioo
post
Post #17





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.06.2008

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


ok działa (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) , a jak żeby wyświetlić nazwę tej kategorii np. Wyświetlana kategoria:


nazwa kategorii zapisana jest w innej tabeli pod nazwą kategorie tak jak podalem w poprzednim tekscie

Oto w tej chwili działający skrypt:

Kod
<?php
$aktualne = mysql_fetch_assoc(mysql_query("SELECT * FROM linki WHERE  id='$zo_d1[id]' and kategoria='$zo_d1[kategoria]' "));
$poprzednie  = mysql_fetch_assoc(mysql_query("SELECT * FROM linki WHERE id<'$zo_d1[id]' and kategoria='$zo_d1[kategoria]' ORDER BY id DESC LIMIT 1"));
$nastepne = mysql_fetch_assoc(mysql_query("SELECT * FROM linki WHERE id>'$zo_d1[id]' and kategoria='$zo_d1[kategoria]' ORDER BY id ASC LIMIT 1"));
if ($poprzednie) {
     echo "<a href=\"$adres/z/$poprzednie[id]/$gl_tablink/\"><font  color=\"#FF4000\"><< POPRZEDNIE</font></a>  </center>";
}
?>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:history.back();" onclick><font size="2" color="lime"><b>POWRÓT</b></font></a>
<?php
if ($nastepne) {
     echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"$adres/z/$nastepne[id]/$gl_tablink/\"><font  color=\"#FF4000\">NASTĘPNE >></font></a>  </center>";
}

?>


Ten post edytował Manioo 11.06.2008, 21:06:08
Go to the top of the page
+Quote Post
erix
post
Post #18





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  1. JOIN

;]
Go to the top of the page
+Quote Post
Manioo
post
Post #19





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.06.2008

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


Czytałem na temat JOIN w google lecz nadal nie wiem jak tego użyć by wywołać nazwę kategorii w dowolnym miejscu (nic mi nie wychodzi). Proszę o krótki kodzik.



Dla podpowiedzi: gdy podaje poniższe dane wyświetla się numer kategorii zamiast nazwa. Teraz należy polaczyc sie z druga tabela o nazwie KATEGORIE gdzie mamy ID i NAZWĘ. No i należy pobrać tę nazwę z ID czyli $zo_d1[kategoria] - pod tą zmienną jest ID kategorii. Lecz nazwa tej kategorii jest w innej tabli o nazwie KATEGORIEE gdzie jest ID i NAZWA

Motam się nie mogę sobie poradzić. PRoszę o pomoc jak wyświetlić tę nazwę bo nie mogę sobie poradzić z tym JOIN.

Kod
<?php echo"$zo_d1[kategoria]"; ?>




PS. Zadanie powinno być dla doświadczonych z sqlem proste, więc zadam trudniejsze jak coś. Wyświetlić kategorię która jest obecnie wyświetlana lecz w polu wybieralnym. Gdzie w każdym momencie można wybrać inną kategorię.

Ten post edytował Manioo 12.06.2008, 16:10:41
Go to the top of the page
+Quote Post
erix
post
Post #20





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
PS. Zadanie powinno być dla doświadczonych z sqlem proste, więc zadam trudniejsze jak coś. Wyświetlić kategorię która jest obecnie wyświetlana lecz w polu wybieralnym. Gdzie w każdym momencie można wybrać inną kategorię.

Zaliczenie, czy jak?

http://www.google.com/search?hl=pl&cli...=Szukaj&lr=

...
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 - 10:59