2016-05-31 2 views
1

У меня есть таблица, которая будет выбирать информацию из базы данных и отображать ее, мне интересно, может ли кто-нибудь предоставить код для меня, чтобы обновить столбец одним нажатием кнопки?Обновить таблицу информации нажатием кнопки

Пример таблицы: (Access = Boolean)

ID - Name - Access 
--------------------------- 
1 - John - 1 
--------------------------- 
2 - Ben  - 1 
--------------------------- 
3 - Terry - 0 
--------------------------- 

Мой поддержки существующих кнопка основана на загрузчике,

<button type=\"button\" id=\"passed\" class=\"btn btn-success btn-flat\"><i class=\"fa fa-check\"></i></button> 
    <button type=\"button\" id=\"insufficient\" class=\"btn btn-danger btn-flat\"><i class=\"fa fa-times\"></i></button> 

Я надеялся на что-то вроде этого, OnClick button1 Run $ Разрешено SQL OnClick button2 Выполнить $ NotAllowed SQL

$allowed = mysqli_query($conn," UPDATE users SET Access = "1" WHERE id = '27' ");  
$notallowed = mysqli_query($conn," UPDATE users SET Access = "0" WHERE id = '453' "); 
+0

Вы отметили как php; используйте форму с почтовым методом и тип отправки кнопок с именованными атрибутами и используйте их в условном выражении. JS/jQuery/ajax также является опцией –

+0

Вы попробовали Пользователи UPDATE SET Access = "1" WHERE id in ('27', '453', 'YourValue3', 'YourValue') или вы хотите обновить Access = "1", Access = "0" в одном запросе? – Sami

+0

@ Свами это не то, о чем вопрос. Прочтите еще раз. –

ответ

2

Вы можете использовать форму с метод post и тип отправки типов с именованными атрибутами и использовать их в условном выражении.

т.е .:

Sidenote: Я удалил кавычки экранированы, так как я не был уверен, что если бы те были уже установлены внутри эхо.

форма HTML:

<form method="post" action="handler.php"> 

    <button type="submit" name="passed" id="passed" class="btn btn-success btn-flat"><i class="fa fa-check"></i></button> 
    <button type="submit" name="insufficient" id="insufficient" class="btn btn-danger btn-flat"><i class="fa fa-times"></i></button> 

</form> 

PHP:

<?php 

// db connection 

if(isset($_POST['passed'])){ 

    $allowed = mysqli_query($conn," UPDATE users SET Access = "1" WHERE id = '27' "); 

} 

if(isset($_POST['insufficient'])){ 

    $notallowed = mysqli_query($conn," UPDATE users SET Access = "0" WHERE id = '453' "); 

} 
  • Будьте осторожны, если это имеет какое-либо взаимодействие с пользователем в любой заданной точке.

  • a prepared statement Использование или PDO with prepared statements, они намного безопаснее.


Сноски:

При выполнении запроса UPDATE, то лучше использовать mysqli_affected_rows() для абсолютного truthness.

В противном случае, вы можете получить ложный положительный результат.

0

Кнопки работают на интерфейсе (javascript), но SQL для обновления базы данных работает на внутреннем сервере (php), поэтому нам нужно соединить эти два вместе.

function updateUserAccess(user_id, access) { 
    var d = { user_id: user_id, access: access }; 
    $.post('update.php', d); 
} 

И затем каждая кнопка будет выглядеть следующим образом:

<button type="button" id="passed" class="btn btn-success btn-flat" onclick="updateUserAccess(<?= $user->id ?>, 1)"><i class="fa fa-check"></i></button> 
<button type="button" id="passed" class="btn btn-success btn-flat" onclick="updateUserAcces(<?= $user->id ?>, 0)"><i class="fa fa-check"></i></button> 

Ваш запрос будет затем в update.php и Javascript данные вы передаете в в d будет доступен в $_POST.

Теперь, когда все это было сказано, несколько вещей:

  1. Я не уверен, почему ваши котировки экранируются, что немного необычно, мягко говоря. Почти наверняка не нужно, если вы не mixing your logic and markup which isn't a good habit.
  2. Хотя код, который я вам дал, будет работать, его также не оптимально, поскольку мы обычно хотим видеть привязку событий, отделенную от разметки дисплея, here it is in raw javascript и here in jquery (with some explanation).
  3. Вам не нужно использовать AJAX для отправки изменений, так как Фред показал, что вы можете сделать это с помощью формы. AJAX не приведет к обновлению страницы (если только вы не сообщите об этом), где форма обычно вызывает обновление.
  4. Наконец, в зависимости от ваших потребностей/прецедентов, я бы порекомендовал вам немного узнать о современных фреймворках на PHP и том, что они предоставляют. Для профессионального веб-разработки (и «современного» php-кода) шаблоны, которые они используют/поощряют, намного превосходят старый стиль файлов за файлом, используемый для создания веб-приложений. Проверьте «шаблон MVC» и некоторые рамки, которые используют его: CodeIgniter, CakePHP и Laravel. Все довольно просто войти и начать работу.
+0

Эй, только что увидел это, похоже, долгий путь, чтобы обойти его, кажется, много больше для продвинутых людей, использующих минимальный код, форма кажется более простым способом. –

+0

@SheaLavington Его немного больше, чтобы напечатать, но как только вы его используете (я не использовал форму для почти чего-либо в течение очень долгого времени), регулярно ее не было более сложным, чем форма. Он также обладает гораздо большей гибкостью в том, что он может сделать. – Cryptic

Смежные вопросы