Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 26.11.2016
Сообщений: 15

Передача значений радиобаттонов в БД mysql работает странно

08.03.2019, 01:08. Показов 953. Ответов 7

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Мучаюсь с формой уже долго, совершенно нет идей почему всё работает именно так.

Вкратце. Есть база данных с вопросами. В каждом вопросе 4 варианта ответов (4 радиобаттона, name= rad, value = one, two, three, four). И есть в базе дополнительно 4 счетчика для каждого вопроса (vote1,2,3,4), в которые я записываю все ответы, которые выбираются радиобаттонами (если выбран радиобаттон со значением one, то в базе для этого вопроса плюсуется vote1, и т.д.). Это что-то типа формы опроса, или голосования.
Вопросы из базы вылетают случайным образом на страницу.

Пример:
Когда вылетает вопрос номер 1, и я выбираю радиобаттон 1, у меня плюсуется в базу vote1. Если мне после этого вылетает другой вопрос (с другим id) то тоже все работает. Проблема возникает тогда, когда мне два раза подряд выпадает один и тот же вопрос и я выбираю один и тот же ответ. Если мне выпал вопрос 1 и я выбрал вариант ответа 1, то все работает. НО!!! Если мне следующим же вопросом выпал ЭТОТ ЖЕ вопрос (с тем же id), и я СНОВА ВЫБЕРУ ВАРИАНТ ОТВЕТА 1, у меня это значение в базу не плюсуется а просто игнорируется. Потом если мне ТРЕТИЙ раз выпадет этот же вопрос, и я СНОВА ВЫБЕРУ ПЕРВЫЙ ВАРИАНТ ОТВЕТА, всё снова работает. Если четвертый - то не работает. И т.д. То есть, при повторном вопросе и том же ответе у меня значение один раз не записывается...

Все сделано через метод POST, на одной странице. Форма обычная.
База прикрепляется с другой страницы, но это не столь важно. Просьба подсказать, как решить проблему, голову сломал.

Спасибо.


КОД:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<?
session_start();
$title = "Случайный вопрос Миру";
require "head.php";
?>
 
<!DOCTYPE html>
<html>
 
<body>
<? echo "Вы вошли как " ?> <b style="color:blue"> <? echo $_SESSION ['login']; ?> </b>
<a href="logout.php">(выйти)</a>
<h3>Случайный вопрос Миру</h3>
<a href="\main_page.php">на главную</a>
<hr>
 
<?php
 
include_once ("db_connection.php");
 
 
$result = mysql_query(" SELECT * FROM all_questions ORDER BY RAND () LIMIT 1 ; ");
$all_questions = mysql_fetch_array($result);
$id_new = $all_questions["id"];
 
$vote1 = $all_questions["vote1"];
$vote2 = $all_questions["vote2"];
$vote3 = $all_questions["vote3"];
$vote4 = $all_questions["vote4"];
//echo "id new = ".$id_new;
 
?>
<h4>
<?
echo "Вопрос №".$all_questions["id"].": ";
echo $all_questions["title"];
//echo "id вопроса - ".$id_new;
?>
</h4>
<?
echo $all_questions["text"]; echo "<br><br>";
?>
<form method="post" action="see_random_question.php">
 
    <input type="radio" name="rad" value="one" />
    <?
    echo $all_questions["solution1"]; echo "<br>"; ?>
    <input type="radio" name="rad" value="two" />
    <?
    echo $all_questions["solution2"]; echo "<br>"; ?>
    <input type="radio" name="rad" value="three" />
    <?
    echo $all_questions["solution3"]; echo "<br>"; ?>
    <input type="radio" name="rad" value="four" />
    <?
    echo $all_questions["solution4"]; echo "<br><br>";
 
    echo "Дата публикации: ";
    echo $all_questions["date"]." в ".$all_questions["time"]; echo "<br>";
    echo "Автор: ";
    echo $all_questions["author"]; echo "<br><br>"; ?>
 
 
