@alexei_2002

Скрипт работы с MYSQL?

Есть веб-интерфейс работающий с sql.
60906cc764b02337868465.png
Суть его заключается в том, чтобы в зависимости от нажатия кнопки "Yes" или "No" в столбец "check", соответственно, заносились "1" или "0".
Удалось задать каждой кнопки свой name = "btn_...1, 2 и т.д. (цифра соответствует id)", но воспользоваться этим у меня не получается.
Не понимаю, как в условии на нажатие кнопок это применить.
P.S. Извиняюсь, за такой код, начал изучать совсем недавно.
<?php 
require_once 'connection.php'; // подключаем скрипт
 
// подключаемся к серверу
$link = mysqli_connect($host, $user, $password, $database) 
    or die("Ошибка " . mysqli_error($link));
 
// выполняем операции с базой данных
    $query ="SELECT * FROM klient";
    $qr_result = mysqli_query($link, $query)
    or die(mysqli_error());

//Переменная для присвоения номера кнопке "Yes"
$j = 1;
//Переменная для присвоения номера кнопке "No"
$i = 1;

 # Если кнопка "Обновить" нажата
    if( isset( $_POST['btn_update'] ) )
    {
       // выводим на страницу сайта заголовки HTML-таблицы
    echo '<table border="1">';
    echo '<thead>';
    echo '<tr>';
    echo '<th>id</th>';
    echo '<th>FIO</th>';
    echo '<th>tel</th>';
    echo '<th>check</th>';
    echo '</tr>';
    echo '</thead>';
    echo '<tbody>';

     while($data = mysqli_fetch_array($qr_result)){ 
    echo '<tr>';
    echo '<td>' . $data['id'] . '</td>';
    echo '<td>' . $data['FIO'] . '</td>';
    echo '<td>' . $data['tel'] . '</td>';
    echo '<td>' . $data['control'] . '</td>';
    echo '<form method="POST">';
    echo '<td><button name="btn_yes'.$j++.'">Yes</button></td>';
    echo '<td><button name="btn_no'.$i++.'">No</button></td>';
    echo '</form>';
    echo '</tr>';
  
         # Если кнопка "Yes" нажата
    if( isset( $_POST['btn_yes'] ))
    {
// выполняем операции с базой данных
    $mysqli_query ="UPDATE klient SET control = '1' WHERE id = 1;";
    $qr_result = mysqli_query($link, $mysqli_query)
    or die(mysqli_error());
    }

    # Если кнопка "No" нажата
    if( isset( $_POST['btn_no'] ))
    {
// выполняем операции с базой данных
    $mysqli_query ="UPDATE klient SET control = '0' WHERE id = 1;";
    $qr_result = mysqli_query($link, $mysqli_query)
    or die(mysqli_error());
    }
  }

    echo '</tbody>';
  echo '</table>';
    }
// закрываем подключение
mysqli_close($link);
 ?>
 <form method="POST">
  <button name="btn_update">Обновить</button>
 </form>
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
Noizefan
@Noizefan
Логика в корне не верна к сожалению

Ты в цикле разбора пришедших данных из бд проверяешь приход кнопки - у тебя эти условия будут выполняться каждый раз, т.е. если в базе 100 строк то код 100 раз изменит что ты там изменяешь, это раз
нужно выносить за цикл в самый верх и проверять один раз

два - ты же сам получаешь все строки из бд со всеми данными, звездочкой, зачем делать какие то $j и $i если можно из массива со строкой брать ее айди?

echo '<form method="POST">';
    echo '<input type="hidden" name="rowid" value="'.$data['id'].'">';
    echo '<td><button name="btn_yes">Yes</button></td>';
    echo '<td><button name="btn_no">No</button></td>';
echo '</form>';

и при наличии входящего параметра rowid уже внутри проверяй какая именно и пришла ли вообще кнопка

затем
$mysqli_query ="UPDATE klient SET control = '0' WHERE id = 1;";

Ты меняешь всегда только ту строку у которой айди 1
По твоей же задумке нужно менять входящий айди, он содержится теперь в $_POST['rowid']

еще избавляйся от mysqli, переходи на PDO, там нет ничего сложнее чем то чем ты занимаешься сейчас

Рекомендую почитать про алгоритмы в общем и целом, пока что суешь куски кода из статей в примерно по-твоему нужное место
нужно строго понимать при таком подходе какая строка что именно делает, каждый символ, каждый аргумент

тяга и самостоятельное изучение очень похвальны, но вникать нужно еще глубже - и тогда все получится
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы