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
Форумы портала PHP.SU :: Версия для печати :: Как сделать проверку есть ли ответ вопрос?
Форумы портала PHP.SU » PHP » Программирование на PHP » Как сделать проверку есть ли ответ вопрос?

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

1. pegass - 20 Января, 2011 - 13:09:59 - перейти к сообщению
Пишу страницу для сайта в формате вопрос ответ.

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

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

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

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

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


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

************
Как на Вашем сайте можно направить жалобу администрации?
прочитать ответ
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 то вывести фразу нет ответа.
2. Мелкий - 20 Января, 2011 - 13:24:25 - перейти к сообщению
0) используйте while ($переменная = mysql_fetch_и_далее_по_тексту) {}
Цикл с постусловием здесь абсолютно лишний.
1) не используйте printf там, где это не требуется, он работает медленнее print и echo
2) у вас проверка на существование ответов не внесена в цикл, к тому же вообще неудачно выполнена.
В цикле вывода информации поставьте условие
PHP:
скопировать код в буфер обмена
  1. if (условие) echo "есть ответы";
  2. else echo "ответов нет";

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

Сделайте

в начале кода - ошибок выплывет куча.
3. pegass - 20 Января, 2011 - 16:21:22 - перейти к сообщению
Мелкий пишет:
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 у всех записей разный!!!

НА те вопросы у которых есть ответ он их выводит два раза Не понял
где ошибка не могу поймать
4. Мелкий - 20 Января, 2011 - 16:58:59 - перейти к сообщению
Ветвь else в {} возьмите, сейчас у вас всегда, даже когда это не подразумевается, выполняются все echo после else, кроме первого.
5. pegass - 21 Января, 2011 - 09:42:02 - перейти к сообщению
Мелкий Огроменное спасибо за помощь!!!!
И за подробный ответ.
И за то что не выложил готовый код а дал возможность подумать.
Радость Радость Радость

 

Powered by ExBB FM 1.0 RC1