<b>Всего <img src="vote1.png" width="20">:  <? echo $all_questions["vote1"] + $all_questions["vote2"] + $all_questions["vote3"] + $all_questions["vote4"] ?> человек <br> </b>
1 вариант  <progress max = <? echo $all_questions["vote1"] + $all_questions["vote2"] + $all_questions["vote3"] + $all_questions["vote4"] ?> value = <? echo $all_questions["vote1"] ?> >
        </progress> 
 
        <?echo $all_questions["vote1"]?> <img src="vote1.png" width="20"> <br>
 
2 вариант  <progress max = <? echo $all_questions["vote1"] + $all_questions["vote2"] + $all_questions["vote3"] + $all_questions["vote4"] ?> value = <? echo $all_questions["vote2"] ?> >
        </progress>
        
        <?echo $all_questions["vote2"]?> <img src="vote1.png" width="20"> <br>
 
3 вариант  <progress max = <? echo $all_questions["vote1"] + $all_questions["vote2"] + $all_questions["vote3"] + $all_questions["vote4"] ?> value = <? echo $all_questions["vote3"] ?> >
        </progress>
        
        <?echo $all_questions["vote3"]?> <img src="vote1.png" width="20"> <br>
 
4 вариант  <progress max = <? echo $all_questions["vote1"] + $all_questions["vote2"] + $all_questions["vote3"] + $all_questions["vote4"] ?> value = <? echo $all_questions["vote4"] ?> >
        </progress>
        
        <?echo $all_questions["vote4"]?> <img src="vote1.png" width="20"> <br><br>
        
<input type="hidden" name="id_old" value=" <? echo $id_new ?>" />
<input type="hidden" name="vote1" value=" <? echo $vote1 ?>" />
<input type="hidden" name="vote2" value=" <? echo $vote2 ?>" />
<input type="hidden" name="vote3" value=" <? echo $vote3 ?>" />
<input type="hidden" name="vote4" value=" <? echo $vote4 ?>" /><br>
 
<input type="submit" name="send" value="Ответить" /><br><br>     
</form>
 
<?
 
if (isset($_POST['send']))
{ 
    $id_old = $_POST['id_old'];
    $vote11 = $_POST['vote1'];
    $vote22 = $_POST['vote2'];
    $vote33 = $_POST['vote3'];
    $vote44 = $_POST['vote4'];
 
    if (isset($_POST['rad']))
    {
        switch ($_POST['rad'])
        {
            case 'one':  
            //echo "Вы проголосовали за 1 <br>";
            $vote11 += 1;
            mysql_query(" UPDATE all_questions SET vote1 = '$vote11' WHERE id='$id_old' ");             
            break;
 
            case 'two':
            //echo "Вы проголосовали за 2 <br>";
            $vote22 += 1;
            mysql_query(" UPDATE all_questions SET vote2 = '$vote22' WHERE id='$id_old' ");
            break;
 
            case 'three':
            //echo "Вы проголосовали за 3 <br>";
            $vote33 += 1;
            mysql_query(" UPDATE all_questions SET vote3 = '$vote33' WHERE id='$id_old' ");
            break;
 
            case 'four':
            //echo "Вы проголосовали за 4 <br>";
            $vote44 += 1;
            mysql_query(" UPDATE all_questions SET vote4 = '$vote44' WHERE id='$id_old' "); 
            break;
        }
        mysql_close();
        
    }
    //echo "id old = ".$id_old; 
}
 
?>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.03.2019, 01:08
Ответы с готовыми решениями:

Приложение работает в Debug, странно работает в Release и не работает при билде
Действия выполняются на эмуляторе Pixel 2. Android 9.0. Если я запускаю приложение с конфигурацией Debug, то всё в порядке. При запуске же...

