Использование переключателя для обновления значения приращения в базе данных phpmyadmin - PullRequest
0 голосов
/ 03 марта 2020

Я новичок ie и все еще на стадии изучения базы данных php. Я пытаюсь создать форму обратной связи с 10 дескрипторами и 3 вариантами «Не согласен», «Удовлетворительно» и «Согласен», чтобы пользователь мог проверить с помощью переключателя. Когда пользователь выбрал опцию и отправил, например, «Согласен», значение 1 должно обновиться в базе данных в столбце «Согласен». Если другой пользователь отправил такую ​​же опцию, значение в столбце «Согласен» должно увеличиться до 2. Моя проблема не может корректно обновить значение в правильном столбце в базе данных при переходе ко 2-му и 3-му дескриптору. Был бы признателен, если кто-нибудь может помочь решить мою проблему. Большое спасибо. Моя таблица: Столбец 1: ID, столбец 2: дескриптор, столбец 3: не согласен, столбец 4: удовлетворительно, столбец 5: согласен Пример формы обратной связи со скриптом php (от inte rnet):

<?php
$con=mysqli_connect("localhost","root","","testing2");
if($con){ echo "Connected";}

If(isset($_POST['update'])){

  $query="UPDATE form SET disagree=disagree+1 WHERE id='$_POST[ans1]'";
  $query="UPDATE form SET satisfactory=satisfactory+1 WHERE id='$_POST[ans1]'";
  $query="UPDATE form SET agree=agree+1 WHERE id='$_POST[ans1]'";
  $result=mysqli_query($con,$query);

  if($result){
    echo "OKAY";
  }else{
    echo "NOT OKAY";
  }
  
}

?>

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
<form method="post" action="form.php">
	<table>
		<tr>
			<th></th>
			<th>Disagree</th>
			<th>Satisfactory</th>
			<th>Agree</th>
		</tr>
		        <tr>
              <td>The duration of the program is appropriate</td>
              <td><input type="radio" value="1" name="ans1" /></td>
              <td><input type="radio" value="1" name="ans1" /></td>
              <td><input type="radio" value="1" name="ans1" /></td>
            </tr>

            <tr>
              <td>The course content is revelent</td>
              <td><input type="radio" value="2" name="ans2"  /></td>
              <td><input type="radio" value="2" name="ans2" /></td>
              <td><input type="radio" value="2" name="ans2" /></td>
            </tr>

            <tr>
              <td>The learning objectives have been met</td>
              <td><input type="radio" value="3" name="ans3"  /></td>
              <td><input type="radio" value="3" name="ans3" /></td>
              <td><input type="radio" value="3" name="ans3" /></td>
            </tr>
	</table>
        
     <input type="submit" name="update" value="submit">

</form>

</body>
</html>

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Я игнорирую аспекты безопасности при использовании необработанных данных в запросе MySQL, как этот.

Значения в вашей таблице можно использовать лучше, как и имена групп переключателей:

<?php
$con=mysqli_connect("localhost","root","","testing2");
if($con){ echo "Connected";}

if(isset($_POST['update'])){
   foreach($_POST as $id => $column) {
       if(is_numeric($id)) {
            $query= 'UPDATE form SET ' . $column . '=' . $column.'+1 WHERE id=' . $id;
       }
   }

  $result=mysqli_query($con,$query);

  if($result){
    echo "OKAY";
  }else{
    echo "NOT OKAY";
  }

}

?>

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
<form method="post" action="form.php">
    <table>
        <tr>
            <th></th>
            <th>Disagree</th>
            <th>Satisfactory</th>
            <th>Agree</th>
        </tr>
            <tr>
              <td>The duration of the program is appropriate</td>
              <td><input type="radio" value="disagree" name="1" /></td>
              <td><input type="radio" value="satisfactory" name="1" /></td>
              <td><input type="radio" value="agree" name="1" /></td>
            </tr>

            <tr>
              <td>The course content is revelent</td>
              <td><input type="radio" value="disagree" name="2"  /></td>
              <td><input type="radio" value="satisfactory" name="2" /></td>
              <td><input type="radio" value="agree" name="2" /></td>
            </tr>

            <tr>
              <td>The learning objectives have been met</td>
              <td><input type="radio" value="disagree" name="3"  /></td>
              <td><input type="radio" value="satisfactory" name="3" /></td>
              <td><input type="radio" value="agree" name="3" /></td>
            </tr>
    </table>

     <input type="submit" name="update" value="submit">

</form>

</body>
</html>
0 голосов
/ 04 марта 2020

Вы должны будете сделать что-то подобное, чтобы выполнить каждое из них (просто чище, пожалуйста):

$query="UPDATE form SET disagree=disagree+1 WHERE id='$_POST[ans1]'";
$result=mysqli_query($con,$query);
if($result){
    echo "OKAY";
}else{
    echo "NOT OKAY";
}

$query="UPDATE form SET satisfactory=satisfactory+1 WHERE id='$_POST[ans1]'";
$result=mysqli_query($con,$query);
if($result){
    echo "OKAY";
}else{
    echo "NOT OKAY";
}

$query="UPDATE form SET agree=agree+1 WHERE id='$_POST[ans1]'";
$result=mysqli_query($con,$query);
if($result){
    echo "OKAY";
}else{
    echo "NOT OKAY";
}

Надеюсь, вы получите ОКАЙ 3 раза.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...