Jak zapisać ten kod, aby nie było błędu i wyświetlały się zdjęcia ?

0

Problem polega na mieszaniu kodu php z html w pętli. Wybija błąd. Jak obejść to i napisać działający kod ? Dziękuję za pomoc.

<?php

if ( $product_id == 1  ) {

	<img src="imgs/camera.jpg" width="500" height="500" alt="Digital Camera">
	
	};


if ( $product_id == 2  ) {

	<img src="imgs/watch.jpg" width="500" height="500" alt="Digital Camera">
	
	};
 
?>

3

Ogólnie to ten kod ma wieeeeeele do poprawienia, ale taka podstawowa uwaga: jak chcesz "wypluć" w kodzie PHP jakieś dane do przeglądarki to skorzystaj z funkcji echo.

Czyli wewnątrz if'ów daj coś w stylu

echo '<img src="imgs/camera.jpg" width="500" height="500" alt="Digital Camera">';

Aczkolwiek to jest taka prowizorka, bo ogólnie to zupełnie inaczej powinieneś to zrobić. Ale mam wrażenie, że jeszcze nie jesteś na odpowiednim poziomie, więc póki co skupmy się na tym, żeby to jakkolwiek działało ;)

2

Istnieje też możliwość użycia składni php wewnątrz znaczników html

<div class="app">
  <?php if ($product_id === 1): ?>
    <img src="..." alt="..." width="..." height="...">
  <?php elseif ($product_id === 2): ?>
    <img src="..." alt="..." width="..." height="...">
  <?php else: ?>
    <p>Nie można wyświetlić zdjęcia</p>
  <?php endif; ?>
</div>
0

Istnieje też możliwość użycia składni php wewnątrz znaczników html

Owszem, ale to jest takie samo kowalstwo artystyczne i prowizorka, co zaproponowane przeze mnie ratowanie if'ów przez dodawanie echo ;)
Chociażby - spróbuj to teraz rozbudować i dodać wariant trzeciego albo piątego obrazka.
Pomijam takie rzeczy, że mamy tutaj miks logiki i prezentacji, nierozdzielone warstwy, brak abstrakcji.
Ale - jak pisałem wcześniej - w tym przypadku można jedynie doraźnie łatać dziury, bo powinno to być napisane zupełnie inaczej. I obawiam się, że raczej autor wątku nie jest jeszcze na takim poziomie, żeby był sens go w te tematy wprowadzać :(

0
atemi napisał(a):

Jak ... i napisać działający kod ? Dziękuję za pomoc.

Może jednak cos przeczytać na początek, a nie wklejać przypadkowe fragmenty *) "widziane przez ramię"?
Nie ma za co

*) ob...ne przypadkowymi tagami

cerrato napisał(a):

Ogólnie to ten kod ma wieeeeeele do poprawienia

Powiedziałbym że jedyny fragment, który się ostoi to <?php

2

Jak masz php 8 to mozna to zrobic tez tak:

<?php

declare(strict_types=1);

function getProductImage(int $productId): string
{
    return match ($productId) {
        1 => 'camera.jpg',
        2 => 'watch.jpg',
        default => 'image_placeholder.jpg',
    };
}

$productIds = [1, 2];

foreach ($productIds as $id) {
    echo sprintf('<img src="imgs/%s" width="500" height="500" alt="Digital Camera" />', getProductImage($id));
}

Na pewno będzie łatwiejsze w utrzymaniu, niż drabinka ifów

1 użytkowników online, w tym zalogowanych: 0, gości: 1