Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как сделать проверку есть ли ответ вопрос?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Как проверить есть ли ответ на твой вопрос?
pegass
Отправлено: 20 Января, 2011 - 13:09:59
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Пишу страницу для сайта в формате вопрос ответ.

Страница уже готов и всё работает более чем

Но как всегда есть одно но

Нужно что бы при отображении вопроса было видно есть уже ответ на этот вопрос или нет.

А сейчас получается так

посетитель видит вопрос - кликает по нему переходит на страницу с ответом но там пока ответа нет.


Так вот надо что бы было понятно есть ответ на вопрос или нет что бы н кликать зря Радость
вот так это выглядит

************
Как на Вашем сайте можно направить жалобу администрации?
прочитать ответ
20.12.2010
Здравствуйте,мне назначили ?
прочитать ответ
15.12.2010
Почему в вашем центре нет специалиста ?
прочитать ответ
03.12.2010

************

А хочется вот так
Как на Вашем сайте можно направить жалобу администрации?
прочитать ответ нет ответа
20.12.2010
Здравствуйте,мне назначили ?
прочитать ответ есть ответ
15.12.2010
Почему в вашем центре нет специалиста ?
прочитать ответ есть ответ
03.12.2010

Вся информация выводиться из базы
из таблицы FAQ

id text author data title mail user_n v

поле v имеет два значения
1 и 0
1 -есть ответ
0 нет ответа

вот код который отвечает за вывод вопросов

PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("SELECT *, DATE_FORMAT(dat, '%d.%m.%Y') AS data FROM faq    ORDER BY id DESC LIMIT 7 ",$db);
  2. $myrow2 = mysql_fetch_array($result);
  3.  
  4. $myrow3["v"]=$v;
  5. if ($v=1)
  6. {
  7.         $da='есть ответ
  8. }
  9.  
  10. else
  11.  
  12. {
  13. $no='нет ответа
  14. }
  15.  
  16. do
  17. {
  18.  
  19. printf ("<div  border='0'>
  20.  <tr>
  21.    <td>
  22.          <div  >
  23.          <a class='board_linc' href='faq_full.php?id=%s'>%s</a>
  24.          <br> <b><a class='board_linc' href='faq_full.php?id=%s'>
  25.          прочитать  ответ</a></b> </div>
  26.          <span id='board_cat_data'> %s </span>%s %s
  27.  
  28.                
  29.         </td>
  30.  </tr>
  31. </div>",$myrow2["id"],$myrow2["description"],$myrow2["id"],$myrow2["dat"],$da,$no);
  32.  
  33. }
  34.  
  35. while ($myrow2 = mysql_fetch_array($result));


И получается вот такой вот вывод
прочитать ответ
11.10.2010 Есть ответ
привет
прочитать ответ
11.10.2010 Есть ответ
привет
прочитать ответ
11.10.2010 Есть ответ


то етсь везде выводиться что етсь ответ.
а он етсь не везде.


никак не могу дорубить как сделать что бы
у строки в базе стоит значение 1 то вывести фразу есть ответ
а если у строки стотит 0 то вывести фразу нет ответа.


Отредактировано модератором: JustUserR, 21 Января, 2011 - 14:23:13
Обрамил PHP-код в соответствующие BB-теги
 
 Top
Мелкий Супермодератор
Отправлено: 20 Января, 2011 - 13:24:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




0) используйте while ($переменная = mysql_fetch_и_далее_по_тексту) {}
Цикл с постусловием здесь абсолютно лишний.
1) не используйте printf там, где это не требуется, он работает медленнее print и echo
2) у вас проверка на существование ответов не внесена в цикл, к тому же вообще неудачно выполнена.
В цикле вывода информации поставьте условие
PHP:
скопировать код в буфер обмена
  1. if (условие) echo "есть ответы";
  2. else echo "ответов нет";

3) if ($v=1) выполнится всегда, аналогично if (1).
= присваивает значение, сравнивает == и === с проверкой типа
4) переменная $v вообще нигде не объявлена, кроме явно ошибочного объявления в условии.

