2014-12-16 1 views
0

У меня возникают проблемы с двумя вещами в моей ленте новостей.как пропустить записи, которые являются NULL в MySQL

Я пытаюсь получить ленту новостей, чтобы показать все записи базы данных, но некоторые не имеют даты, потому что они представляют собой какие-то прикрепленные новостные ленты, которые не связаны с датой. но проблема в том, что она по-прежнему толкает строку ввода/пустого для них. Как я могу сделать свой канал, просто пропустив столбец даты, если в этом id нет записи о дате, но все же показывают новости?

и второй вопрос, как я могу добавить класс span к дате, возвращающейся в фид?

это мой код для загрузки базы данных:

<?php 
       // Grab the data from our people table 

       $sql = "SELECT * FROM news ORDER BY ID DESC"; 
       $result = mysql_query($sql) or die ("Could not access DB: " . mysql_error()); 

       while ($row = mysql_fetch_assoc($result)) 
       { 
        echo "<div class=\"newsstory\">"; 
        echo "<p>"; 
        echo $row['date'] . " " . "<br />"; 
        echo $row['news']; 
        echo "</p>"; 
        echo "</div>"; 
       } 


      ?> 

спасибо за помощью, ребята!

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

<?php 

// Call our connection file 
require("includes/conn.php"); 

$date=$_POST['date']; 
$news=$_POST['news']; 

$query="Insert into news (date, news) values ('$date', '$news')"; 

mysql_query($query) or die ('error updating database'); 


echo "database updated with '$date', '$news'"; 
?> 
+2

Первая вещь, прекратить использование 'функции mysql_' и переключиться в режим PDO или MySQLi. –

+0

...и подготовленные заявления! – Strawberry

ответ

2

Просто замените

echo $row['date'] . " " . "<br />"; 

с

echo !empty($row['date']) ? ("<span>". $row['date'] . " </span><br />") : ''; 

Таким образом, вы будете по-прежнему показывать все новости, но дата строка будет отображаться только новости, имеющие не нулевую дату.

+0

Это приводит к показу всех сообщений, но нет даты в той, у которой есть запись, и показывая класс span на тех, у которых нет даты ... – FGOD

+0

Соответственно отредактировал мой ответ. Надеюсь, я хорошо понял. –

+0

, когда я пытаюсь это сделать, он не отображает дату в промежутке, но слово foo ..., другое, что он работает, как я тоже хочу;) – FGOD

0

Просто добавьте условие в цикле:

EDIT

Основано на комментарии к ОП.

while ($row = mysql_fetch_assoc($result)) { 
    $date = "No date"; 
    if (!empty($row['date'])) { //Check here 
     $date = $row["date"]; 
    } 
    echo "<div class=\"newsstory\">"; 
    echo "<p>"; 
    echo "<span>" . $date . "</span> " . "<br />"; //Added span 
    echo $row['news']; 
    echo "</p>"; 
    echo "</div>"; 
} 
+0

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

+0

Я думал, что вы хотите пропустить всю строку ... См. Мой отредактированный ответ. – vaso123

+0

что-то вроде этого, но затем без даты и просто пропуская всю строку с дисплея;) – FGOD

0

Попробуйте ниже: -

while ($row = mysql_fetch_assoc($result)) 
{ 
    if($row['date'] != ""){ 
    ------------------ 
    ------------- 
    } 
} 
0

Вы спрашиваете за это ??

if($row['date']!="") 
{ 
echo $row['date'] . " " . "<br />"; 
} 
0

Просто обернуть

if (!is_null($row['date'])) {} 

Вокруг даты эхо

+0

он по-прежнему показывает пробел и входит в пустое место в дату, когда ничего не введено ... , если в моем сценарии загрузки не возникнет проблема, которая может загрузить что-то, пока в текстовом поле ничего не будет введено при загрузке это ... Я добавлю сценарий загрузки к моему npost, чтобы вы могли взглянуть на это – FGOD

0
SELECT * FROM news WHERE date IS NOT NULL ORDER BY ID DESC 

-для пропуская всю строку с NULL значением на date.

повтор date IS NOT NULL для каждого столбца нужно

+0

, что приводит к этой ошибке: Не удалось получить доступ к БД: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «WHERE date IS NOT NULL» в строке 1 – FGOD

+0

Я обновил запрос. Попробуй это. –

0

если вы взяли тип данных колонки даты в качестве даты, чем если дата не входя, чем его запись по умолчанию хранится в таблице 0000-00-00, вот почему я добавил условием для этого .. Попробуйте один раз, безусловно, вы получите идеальный выход, что вы хотите

while ($row = mysql_fetch_assoc($result)) 
 
{ 
 
    $ddate=$row['date']; 
 
    if($ddate!='' || $ddate!=NULL || $ddate!='0000-00-00') 
 
    { 
 
\t echo "<div class=\"newsstory\">"; 
 
\t echo "<p>"; 
 
     echo "<div class='span'>".$row['date']."</div><br />"; \t //comment if below line you uncomment 
 
\t //echo "<span>".$row['date']."</span><br />"; \t //uncomment if you want span tag instead of div with span class 
 
     echo $row['news']; 
 
\t echo "</p>"; 
 
\t echo "</div>"; 
 
    } 
 
}

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