Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapytanie mysql w deklaracji funkcji
herne
post 12.07.2012, 11:57:50
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 13.06.2012

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


Witam, mam pewien problem z dodaniem pewnego elementu do działającego projektu php/mysql.

Mam funkcję, która ze znajdującej się w bazie mysql sygnatury wyciąga unikalny numer, który służy dalej do wyświetlania obrazka mającego ten sam numer. Jeśli chodzi o funkcję i generalnie cały projekt - wszystko działa prawidłowo. Teraz chciałem dodać podpis pod obrazkiem, oczywiście wzięty z odpowiedniego rekordu o takim samym numerze jak numer obrazka w bazie mysql... i nie mogę ruszyć do przodu. Zapytanie pobierające opis działa jeśli wpisać je poza funkcją i z podaną ręcznie wartością (numerem), ale wtedy nie mogę umieścić go pod obrazkiem. Gdzie robię błąd?

  1. FUNCTION obrazki($zmienna) {
  2.  
  3. if(($id = strpos($zmienna, '-')) !== false)
  4. {
  5. $nr_zd = substr($zmienna, $id + 1);
  6. }
  7.  
  8. $nr_zdjecia = explode("/", $nr_zd);
  9.  
  10. $plik = "duze/$nr_zdjecia[0].jpg"; //deklaracja ścieżki do pliku
  11. $test = file_exists($plik); //sprawdzenie czy plik istnieje
  12.  
  13. if (!$test) //jeżeli plik nie istnieje (zmienna $test=FALSE)
  14. {
  15. echo ("<a href='max.php?q=$nr_zdjecia[0]'><div id='img'><img src='images/brak.gif' alt='Brak obrazka na serwerze'></div></a>"); //informacja o braku pliku na serwerze
  16. }
  17. else
  18. {
  19. echo ("<a href='max.php?q=$nr_zdjecia[0]'><div id='img'><img src='m$nr_zdjecia[0].html' alt='Zdjęcie nr $nr_zdjecia[0]';><br>");
  20.  
  21. $podpis_miniatury = mysql_query("SELECT $opis FROM $tabela WHERE $nr LIKE '$nr_zdjecia[0]'"); //<<<<<<<<<<<<<<<TO JEST FUNKCJA MAJĄCA WYŚWIETLIĆ PODPIS>>>>>>>>>>>>>>>>>>>
  22. echo $podpis_miniatury;
  23.  
  24. echo ("</div></a>");
  25. }
  26. }


WYWOŁANIE FUNKCJI W DALSZEJ CZĘŚCI

  1. while ($row=mysql_fetch_array($wynik, MYSQL_BOTH)) {
  2.  
  3. echo ("");
  4. echo (obrazki($row[10]));
  5. echo ("");
  6.  
  7. }
  8.  
  9. echo ("</div>");


Mam nadzieję że to, co napisałem, jest w miarę zrozumiałe.
Go to the top of the page
+Quote Post
piotrex41
post 12.07.2012, 13:25:59
Post #2





Grupa: Zarejestrowani
Postów: 168
Pomógł: 26
Dołączył: 15.09.2011
Skąd: Wrocław

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


A może tak?
  1. $podpis_miniatury = mysql_query("SELECT `opis` FROM `tabela` WHERE `nr` = '".$nr_zdjecia[0]."'");


--------------------
www.piotrex41.pl - piotrex41 portfolio
d(-.-)b - Music is my life || PHP is my passion
Go to the top of the page
+Quote Post
herne
post 12.07.2012, 14:29:45
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 13.06.2012

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


To nic nie daje - zapis w takiej formie jak moja, czy też w apostrofach, daje dokładnie taki sam rezultat.
Już wcześniej napisałem, że moja wersja działa jeśli umieścić ją poza funkcją, ale chodzi o to, że to w niej generowany jest kod, który umożliwia wyświetlanie obrazków, a to właśnie pod nimi (każdy obrazek w osobnym divie) chcę dodawać podpisy. Jeśli zamiast tego zapytania wstawię zwykłe
  1. echo $nr_zdjecia[0];

to pod każdym zdjęciem wyświetli się jego numer, ale ja chcę opis wyciągany przez zapytanie z bazy...
Go to the top of the page
+Quote Post
piotrex41
post 12.07.2012, 14:40:27
Post #4





Grupa: Zarejestrowani
Postów: 168
Pomógł: 26
Dołączył: 15.09.2011
Skąd: Wrocław

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


To czemu nie dopiszesz pobierania opisu z bazy do zapytania pobierającego numer zdjęcia? Przecież to jedna tabela (o ile się nie mylę), więc spokojnie możesz pobrać obie dane jednym zapytaniem.


--------------------
www.piotrex41.pl - piotrex41 portfolio
d(-.-)b - Music is my life || PHP is my passion
Go to the top of the page
+Quote Post
mmmmmmm
post 12.07.2012, 15:00:20
Post #5





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Pewnie gdybyś wyświetlił mysql_error() to byś wiedział o co chodzi. Sądzę, że o widoczność zmiennych globalnych w funkcji...
Go to the top of the page
+Quote Post
herne
post 16.07.2012, 13:07:52
Post #6





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 13.06.2012

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


W weekend się tym nie zajmowałem, dziś próbowałem na nowo... ciągle nie mogę tego ugryźć. Jeśli dodam zapytanie w funkcji, to nic się nie pojawia (błędnego także), więc prawdopodobnie wynik jest, ale pusty; przy dodaniu zapytania poza funkcją, jako wynik pokazuje się komunikat o niezdefiniowanej zmiennej, czyli funkcja działa "sobie", nie pobierając zmiennych z reszty kodu. Pewnie tak właśnie powinno być, ale szukam sposobu żeby to połączyć.
Go to the top of the page
+Quote Post
franki01
post 16.07.2012, 13:23:28
Post #7





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

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


Błąd na błędzie.

1.
  1. $podpis_miniatury = mysql_query("SELECT $opis FROM $tabela WHERE $nr LIKE '$nr_zdjecia[0]'");

Nigdzie nie masz zadeklarowanej zmiennej $opis, $nr i $tabela. Jeżeli masz to ustawione poza funkcją, użyj:
  1. global $opis, $tabela, $nr;

Jeżeli mają to być pola, zapytanie powinno wyglądać tak:
  1. $podpis_miniatury = mysql_query("SELECT `opis` FROM `tabela` WHERE `nr` LIKE '$nr_zdjecia[0]'");


2.
  1. echo $podpis_miniatury;

Tym sposobem wyświetalsz wynik mysql_query. Jeżeli jest pusty, zapewne wynosi false, ponieważ mysql_query zwrócił błąd. Zamiast tej linijki, powinieneś jeszcze użyć mysql_fetch_assoc():
  1. $podpis_row = mysql_fetch_assoc($podpis_miniatury);
  2. echo $podpis_row['podpis'];
Go to the top of the page
+Quote Post
herne
post 16.07.2012, 14:20:10
Post #8





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 13.06.2012

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


Dostajesz "pomógł" bo w końcu po drobnej modyfikacji wg Twoich uwag w końcu zadziałało jak powinno.
Generalnie chodziło tylko o te dwie linijki:
  1. $podpis_row = mysql_fetch_assoc($podpis_miniatury);
  2. echo $podpis_row['opis'];

Wielkie dzięki!
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: 28.07.2025 - 01:16