За последние 24 часа нас посетили 22396 программистов и 1136 роботов. Сейчас ищут 533 программиста ...

Нужна помощь с php, изменения количества вопросов в викторине

Тема в разделе "PHP для новичков", создана пользователем Natalie_2019, 13 май 2019.

Метки:
  1. Natalie_2019

    Natalie_2019 Новичок

    С нами с:
    13 май 2019
    Сообщения:
    1
    Симпатии:
    0
    Есть следующий код викторины - тестирования, если кому нужна могу всю скинуть, помогите с проблемой, пожалуйста. Не могу изменить количество вопросов с 15 на другое число, выдает ошибку

    PHP:
    1. <?php
    2.  
    3. /// Настройки
    4. $sql_host="localhost";
    5. $sql_id="login";
    6. $sql_pass="password";
    7. $sql_db="date base";
    8.  
    9. /// Далее ничего не трогать!
    10. $vopr=15;
    11. $html="";
    12. if(isset($_GET["page"])) { $page=addslashes($_GET["page"]); } else { $page=""; }
    13. if(isset($_GET["session"])) { $session=addslashes($_GET["session"]); } else { $session=""; }
    14. if(isset($_GET["vs"])) { $vs=addslashes($_GET["vs"]); } else { $vs=""; }
    15.     $link = @mysql_connect ("$sql_host", "$sql_id", "$sql_pass") or die ("Нема конекта");
    16.     $link2 = @mysql_select_db("$sql_db") or die ("aaa");
    17. if($page=="end") {
    18. $otvok=0;
    19. $otvno=15;
    20. $ball=0;
    21. $query = "SELECT * from vika_users WHERE session='$session';";
    22. $sort=@mysql_query($query);
    23. $row = @mysql_fetch_array($sort);
    24. $time=$row["date_b"]-$row["date_a"];
    25. $html.="<b>Ваш ник:</b> $row[user]<br> <b>Пройденое время:</b> $time секунд<p><hr size=\"1\" color=\"#CFCFCF\">";
    26. for($i=1; $i<=$vopr; $i++) {
    27. $vp="v$i";
    28. $op="o$i";
    29. $sql_o="";
    30. $query = "SELECT * from vika WHERE num='".$row["$vp"]."' LIMIT 1;";
    31. $sort=@mysql_query($query);
    32. $row2 = @mysql_fetch_array($sort);
    33. $tabl1=array(1=>"",2=>"",3=>"",4=>"");
    34. $tabl2=array(1=>"",2=>"",3=>"",4=>"");
    35. $ops=$row["$op"];
    36. $vps=$row2["otvet"];
    37. if($ops==$vps) {
    38. $tabl1["$ops"]="<table bgcolor=\"#7983C4\" cellspacing=2 cellpadding=2><tr><td width=\"400\" bgcolor=\"#EAF1FF\">";
    39. $tabl2["$ops"]="</td></tr></table>";
    40. $otvok++;
    41. $otvno--;
    42. $ball+=50;
    43. $sql_o.="y$i=1,";
    44. } else {
    45. $tabl1["$vps"]="<table bgcolor=\"#f0f0f0\" cellspacing=1 cellpadding=2><tr><td width=\"400\" bgcolor=\"#ffffff\">";
    46. $tabl2["$vps"]="</td></tr></table>";
    47. $tabl1["$ops"]="<table bgcolor=\"#7983C4\" cellspacing=1 cellpadding=2><tr><td width=\"400\" bgcolor=\"#ffffff\">";
    48. $tabl2["$ops"]="</td></tr></table>";
    49. $ball-=10;
    50. $sql_o.="y$i=0,";
    51. }
    52.  
    53. $html.=<<<END
    54. <table width="500">
    55. <tr><td align="center"><b>$row2[vopros]</b></td></tr>
    56. <tr><td align="center">
    57. <table width="300">
    58. <tr><td><img src="imgs/1.gif"></td><td>$tabl1[1] $row2[otvet1] $tabl2[1]</td></tr>
    59. <tr><td><img src="imgs/2.gif"></td><td>$tabl1[2] $row2[otvet2] $tabl2[2]</td></tr>
    60. <tr><td><img src="imgs/3.gif"></td><td>$tabl1[3] $row2[otvet3] $tabl2[3]</td></tr>
    61. <tr><td><img src="imgs/4.gif"></td><td>$tabl1[4] $row2[otvet4] $tabl2[4]</td></tr>
    62. </table>
    63. </td></tr>
    64. </table>
    65. <hr size="1" color="#CFCFCF">
    66. END;
    67. $v[$i]=$row["v$i"];
    68. }
    69.  
    70. if(300-$time > 0) { $ball+=300-$time; }
    71. if($ball < 0) { $ball=0; }
    72. $html.=<<<END
    73. <b>Правильно отвечено на</b> $otvok <b>вопросов</b><br>
    74. <b>Допущено</b> $otvno <b>ошибок</b><br>
    75. <b>Всего набрано</b> $ball <b>очков</b>
    76. <div align=center><a href="index.php">Смотреть результат в таблице результатов</a></div>
    77. END;
    78. $date_b=date("U");
    79. $sql="UPDATE vika_users SET
    80. yes=$otvok,
    81. no=$otvno,
    82. ball=$ball,
    83. vopros=1,
    84. $sql_o
    85. date_b=$date_b
    86. WHERE session=\"$session\" AND vopros=0";
    87. $sql_ok=@mysql_query($sql);
    88.  
    89. } else if(isset($_POST["name"]) AND isset($_POST["email"]) AND $_GET["session"]) {
    90. $query = "SELECT num from vika";
    91. $sort=@mysql_query($query);
    92. $count=mysql_num_rows($sort);
    93.  
    94. $countd=round($count/$vopr);
    95. $sql_a="";
    96. for($i=1; $i<=$vopr; $i++) {
    97. $a=$i*$countd-$countd+1;
    98. $b=$i*$countd;
    99. $sql_a.="\"".rand($a, $b)."\", ";
    100. }
    101. $date_a=date("U");
    102. $date_b=date("U");
    103. $user=addslashes($_POST["name"]);
    104. $email=addslashes($_POST["email"]);
    105. $ip="127.0.0.1";
    106. $session=addslashes($_GET["session"]);
    107. $query = "SELECT num from vika_users WHERE session='$session';";
    108. $sort=@mysql_query($query);
    109. $count=mysql_num_rows($sort);
    110. if($count==0) {
    111. if(strlen($user)!=0) {
    112. $sql=<<<END
    113. INSERT INTO vika_users (num, user, email, ip, ball, date_a, date_b, vopros, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14, y15, yes, no, session)
    114. VALUES (
    115. "", "$user", "$email", "$ip", 0, "$date_a", "$date_b", 0, $sql_a 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "$session"
    116. );
    117. END;
    118. $sql_ok = @mysql_query($sql) or die("eror sql"); /// создаем таблицы
    119. } else { $html="Заполните все поля.<br>Вернитесь назад и исправьте все ошибки"; }
    120. }
    121. else { $sql=1; }
    122.  
    123. $html = "<a href=\"index.php?session=$session\">играть</a>";
    124. } else if(isset($_GET["session"])) {
    125.  
    126. if(isset($_POST["vopros"]) AND isset($_POST["vs"])) {
    127. $vopros=addslashes($_POST["vopros"]);
    128. $vs=round(addslashes($_POST["vs"]));
    129. $date_b=date("U");
    130. $sql="UPDATE vika_users SET $vopros=\"$vs\", date_b=$date_b WHERE session=\"$session\" AND vopros=0";
    131. $sql_ok=@mysql_query($sql);
    132. }
    133.  
    134.  
    135. $i=0;
    136. $j=0;
    137. $query = "SELECT * from vika_users WHERE session='$session';";
    138. $sort=@mysql_query($query);
    139. $row = @mysql_fetch_array($sort);
    140. for($j=1; $j<=$vopr; $j++) {
    141. if($row["o$j"]==0) { $i++;  $v[$i]=$row["v$j"]; $nam[$i]="o$j"; }
    142. }
    143.  
    144. if(isset($v[1])) {
    145. $query = "SELECT * from vika WHERE num='$v[1]';";
    146. $sort=@mysql_query($query);
    147. $row = @mysql_fetch_array($sort);
    148.  
    149. $table1="<table bgcolor=\"#f0f0f0\" cellspacing=1 cellpadding=2><tr><td width=\"400\" bgcolor=\"#ffffff\">";
    150. $table2="</td></tr></table>";
    151.  
    152. $html=<<<END
    153. <table>
    154. <form action="index.php?session=$session" method="post">
    155. <input type="hidden" size="1" name="vopros" value="$nam[1]">
    156. <tr><td><b>$row[vopros]</b></td></tr>
    157. <tr><td>$table1 <img src="imgs/1.gif"><input type="radio" name="vs" value="1" id="1"> <label for="1">$row[otvet1]</label> $table2</td></tr>
    158. <tr><td>$table1 <img src="imgs/2.gif"><input type="radio" name="vs" value="2" id="2"> <label for="2">$row[otvet2]</label> $table2</td></tr>
    159. <tr><td>$table1 <img src="imgs/3.gif"><input type="radio" name="vs" value="3" id="3"> <label for="3">$row[otvet3]</label> $table2</td></tr>
    160. <tr><td>$table1 <img src="imgs/4.gif"><input type="radio" name="vs" value="4" id="4"> <label for="4">$row[otvet4]</label> $table2</td></tr>
    161. <tr><td><input type="submit" value="Далее"></td></tr>
    162. </from>
    163. </table>
    164. END;
    165. } else {
    166. $query = "SELECT num from vika_users WHERE session='$session';";
    167. $sort=@mysql_query($query);
    168. $count=mysql_num_rows($sort);
    169.  
    170. if($count==1) { $html="<meta http-equiv='refresh' content='1; url=index.php?page=end&session=$session'>Опрос закончен, подводим итоги."; }
    171. else { $html="<meta http-equiv='refresh' content='2; url=index.php'>Заполните все поля.<br>Вернитесь назад и исправьте все ошибки"; }
    172. }
    173. } else {
    174. $session=md5(date("U")+rand(1,100));
    175. $html=<<<END
    176. <table><tr><td>
    177. <table width=180>
    178. <form action="index.php?session=$session" method="post">
    179. <tr><td>Имя</td><td><input type="text" size="15" name="name" value=""></td></tr>
    180. <tr><td>e-mail</td><td><input type="text" size="15" name="email" value=""></td></tr>
    181. <tr><td colspan=2><input type="submit" value="Играть!"></td></tr>
    182. </from>
    183. </table>
    184. </td><td>В течении игры вам нужно будет ответить на 15 вопросов, не забывайте что время и правильность ответов влияет на очки и дополнительные бонусы!<P>Игра на данный момент доделывается, могут быть изменения и т.п. :)</td></tr></table>
    185. <hr size="1" color="#CFCFCF">
    186. <table width="100%" cellspacing=1 cellpadding=0>
    187. END;
    188.  
    189. $query_as = "SELECT * from vika_users WHERE vopros=1 ORDER BY ball DESC LIMIT 50";
    190. $sort_as=@mysql_query($query_as) or die ("База пуста 14 $query_as");
    191. $i=0;
    192. $table1="<table bgcolor=\"#99ABD5\" cellspacing=1 cellpadding=1 width=\"100%\">";
    193. $table2="</td></tr></table>";
    194.  
    195. $html.="<tr>
    196. <td width=30 rowspan=2>$table1 <tr><td height=30 bgcolor=\"#EAEAEA\" align=center> № $table2</td>
    197. <td>$table1 <tr><td height=30 bgcolor=\"#EAEAEA\" align=center> Имя $table2</td>
    198. <td width=60>$table1 <tr><td height=30 bgcolor=\"#EAEAEA\" align=center> Очки $table2</td>
    199. <td width=120 colspan=2>$table1 <tr><td bgcolor=\"#EAEAEA\" align=center colspan=2> Ответы </td></tr><tr><td width=60 align=center bgcolor=\"#EAEAEA\"> верно </td><td width=60 align=center bgcolor=\"#EAEAEA\"> не верно $table2</td>
    200. <td width=100>$table1 <tr><td height=30 bgcolor=\"#EAEAEA\" align=center> Дата $table2</td>
    201. <tr>
    202. ";
    203. $table1="<table bgcolor=\"#99ABD5\" cellspacing=1 cellpadding=1 width=\"100%\"><tr><td bgcolor=\"#F4F4F4\" align=center>";
    204. $table2="</td></tr></table>";
    205.  
    206. while ($row = @mysql_fetch_object($sort_as)) {
    207. $i++;
    208. $html.="<tr>
    209. <td width=30>$table1 $i $table2</td>
    210. <td>$table1$row->user$table2</td>
    211. <td width=60>$table1$row->ball$table2</td>
    212. <td width=60>$table1$row->yes$table2</td>
    213. <td width=60>$table1$row->no$table2</td>
    214. <td width=100>$table1".date("d.n.Y", $row->date_b)."$table2</td>
    215. <tr>";
    216. }
    217. $html.="</table>";
    218. }
    219. $template = file ('header.html');
    220. if(!isset($html)) { $html = "Ошибка 404"; $page_name=" : Ошибка 404"; }
    221. if(!isset($page_name)) { $page_name=" : Error Name Page"; }
    222.  
    223. foreach ($template as $temp) {
    224. $temp = ereg_replace("<!--text-->", "$html", $temp);
    225. echo "$temp";
    226. }
    227.  
    228. ?>

    если изменить $vopr=15; на $vopr=16; добавить в код INSERT INTO vika_users v16, o16, y16 и в базе тоже добавить эти поля, то тест не начитается и выдает ошибку eror sql из строки
    $sql_ok = @mysql_query($sql) or die("eror sql"); /// создаем таблицы

    Помогите, пожалуйста, как корректно изменить количество вопросов? Записывать все ответы на вопросы не обязательно, нужно просто считать балы в конце и количество правильных и неправильных ответов.
     
  2. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @Natalie_2019, знаете что такое говнокод? Это когда человек пренебрегающие изучением базовых знаний садится писать код насмотревшись видосиков на ютубе. Но это не ваш вариант. В вашем случае код писал профессиональный говнокодер. Этому надо учиться много лет и оттачивать говномастерство без перерывов и выходных.
    Вам же яснопонятно написали комментарий "далее ничего не трогать"