Подсчет голосов из радиобаттонов и вывод их количества
Есть форма с радиобаттонами: &lt;form name=&quot;pollForm&quot;&gt; &lt;b&gt;Оцените качество услуги &quot;Государственная...

Странно работает / не работает кулер на видеокарте
Всем привет! Имею видеокарту geforce gtx 650 ti boost от производителя gainward. Пару месяцев назад начались проблемы с играми: видеокарта...

7
 Аватар для Asiman
156 / 119 / 59
Регистрация: 27.04.2013
Сообщений: 351
08.03.2019, 07:30
Нужно переместить код записи (обновления) вверх, что бы он выполнялся первым.
У Вас же сначала читает с базы, а потом записывает, потому и данные выводятся старые, хотя в базе данных они уже обновились.
0
0 / 0 / 0
Регистрация: 26.11.2016
Сообщений: 15
08.03.2019, 11:17  [ТС]
У меня работает все, кроме случаев, когда выпадает повторный вопрос и я выбираю повторный ответ. В этом основная проблема.
0
 Аватар для Asiman
156 / 119 / 59
Регистрация: 27.04.2013
Сообщений: 351
08.03.2019, 11:26
Спасибо что повторили, но ответ от этого не изменился.
1
0 / 0 / 0
Регистрация: 26.11.2016
Сообщений: 15
08.03.2019, 13:40  [ТС]
Тогда просьба подсказать, куда именно вверх?
Сразу после if (isset($_POST['send'])) или еще выше, в самое начало кода?
0
31 / 46 / 19
Регистрация: 18.07.2018
Сообщений: 578
08.03.2019, 14:08
пацаны, кто Вас учит PHP оторвите ему руки и ноги оставьте только голову чтобы ничего не пропустил - или Вы при поиске даже не ограничиваете его датами - 2017 или 2019 и хаваете всё что писали ещё в 2003, надо мной 10 лет назад ржали когда я спрашивал о swtch и case ну стыдно даже вопросы читать

поставить в классе по основам программирования современное оборудование и вдалбливать людям, что такое перфокарты и перфоленты и Паскаль со своими блок-схемами, дайте людям знания на уровне установленного оборудования
0
 Аватар для Asiman
156 / 119 / 59
Регистрация: 27.04.2013
Сообщений: 351
09.03.2019, 08:01
Цитата Сообщение от Bruda Посмотреть сообщение
Тогда просьба подсказать, куда именно вверх?
Сразу после if (isset($_POST['send'])) или еще выше, в самое начало кода?
Перед запросом в БД (SELECT * FROM all_questions ORDER BY RAND () LIMIT 1)
0
0 / 0 / 0
Регистрация: 26.11.2016
Сообщений: 15
09.03.2019, 08:26  [ТС]
поменял некоторые пункты местами - все заработало.
тему можно закрывать, спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.03.2019, 08:26
Помогаю со студенческими работами здесь

Почему VBA так странно делает сравнение значений?
Всем привет, У меня возник такой вопрос. В ячейке A1 высвечивается #ИМЯ?. Я создал такую программку: Sub msgboxerror() On Error...

if, else if работает странно.
Написал программу html&gt; &lt;head&gt; &lt;title&gt;Roll Em!&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;div align=&quot;center&quot;&gt; &lt;h1&gt;Roll Em!&lt;/h1&gt; &lt;?php ...

Wi-fi странно работает
Стоит дефолтный роутер от Ростелеком Sagemcom F@st 2804 v7, и вот, дня три назад wi-fi на айфоне стал тормозить: подключение есть, но...

Странно, но не работает Where IN (., .)
Здравствуйте. в таблице (SQLite) есть поле (типа TEXT) оно содержит некоторый набор слов (через запятую): &quot;красный, синий,...

Странно работает!
Вот код!Почему то когда заместо цифр 1,2,3,4,5...10.Ставишь допустим H,e,l,l,o, w,o,r,l,d. то программа выводит только Hello w и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru