• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Powiązanie wyświetlanego obrazka z zmiennymi zawartymi w BD

VPS Starter Arubacloud
+1 głos
1,039 wizyt
pytanie zadane 9 lipca 2015 w PHP przez Klubbers Początkujący (410 p.)

Mam problem w stworzeniu relacji między obrazkiem, który chcę wyświetlić na stronie a zmiennymi zawartymi w bazie danych. Obmyśliłem to w ten sposób, że gdy zmienna $obraz przyjmuje wartość 1, to chcę wyświetlić obrazek 1.jpg kiedy zmienna $obraz przyjmie wartość 2 wyświetlony ma być obraz 2.jpg. Próbowałem zrobić to za pomocą konkatenacji i kod wyglądał tak:

<?php 
$obraz=$_SESSION['obrazek'];          // zamiana zmiennych

echo  '<img src="img/$obraz .= .jpg"  style="height:160px; width:130px;">';   // wywołanie żądanego obrazka znajdującego się w folderze "img"

?>

Może źle wstawiłem cudzysłowia i apostrofy, ale próbowałem już chyba wszystkich kombinacji.

Drugim pomysłem było stworzenie kolejnej zmiennej, która będzie zawierać już nazwę i rozszerzenie pliku:

<?php
$obraz=$_SESSION['obrazek'];
$IMG="$obraz.jpg";
{
echo '<img src="img/$IMG" style="height:160px; width:130px;">';
} 
echo $IMG;
?>

Niestety i ten sposób nie działa. Wywołałem później zmienną $IMG i wyświetla się poprawna nazwa pliku wraz z rozszerzeniem, a obrazka dalej brak. Nie wiem co jest nie tak i czy można w ogóle zamieszczać zmienne w nazwie pliku/obrazka. Proszę o pomoc.

2 odpowiedzi

+2 głosów
odpowiedź 10 lipca 2015 przez Tnifey Pasjonat (24,190 p.)
wybrane 10 lipca 2015 przez Klubbers
 
Najlepsza

trochę mało informacji podałeś :) mógłbyś mniejwięcej podać powód dlaczego trzymasz nazwę obrazka w sesji?

i jeśli trzymasz obrazek w sesji to może nie wyświetla ci się ta zmienna :)

spróbuj wstawić na początku dokumentu z php 

<?php
ob_start();
# lub
session_start();
?>

 

może to pomoże jak nie to opisz bardziej swój problem :)

komentarz 10 lipca 2015 przez efiku Szeryf (75,160 p.)

Powinno działać po dodaniu session_start(); na początku pliku, jednkże trzeba też sprawdzić czy klucz "obrazek" istnieje bo będzie błąd o niezdefiniowanym indeksie. I tutaj trzeba też uważać na różnicę pomiędzy '' a "" w echo ;)

<?php
session_start()
if(!empty($_SESSION['obrazek']) ){
$obraz=$_SESSION['obrazek'] . '.jpg';
}
else{ 
 $obraz = 'default.jpg';
}
echo sprintf('<img src="img/%s" style="height:160px; width:130px;">', $obraz);
?>

 

komentarz 10 lipca 2015 przez Klubbers Początkujący (410 p.)
edycja 10 lipca 2015 przez Klubbers

Problem rozwiązany dzięki podpowiedzi efik. smiley Kod wygląda tak:

<?php 

$obraz=$_SESSION['obrazek'];
					
$Img=$obraz . '.jpg';
					
{
						
echo sprintf('<img src="img/%s" style="height:160px; width:130px;">' , $Img);
					
} 
				
?>

Nie trzeba sprawdzać, czy zmienna istnieje, ponieważ kod wykona się dopiero po zalogowaniu na konto użytkownika, a zeby się zalogować trzeba się zarejestrować. Zmienna jest ustalana w momencie rejestracji.

Dzięki za pomoc.

1
komentarz 10 lipca 2015 przez efiku Szeryf (75,160 p.)
@Klubbers , poczytaj o różnicy pomiędzy " " a ' '  w echo, to będziesz wiedział, dlaczego nie chciało działać. Hmm myślałem, że ten fragment kodu to cały plik jest także tego. Daj tu Panu naj ;)
komentarz 10 lipca 2015 przez Klubbers Początkujący (410 p.)
Wiem na czym polega różnica między apostrofami a cudzysłowami w echo. Apostrofy w echo wypisują wszystko tak jak leci, natomiast cudzysłowia wykonują też zmienną zawartą między tekstem.

Problem polegał na sposobie wyświetlenia obrazu na ekranie. Sama funkcja echo nie potrafiła ogarnąć polecenia, bo było zbyt dużo " ". Dzięki sprintf() nie trzebabyło  stosować tylu " " i echo zaskoczyło.
komentarz 10 lipca 2015 przez efiku Szeryf (75,160 p.)

 Apostrofy w echo wypisują wszystko tak jak leci, natomiast cudzysłowia wykonują też zmienną zawartą między tekstem.

A Ty od czego zacząłeś w echo jak nie od apostrofów? :-> (Wybacz, że tak męczę  Cię, ale chce byś zrozumiał ) Jak załapiesz już, to można zamknąć temat :)

<?php
$costam =3;
echo 'costam costam "$costam"' . PHP_EOL; // costam costam "$costam"

echo "costam costam '$costam'"  . PHP_EOL; // costam costam '3'

echo 'costam '. "costam $costam"  . PHP_EOL; // costam costam 3

 

0 głosów
odpowiedź 10 lipca 2015 przez Schizohatter Nałogowiec (39,600 p.)
Pierwszy sposób nie będzia działał, bo co to jest "$obraz.=.jpg"... Po prostu "$obraz.jpg"

Drugi nie będzie działał, ponieważ te klamerki nie są do niczego przypisane i kod się nie wykona.

Dodatkowo żaden z nich nie będzie działał, ponieważ przy echo '<img masz apostrof, a nie cudzysłów. No i zawsze możesz zobaczyć w źródle CTRL+U, co Ci trafia do kodu strony.

Podobne pytania

0 głosów
1 odpowiedź 118 wizyt
pytanie zadane 16 września 2018 w Offtop przez Layoutowiec Mądrala (5,470 p.)
–1 głos
2 odpowiedzi 188 wizyt
pytanie zadane 10 maja 2018 w SQL, bazy danych przez sapero Gaduła (4,100 p.)
0 głosów
1 odpowiedź 123 wizyt
pytanie zadane 8 kwietnia 2018 w SQL, bazy danych przez sapero Gaduła (4,100 p.)

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...