Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]brak obrazka
Forum PHP.pl > Forum > Przedszkole
eminiasty
Witam, problem dotyczy wyswietlania obrazka defaultowego dla newsa ktory tego obrazka nie ma wrzuconego.

probowalem to rozwiazac tak:

  1. $query2 = "
  2. SELECT sos_news.*,sos_image.* FROM sos_news
  3. LEFT JOIN sos_news_image
  4. ON sos_news.news_id = sos_news_image.news_id
  5. LEFT JOIN sos_image
  6. ON sos_image.image_id = sos_news_image.image_id
  7. WHERE sos_image.image_main = '1' AND sos_news_image.news_id = '".$r['news_id']."'
  8. ";


$r['news_id'] - id newsa


  1. while($row = mysqli_fetch_assoc($result2)) {
  2. //echo"<td><img class='img-responsive' src='images/default.jpg' alt='obrazek' width='80' height='80' /></td>";
  3. echo'<pre>';
  4. print_r($row);
  5. echo'</pre>';
  6. if (!empty($row['news_id'])) {
  7. echo"<td><img class='img-responsive' src='upload/news/".$row['image_name_code']."' alt='obrazek' width='80' height='80' /></td>";
  8. }
  9. else
  10. {
  11. echo"<td><img class='img-responsive' src='images/default.jpg' alt='obrazek' width='80' height='80' /></td>";
  12. }
  13. }


Problem w tym ze wykonuje sie if , a else juz nie? Czyli obrazki przy newsach ktore go maja sie wyswietlaja , lecz te ktore ich nie maja (obrazek default.jpg) nie wyswietla sie?

Ma ktos pomysl jak to rozwiazac?


Pomysl 2 byl taki zeby dodawac informacje w bazie o obrazku przy wrzucaniu newsa. w tabeli zlaczen z obrazkami. np news id 5550 dostaje id obrazka defaultowego ( kiedy nie wrzucamy rzadnego obrazka) ale chcialem znalesc rozwiazanie bez uzycia bazy danych.
trueblue
Wrzucasz .htaccess do katalogu z obrazkami:

Kod
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} \.(gif|jpg|jpeg|png|bmp)$ [NC]
RewriteRule (.*) /katalog/default.jpg [L]


Jeśli nie istnieje żądany plik i ma rozszerzenie jedno z podanych, to podstaw default.jpg
eminiasty
no niby fajny ale na te pliki tylko tak na localhost sa w celach nauki wykorzystywane a tu jakos mi htaccess nie dziala, nie da sie tego jakos w kodzie zrobic?
trueblue
is_file($sciezka)

http://php.net/manual/en/function.is-file.php
eminiasty
no ok..
ale niby jak mam tego uzyc?

To dziala tak:
Przypadek 1:
- wrzucam ogloszenie z obrazkiem , wiedy moge sprawdzic czy sciezka jest czy jej nie ma

Przypadek 2:
-wrzucam ogloszenie BEZ OBRAZKA, i nie ma tej sciezki, obrazka nie ma w bazie, nie ma informacji o czyms co nie istnieje -> wiec chyba nie moge uzyc tej funkcji
-Jak zachowac sie w tej sytuacji i podstawic obrazek z jakiejs tam lokacji(obrazek domyslny)

Przypadek 1 umiem rozwiazac , chodzi mi o przypadek 2
trueblue
Gdzie masz informacje w rekordzie, że ten ma lub nie ma obrazka? Dlaczego else miałby się wykonać skoro sprawdzasz id newsa?
Jeśli pole image_name_code, to informacja o obrazku lub braku, to sprawdzaj tą wartość. Przy czym ta wartość jeszcze o niczym nie mówi, bo pole może być wypełnione, ale fizycznie brak pliku. is_file może tu pomóc.
trueblue
Skoro image_name lub image_name_code przechowują nazwę obrazka, to dodatkowe pole nie jest potrzebne.
eminiasty
dodatkowe pole? czyli jak to rozwiazac , wedlug ciebie?

Wiem ze jest cos takiego jak array_key_exists() ale nie wiem ajk to wykrozystac tutaj
trueblue
Jak rozwiązać brak potrzeby dodatkowego pola? Nie dodawać go.
eminiasty
no rozumiem...

jest obrazek czyli image_name jest zapisywana nazwa
nie am obrazka czyli image_name = null? tak to mam rozumiec?
przeciez gdy nie ma obrazka pole image_name chyba sie nie tworzy
trueblue
Kiedy nie ma obrazka nie ma w tablicy wartości z kluczem image_name? Przecież wyżej pokazałeś taki przykład.
eminiasty
no jest jak wyzej, tylko nie wiem jak to obsluzyc ;/
trueblue
Analogicznie do tego i zamiast tego:
  1. if(!empty($row['news_id'])) {
eminiasty
  1. if(!empty($row['image_name'])) {


to by byla analogia .. lecz to nie zaskoczy
freewalker
else nie wykonuje ci się, bo news_id nie jest empty, jak przyjmuje wartość 0 to wtedy zawsze wykona ci if, zmień to lepiej na:

  1. if($row['news_id']>0) {


o ile news_id przyjmuje wartości liczbowe.
Natomiast, jeśli chcesz wyświetlić defaultowy obrazek, jak nie ma akurat jakiegoś konkretnego to zrób:

  1. if(!file_exists($mojplik)) echo $defaultowyplik;


(niekoniecznie echo, przypisz do jakiejś zmiennej jak nie wyświetlasz w kodzie tam adresu obrazka)
eminiasty
$mojplik -> to niby $row['image_name']? no raczej nie skoro bez obrazka to jest puste
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.