2013-08-13 5 views
0

Сегодня утром один из этих мозгов угасает. У меня есть следующий PHP:PHP заменяет пустые изображения по умолчанию

$imgset = $result->fields[6]; 
if ($imgset = '') 
{ 
    $imgset = 'logo'; 
} 
else 
{ 
    $imgset = $result->fields[6]; 
} 
echo '<img id="imgdisp" src="/img/'.$imgset.'.jpg" />'; 
$imgset = ''; 

Где это выглядит, чтобы увидеть, если результат из базы данных является пустым, и если да, то следует положить в logo.jpg вместо того, что бы ни результата. Однако по какой-то причине он просто не хочет работать, и я, вероятно, полностью ослеп, но не понимаю, почему нет. Я по-прежнему получаю пустые изображения в HTML и имена файлов «/img/.jpg», как будто $ imgset все еще проходит через пробел. Значения также не являются NULL в SQL, они, безусловно, являются пустым записями, введенными из поля ввода, используя _POST в форме в другом месте.

Приветствия для любой помощи

Бен

+1

Я бы использовал 'if (empty ($ var))' для проверки этого значения. В любом случае, я бы не стал полагаться на эту ценность. Просто дайте PHP проверить, существует ли изображение на пути, к которому вы его передаете. если не отобразить резервное изображение. – Najzero

+2

'=' - оператор присваивания. '==' - оператор сравнения. –

ответ

6

Это:

if ($imgset = '') { 

Всегда ли установка $imgset опорожнить. Использование сравнения вместо:

if ($imgset == '') { 

Ваш еще также не требуется, поскольку в этом случае $imgset уже установлен как $result->fields[6];.

+0

Да, правильный мозг исчезает. Благодарю. Будете придерживаться этого как ответа за 4 минуты;) – bmgh1985

+0

@ bmgh1985 Случается для всех нас :). – Jim

1

Вы забыли сравнить с, если условия и вместо того, чтобы вы назначаете пустое значение $ imgset. if ($imgset = '') должен быть if ($imgset == '')

0

Использование троичного оператора это может быть сделано, как это:

echo '<img id="imgdisp" src="/img/'.(empty($imgset)?'logo':$imgset).'.jpg" />'; 

Более короткий код на стоимости читаемости.

2

Попробуйте проверить, если изображение существует в вашем пути, а

<?php 
    $imgset = $result->fields[6]; 
    if ($imgset) { 
     $imgset = $result->fields[6]; 
     $path ='pathtoimages'; 
     if(!file_exists($path.'/'.$imageset.'.jpg'){ 
     $imgset = 'logo'; 
     } 
    } 
    else 
    { 
     $imgset = 'logo'; 
     } 
    echo '<img id="imgdisp" src="/img/'.$imgset.'.jpg" />'; 
    ?> 
+0

Спасибо за эту идею улучшения. Мне не пришло в голову проверить путь (хотя это потому, что в моем случае изображения предварительно просматриваются перед отправкой данных изначально), но могут оказаться полезными в случае перемещения изображений, поэтому, вероятно, это тоже добавит. – bmgh1985

+0

Отсутствует закрывающая скобка здесь: '$ imageset. '. Jpg') {' Я пытаюсь исправить это, но «Редактирование должно быть не менее 6 символов»; советую снова всплыть :( – Katapofatico

1
$imgset = $result->fields[6]; 
if ($imgset == '') 
{ 
    $imgset = 'logo'; 
} 

echo '<img id="imgdisp" src="/img/'.$imgset.'.jpg" />'; 
$imgset = ''; 

вам не понадобится еще часть, как значение уже назначен в первом сообщении.

+0

Спасибо. Остальная часть была добавлена ​​только из-за того, что мой мозг исчез, и все они устанавливают их ', имея один = вместо 2. – bmgh1985

0

Это причина, почему лучше отменить условие:

if ('' = $imgset) 

привело бы к ошибке.

Ответ:

if ('' == $imgset) 
//or 
if (empty($imgset)) 
0

Если вы выбираете из MYSQL, вы можете использовать что-то вроде

SELECT *,COALESCE(image,"logo") AS image FROM .... 

Таким образом, когда результаты возвращаются и некоторые строки имеют значение NULL изображение, оно будет замените на «логотип», так что вам не нужна логика IF в вашем PHP :)

Смежные вопросы