2015-07-31 5 views
0

У меня есть код:Хотя, если и остальное условия

while($res = mysql_fetch_array($rst)) 
     if(($res)==TRUE) 
     echo "$res[2]"; 
     else 
     echo "<img src='imagini/banner.png'>"; 

Первое эхо он показывает мне выход, когда у меня есть результаты. Второе эхо не показывает изображение, если условие ложно. Любая помощь, пожалуйста? :) Спасибо.

+1

Почему вы проверка '$ res', как верно в случае ? Он будет/всегда должен быть истинным в цикле. За исключением вашего кода, вы назначаете первый цикл false, когда у вас нет результатов ... поэтому, поскольку вы не проверяете правильность перед его назначением, вы получаете ложь в первом цикле. – ArtisticPhoenix

ответ

1

Несколько форматирования вещи, которые я бы исправить, что увеличивает читаемость

while($res = mysql_fetch_array($rst)) 
    if(($res)==TRUE) 
    echo "$res[2]"; 
    else 
    echo "<img src='imagini/banner.png'>"; 

Для этого

while(false !== ($res = mysql_fetch_array($rst))){ 
    if($res[2] == true){ // or isset($res[2]) ? 
     echo "$res[2]"; 
    }else{ 
     echo "<img src='imagini/banner.png'>"; 
    } 
} 

Начнём сверху. mysql_fetch_arrayhttp://php.net/manual/en/function.mysql-fetch-array.php ~ возвращает массив или false.

Затем мы оцениваем его против false и присваиваем его значение $ res. Следующий дополнительный () вокруг $res бессмыслен, даже проверять здесь. Вероятно, ваша проблема имеет значение меньше, она никогда не войдет в цикл как false, поэтому внутри цикла $res никогда не будет ложным. Последнее добавление правильного отступов и {brackets}.

В действительности вы, вероятно, собираетесь это?

if(mysql_num_rows($rst)){ 
    while(false !== ($res = mysql_fetch_array($rst))){   
     echo $res[2];  
    } 
}else{ 
    echo '<img src="imagini/banner.png">'; 
} 

В эквивалентных PDO

if($stmt->rowCount()){ 
    while(false !== ($res = $stmt->fetch(PDO::FETCH_NUM))){   
     echo $res[2];  
    } 
}else{ 
    echo '<img src="imagini/banner.png">'; 
} 

челобитной внимание mysql_ * семейство функций амортизируются от PHP5.5 http://php.net/manual/en/book.pdo.php

+0

Предупреждение Это расширение устарело с PHP 5.5.0 и будет удалено в будущем. Вместо этого следует использовать расширение MySQLi или PDO_MySQL. См. Также MySQL: выбирая руководство по API и связанные с ним FAQ для получения дополнительной информации. Альтернативы этой функции включают в себя: – Emz

+0

@ Emz - да есть эта маленькая деталь – ArtisticPhoenix

+0

@BogdanConstantinescu - рад, что я мог бы помочь. Как сказал Эмз, семейство функций mysql_ обесценивается, что означает, что они будут удалены из php (я думаю, в PHP 7), если вы изучаете PHP, тогда я бы посмотрел PDO или mysqli, но PDO является предпочтительным способом в наши дни. – ArtisticPhoenix

1

Скорее всего, здесь находится относительный путь. Убедитесь, что он правильно установлен.

EDIT

Хотя путь, что может быть проблема, это не самый большой здесь.

То, что вы, скорее всего, хотите либо:

// this tests if there are zero or more rows in your result 
if (mysql_num_rows($rst)==0) 
{ 
    echo "<img src='imagini/banner.png'/>"; 
} 
else 
{ 
    while ($res=mysql_fetch_array($rst)) 
    { 
     echo $res[2]; 
    } 
} 

или

// this tests, for each row, if a column is set or not 
while ($res=mysql_fetch_array($rst)) 
{ 
    // index is the index of the column that can be set or not 
    if (empty($res[index])) 
    { 
     echo "<img src='imagini/banner.png'/>"; 
    } 
    else 
    { 
     echo $res[2]; 
    } 
} 

Кроме того, вы, кажется, чтобы получить <img> тегов из базы данных, так как у вас есть по умолчанию <img> тег в качестве альтернативы. Если $res[2] имеет этот шаблон <img src='some_path'/>, возможно, вы можете изменить содержимое базы данных, чтобы сохранить только относительный путь (без тега) и повторить тег в цикле while.

+0

Я пробовал также эхо «ТЕКСТ»; во втором эхо, просто для проверки, и он не работает. Спасибо за быстрый ответ. :) –

+0

@BogdanConstantinescu Что делает ваш тест на самом деле? $ res должно быть истинным всегда в вашей ситуации (поскольку цикл не будет выполняться, если $ res установлен в FALSE или эквивалентные значения). Возможно, вы хотите проверить, установлен ли какой-либо элемент $ res (или TRUE). – cobarzan

+0

Мои тесты IF, если моя база данных имеет значение в столбце. Если он есть, он должен показать другое значение из этой строки. Если проверенное значение отсутствует, второе эхо должно показывать изображение. –

0

Попробуйте переключить if и else, чтобы вы могли видеть, связано ли это с вашим выводом или если он не достигает другого.

if(($res)==FALSE) 
    echo "<img src='imagini/banner.png'>"; 
+0

Я сделал следующий переключатель, и он показывает мне изображение: if (($ res) == TRUE) echo ""; –

+0

Скорее всего, не удается достичь другого состояния. –

+0

np, только если это поможет немного –

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