2015-03-01 5 views
0

Уже решено. Я просто использовал WHERE MONTH(due_date) = $month в предложении SQL. Никогда не знала, что так будет. Спасибо за ваш ответ!Сравнить значение для каждой строки в таблице базы данных

У нас есть таблица под названием bills. Мы не удаляем счет, даже если он уже оплачен для целей записи.

Таким образом, наша цель - показать только The Bills for this Month. У меня есть $cur_month = current month value. Я знаю, как извлечь значение месяца из поля, используя MONTH(), используя цикл для запуска по таблице, но когда я пытаюсь сделать echo MONTH(date), значение, отображаемое в отображаемой серии, равно только MONTH VALUE первой строки. Кажется, ему не удалось получить MONTH VALUE других строк.

Фиксированный ниже код

$query = "SELECT * FROM bill WHERE MONTH(due_date)=$month"; 
$bresult = mysql_query($query); 

while($brow = mysql_fetch_array($bresult, MYSQL_ASSOC)) 
{ 
    $bdata = mysql_fetch_assoc(mysql_query("SELECT MONTH(due_date) AS M FROM `bill`")); 
    if($bdata['M'] == $month) 
    { 
     echo "<tr>"; 
     echo "<td>".$brow['room_id']."</td>"; 
     echo "<td>".$brow['tenant_id']."</td>"; 
     echo "<td>".$brow['due_date']."</td>"; 
     echo "</tr>"; 
    } 
} 

$month есть держатель текущего месяца

$bdata['M'] есть держатель месяца извлеченного. Мы просто отобразили его, чтобы проверить.

Так что если extracted_month является equls к current_month затем display bill

Я надеюсь, что вы можете помочь мне в этом.

PS: Все еще любитель. Это еще не интернет-сайт. Нам нужна помощь только для того, чтобы она работала.

+1

Почему бы не использовать предложение WHERE в вашем первом SQL, чтобы только ВЫБРАТЬ счета в этом месяце? – Philip

+0

Цикл должен быть выполнен по запросу 'SELECT MONTH (due_date) AS M FROM' bill'' и WHERE поможет, поскольку Филипп сказал –

+0

ГДЕ МЕСЯЦ (due_date) = $ month ?. Кажется, это не работает. Ничего не отображается или что-то еще. Или дерьмо. Мы не добавили фиктивный счет для марша ахаха. Дай мне попробовать снова – iamDevlin

ответ

0

1) Используйте инструкцию WHERE в вашем первом SQL, чтобы извлекать эти строки из таблицы.

Как это:

$query = "SELECT *, MONTH(due_date) as M FROM bill WHERE MONTH(due_date)=" . $month; 
$bresult = mysql_query($query); 

while($brow = mysql_fetch_array($bresult, MYSQL_ASSOC)) { 
    echo "<tr>"; 
    echo "<td>".$brow['M']."</td>"; 
    echo "<td>".$brow['tenant_id']."</td>"; 
    echo "<td>".$brow['due_date']."</td>"; 
    echo "</tr>"; 
} 

2) Я считаю, что хорошая практика, чтобы всегда проверять, если создается объект результата, и если это так, чтобы проверить, если он вернулся матчи (с mysql_num_rows($result)). Таким образом, вы можете показать ошибку, если что-то пойдет не так (скорее всего, в SQL-заявлении) или покажите пользователю, что нет совпадений (в этом случае счета).

3) Попробуйте использовать MYSQLI для подключения к вашей базе данных вместо MYSQL, так как последний устарел. (Пример: http://php.net/manual/en/mysqli-result.fetch-assoc.php).

0

Попробуйте решить эту проблему с помощью SQL.

ВЫБРАТЬ b.amount_paid ИЗ счетов б ГДЕ МЕСЯЦ (b.due_date) = 3

Используя результат этого запроса вы бы все суммы за этот месяц. Суммируйте свой результат, и все готово.

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