Сделайте

в начале кода - ошибок выплывет куча.


-----
PostgreSQL DBA
 
 Top
pegass
Отправлено: 20 Января, 2011 - 16:21:22
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Мелкий пишет:
0) используйте while ($переменная = mysql_fetch_и_далее_по_тексту) {}
Цикл с постусловием здесь абсолютно лишний.
1) не используйте printf там, где это не требуется, он работает медленнее print и echo
2) у вас проверка на существование ответов не внесена в цикл, к тому же вообще неудачно выполнена.
В цикле вывода информации поставьте условие
PHP:
скопировать код в буфер обмена
  1. if (условие) echo "есть ответы";
  2. else echo "ответов нет";

3) if ($v=1) выполнится всегда, аналогично if (1).
= присваивает значение, сравнивает == и === с проверкой типа
4) переменная $v вообще нигде не объявлена, кроме явно ошибочного объявления в условии.

Сделайте

в начале кода - ошибок выплывет куча.






Спасибо за развёрнутый ответ
вот такой получился код

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $result = mysql_query("SELECT *, DATE_FORMAT(dat, '%d.%m.%Y') AS dat  FROM faq    ORDER BY id DESC   ",$db);
  3.  
  4. while ($myrow2 = mysql_fetch_array($result))
  5.  
  6.  
  7. {
  8.        
  9.         if ($myrow2["v"]==1)
  10.         {
  11.         echo "<br>";
  12.         echo "<br>";
  13.         echo $myrow2["id"];
  14.         echo $myrow2["description"];
  15.         echo "<br>";
  16.         echo $myrow2["dat"];
  17.         echo "<b class='da'>есть ответ</b>  ";
  18.         echo "<b><a  href='faq_full.php?id=$myrow2[id]'>прочитать ответ</b></a><br>  ";
  19.    
  20.         }
  21.        
  22.        
  23. else
  24.             echo "<br>";
  25.                         echo "<br>";
  26.                         echo $myrow2["id"];
  27.                         echo $myrow2["description"];
  28.                         echo $myrow2["dat"];
  29.             echo "<b class='net'>нет  ответа </b>";
  30.                 echo "<br>";
  31.                 echo "<br>";
  32. }
  33.  




Вот то как он это выводит
121 вопрос
19.01.2011нет ответа
116 вопрос
09.01.2011нет ответа
115 Вопрос
24.12.2010есть ответ прочитать ответ
115 Вопрос
24.12.2010нет ответа
114 Вопрос
24.12.2010 есть ответ прочитать ответ
114 Вопрос
24.12.2010 нет ответа
113 Вопрос
20.12.2010 есть ответ прочитать ответ
113 Вопрос
20.12.2010 нет ответа
112 Вопрос
15.12.2010 есть ответ прочитать ответ
112 Вопрос
15.12.2010 нет ответа
109 Вопрос
03.12.2010 нет ответа
108 Вопрос
28.11.2010 нет ответа
106 Вопрос
18.11.2010 нет ответа
105 Вопрос
17.11.2010 нет ответа
104 Вопрос
17.11.2010 нет ответа

Очень странное происходит
некоторые вопросы выводятся из базы по два раза
один раз цикл говорит что ответ есть
а в другом ответа нет

в базе id у всех записей разный!!!

НА те вопросы у которых есть ответ он их выводит два раза Не понял
где ошибка не могу поймать
 
 Top
Мелкий Супермодератор
Отправлено: 20 Января, 2011 - 16:58:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Ветвь else в {} возьмите, сейчас у вас всегда, даже когда это не подразумевается, выполняются все echo после else, кроме первого.


-----
PostgreSQL DBA
 
 Top
pegass
Отправлено: 21 Января, 2011 - 09:42:02
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Мелкий Огроменное спасибо за помощь!!!!
И за подробный ответ.
И за то что не выложил готовый код а дал возможность подумать.
Радость Радость Радость
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB