Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
DeadDance
1 / 1 / 0
Регистрация: 16.06.2013
Сообщений: 46
1

Изменение состояния кнопки и поля в бд по клику

25.10.2016, 21:04. Просмотров 929. Ответов 14

PHP уровень-'ниже плинтуса' но времени очень мало.Пытаюсь сделать редактирования поля бд. на сайте. В поле сделал кнопку, при нажатии на которую нужно что бы в в бд пошел запрос на изменение и тут же на сайте отобразилось это изменение... Испробовав пару разных вариантов остановившись на данном, столкнулся с проблемой (mysql_query() expects parameter 2 to be resource, null given in ). Но во вотом параметри у меня лежит переменная которая ссылается на mysql_connect(). То есть все должно бы быть правильно но не работает((
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
 <link href="css/style.css" media="screen" rel="stylesheet">
 <link rel="stylesheet" href="http://code.jquery.com/ui/1.11.0/themes/smoothness/jquery-ui.css">
 
 
</div>  
<div class="main">  
<?php
 
include("/connection.php");
mysql_select_db("userlistdb" ,$con);
$sql = mysql_query("SELECT * FROM usertbl" ,$con);
if(isset($_SESSION["session_username"])) {
        if(isset($_POST) && isset($_POST['id']) ){
    
    $ban_id=$_POST['id'];
    $type=$_POST['type']=='ban' ? 1 : 0;
    $sql = mysql_query("UPDATE usertbl SET state='$type' WHERE id='$ban_id'",$con) ;
    }
    $res=mysql_fetch_assoc($sql);
     echo "<table > ";
  echo "<tr><th>id</th><th>full_name</th><th>e-mail</th><th>username</th><th>state</th></tr>";
    echoUsers($sql,1);
    echoUsers($sql,1);
      echo "</table>";
    } else {
    header("location:login.php");
    }
 
 
 
function echoUsers($sql,$status){
        $sql = mysql_query("SELECT * FROM usertbl WHERE username='$status'",$con );
 
 while($myrow=mysql_fetch_assoc($sql)){
     if($myrow['username']!=$_SESSION['session_username']){
        echo '<from action="OpenDb.php" method="post">';
    echo '<input type="hidden" name="type" value="'.($myrow['state']==1 ? '&nbspbun&nbsp&nbsp': 'unban' ).'">';
    echo '<tr'.($myrow['state']==0 ? '': ' style="background: #fa7177"').'>';
    echo '<td>'.$myrow['id'].'&nbsp;</td>';
    echo '<td>'.$myrow['full_name'].'&nbsp;</td>';
    echo '<td>'.$myrow['email'].'&nbsp;</td>';
    echo '<td>'.$myrow['username'].'&nbsp;</td>';
    
        /*echo "<td colspan=\"2\" align=\"center\"><input type=\"submit\" name=\"submit_edit\" class=\"buttons\" value=\"Сохранить изменения\" /></td>\n";*/
    echo '<td><button name="id" value="'.$myrow['id'].'">'.($myrow['state']==1 ? '&nbspbun&nbsp&nbsp': 'unban' ).'</td>';
    
    echo '</tr></form>'; 
     }
 }
     
}
?>
 
<form action="" method="POST" target="_self">
<input type="submit" name="ss" value="Out" class="button" />
</form>
вот сюда конкретно он ругается, на переменную $con
PHP
1
2
3
4
function echoUsers($sql,$status){
        $sql = mysql_query("SELECT * FROM usertbl WHERE username='$status'",$con );
 
 while($myrow=mysql_fetch_assoc($sql)){
0
Миниатюры
Изменение состояния кнопки и поля в бд по клику   Изменение состояния кнопки и поля в бд по клику  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2016, 21:04
Ответы с готовыми решениями:

Смена значения поля по клику
Всем доброго времени суток. Может кто нибудь помочь сделать, а так же...

Изменение счетчика по клику внутри цикла
Здравствуйте. В корзине товары выводятся циклом, внутри каждой записи о...

Изменение состояния кнопки
В одной из таблиц есть поле true/false необходимо чтобы при значении true -...

BitBtn - изменение состояния кнопки при нажатии
подскажите. как сделать, что б при нажатии BitBtn кнопка меняла вид на нажатую,...

QML - изменение содержимого формы по клику кнопки и виджета
Доброго дня всем!!! стоит задача - на qml написать прогу, где есть возможность...

14
Jodah
Эксперт PHP
2847 / 2479 / 1056
Регистрация: 01.08.2012
Сообщений: 8,771
25.10.2016, 21:33 2
У функций своя область видимости. Вы не передали $con в функцию, поэтому внутри функции она не существует.

Цитата Сообщение от DeadDance Посмотреть сообщение
времени очень мало
Тогда просто не передавайте 2-ой параметр в mysql_query, он же необязательный. Нужен только если вы работаете с несколькими БД.
1
DeadDance
1 / 1 / 0
Регистрация: 16.06.2013
Сообщений: 46
25.10.2016, 21:56  [ТС] 3
ага, а вот почему у меня тогда ничего не выводится из бд ?
0
Миниатюры
Изменение состояния кнопки и поля в бд по клику  
Jodah
Эксперт PHP
2847 / 2479 / 1056
Регистрация: 01.08.2012
Сообщений: 8,771
25.10.2016, 22:09 4
DeadDance, без понятия, у вас вообще жесть в коде, сложно в этом во всём разобраться. Зачем-то в echoUsers передаёте $sql, которую тут же перезаписываете...

К тому же вывод может не выполняться из-за неработающего условия:
Цитата Сообщение от DeadDance Посмотреть сообщение
PHP
1
if($myrow['username']!=$_SESSION['session_username']){
И кстати, нельзя пихать <form> внутрь <table>.
0
DeadDance
1 / 1 / 0
Регистрация: 16.06.2013
Сообщений: 46
25.10.2016, 22:54  [ТС] 5
а как тогда сделать перезапись по нажатию на кнопку ?) я уже два дня туплю.... и да код в итоге стал похож на что то очень страшное (

Добавлено через 41 минуту
есть еще такой вариант.. но как тут сделать перезапись значения нажатой кнопки ?
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
<?php
include("/connection.php");
mysql_select_db("userlistdb" ,$con);   //site - имя БД
$sql = mysql_query("SELECT * FROM usertbl" ,$con); //Выбирает поля name и text из таблицы links
 
?>
 
</div>  
<div class="main">  
<?php
 
 
    
  if($sql)
{
  // Определяем таблицу и заголовок
  echo "<table > ";
  echo "<tr><th>id</th><th>full_name</th><th>e-mail</th><th>username</th><th>state</th></tr>";
  // Так как запрос возвращает несколько строк, применяем цикл
  while($myrow = mysql_fetch_array ($sql))
  {
    echo '<from action="OpenDb.php" method="post">';
    echo '<input type="hidden" name="type" value="'.($myrow['state']==1 ? '&nbspbun&nbsp&nbsp': 'unban' ).'">';
    echo '<tr'.($myrow['state']==0 ? '': ' style="background: #fa7177"').'>';
    echo '<td>'.$myrow['id'].'&nbsp;</td>';
    echo '<td>'.$myrow['full_name'].'&nbsp;</td>';
    echo '<td>'.$myrow['email'].'&nbsp;</td>';
    echo '<td>'.$myrow['username'].'&nbsp;</td>';
    
        /*echo "<td colspan=\"2\" align=\"center\"><input type=\"submit\" name=\"submit_edit\" class=\"buttons\" value=\"Сохранить изменения\" /></td>\n";*/
    echo '<td><button name="id" value="'.$myrow['id'].'">'.($myrow['state']==1 ? '&nbspbun&nbsp&nbsp': 'unban' ).'</td>';
    
    echo '</tr></form>';
  }
  echo "</table>";
 
}
else
{
 header("Location: "."OpenBD.php");
}
 
?>
<form action="" method="POST" target="_self">
<input type="submit" name="ss" value="Out" class="button" />
</form>
0
Jodah
Эксперт PHP
2847 / 2479 / 1056
Регистрация: 01.08.2012
Сообщений: 8,771
25.10.2016, 22:57 6
DeadDance, опишите исходную задачу, что в каком виде выводится и как должно редактироваться.
0
DeadDance
1 / 1 / 0
Регистрация: 16.06.2013
Сообщений: 46
25.10.2016, 23:04  [ТС] 7
Значит у нас осуществляется вывод нащей бд на сайт. И на самом сайты мы должны иметь возможнть скажем так забанить или разбанить пользователя из списка бд..... сделать это желательно при нажатии на кнопку.... (я решил сделать так в таблице сделать поле state в котором записывать 0- разбанен или 1- забанен...) на скрине справа кнопки, при нажатии на катарые должен меняться статус кнопки с разбана на бан или на оборот.
0
DeadDance
1 / 1 / 0
Регистрация: 16.06.2013
Сообщений: 46
25.10.2016, 23:05  [ТС] 8
скрин
0
Миниатюры
Изменение состояния кнопки и поля в бд по клику  
DeadDance
1 / 1 / 0
Регистрация: 16.06.2013
Сообщений: 46
25.10.2016, 23:12  [ТС] 9
так как бы обычно использую AJAX но, мало того что я его не знаю .. большее затруднее у меня вызывает то как пзять значение из нажатой кнопки и запихнуть его обратно в бд вместо старого значения? О_О как то так
0
Jodah
Эксперт PHP
2847 / 2479 / 1056
Регистрация: 01.08.2012
Сообщений: 8,771
26.10.2016, 08:26 10
Лучший ответ Сообщение было отмечено DeadDance как решение

Решение

DeadDance, как-то так. Код не проверял, могут быть ошибки, но главное понять смысл.

PHPHTML
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
<?
    include("/connection.php");
    mysql_select_db("userlistdb" ,$con);   //site - имя БД
    $users = mysql_query("SELECT * FROM usertbl" ,$con); //Выбирает поля name и text из таблицы links
 
    // Блок
    if(isset($_POST['block']))
    {
        $id = (int) key($_POST['block']);
        mysql_query('UPDATE `usertbl` SET `state` = 0 WHERE `id` = ' . $id);
    }
 
    // Разблок
    if(isset($_POST['unblock']))
    {
        $id = (int) key($_POST['unblock']);
        mysql_query('UPDATE `usertbl` SET `state` = 1 WHERE `id` = ' . $id);
    }
?>
 
<div class="main">
    <form method="post">
        <table>
            <tr>
                <th>id</th>
                <th>full_name</th>
                <th>e-mail</th>
                <th>username</th>
                <th>state</th>
                <th></th>
            </tr>
            <? while($user = mysql_fetch_array($users)): ?>
            <tr>
                <td><?=$user['id']?>&nbsp;</td>
                <td><?=$user['full_name']?>&nbsp;</td>
                <td><?=$user['email']?>&nbsp;</td>
                <td><?=$user['username']?>&nbsp;</td>
                <td><?=$user['state'] == 1 ? '&nbspbun&nbsp&nbsp': 'unban'?></td>
                
                <? if($user['state'] == 1): ?>
                <td><input name="block[<?=$user['id']?>]" type="submit" value="Заблокировать" /></td>
                <? else: ?>
                <td><input name="unblock[<?=$user['id']?>]" type="submit" value="Разблокировать" /></td>
                <? endif; ?>
            </tr>
            <? endwhile; ?>
        </table>
    </form>
</div>
1
DeadDance
1 / 1 / 0
Регистрация: 16.06.2013
Сообщений: 46
26.10.2016, 15:27  [ТС] 11
Спасибо огромное) ... а изначально я был очень близок.. но потом начал дурные варианты из гугля тянуть и в итоге в конец запутался.... посмотрел на ваш скрип у меня в голове все встало на свои места ...сейчас буду его внедрять !)

Добавлено через 30 минут
вернулся к самому началу (((( выскакивают нотисы, он не понимает этот кусок
PHP
1
2
3
4
5
 <td><?=$user['id']?>&nbsp;</td>
                <td><?=$user['full_name']?>&nbsp;</td>
                <td><?=$user['email']?>&nbsp;</td>
                <td><?=$user['username']?>&nbsp;</td>
                <td><?=$user['state'] == 1 ? '&nbspbun&nbsp&nbsp': 'unban'?></td>
не знает что такое id full_name и тд....
0
Jodah
Эксперт PHP
2847 / 2479 / 1056
Регистрация: 01.08.2012
Сообщений: 8,771
26.10.2016, 20:01 12
DeadDance, хм... скиньте полностью тексты всех ошибок.
0
DeadDance
1 / 1 / 0
Регистрация: 16.06.2013
Сообщений: 46
26.10.2016, 22:52  [ТС] 13
Notice: Undefined variable: user in D:\xampp\htdocs\TaskOne\includes\OpenDb.php on line 34
Notice: Undefined variable: user in D:\xampp\htdocs\TaskOne\includes\OpenDb.php on line 35
Notice: Undefined variable: user in D:\xampp\htdocs\TaskOne\includes\OpenDb.php on line 36
Notice: Undefined variable: user in D:\xampp\htdocs\TaskOne\includes\OpenDb.php on line 37
Notice: Undefined variable: user in D:\xampp\htdocs\TaskOne\includes\OpenDb.php on line 38
я так понял он не понимает конструкцию <? ......?>
0
Миниатюры
Изменение состояния кнопки и поля в бд по клику  
DeadDance
1 / 1 / 0
Регистрация: 16.06.2013
Сообщений: 46
27.10.2016, 00:01  [ТС] 14
переписал конструкцию по другому
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
 </div>
<div class="main">
    <form method="post">
    <?php
    include("/connection.php");
    mysql_select_db("userlistdb" ,$con);   //site - имя БД
    $users = mysql_query("SELECT * FROM usertbl" ,$con); //Выбирает поля name и text из таблицы links
 
    // Блок
    if(isset($_POST['block']))
    {
        echo "ggggg";
        $id =(int) key($_POST['unblock']);
        mysql_query('UPDATE `usertbl` SET `state` = 0 WHERE `id` = ' . $id);
    }
 
    // Разблок
    if(isset($_POST['unblock']))
    {
        $id = (int) key($_POST['unblock']);
        mysql_query('UPDATE `usertbl` SET `state` = 1 WHERE `id` = ' . $id);
    }
?>
        <table>
            <tr>
                <th>id</th>
                <th>full_name</th>
                <th>e-mail</th>
                <th>username</th>
                <th>state</th>
                <th></th>
            </tr>
            <tr>     
            <?php while($user=mysql_fetch_assoc($users)){
    
    echo '<td>'.$user['id'].'&nbsp;</td>';
    echo '<td>'.$user['full_name'].'&nbsp;</td>';
    echo '<td>'.$user['email'].'&nbsp;</td>';
    echo '<td>'.$user['username'].'&nbsp;</td>';
    echo '<td>'.($user['state']==1 ? '&nbspbun&nbsp&nbsp': 'unban').'</td>';
    
                 if($user['state'] == 1){
                 echo'<td><input name="unblock" type="submit" value="'.$user['id'].'" /></td>';
                 } else {
                echo'<td><input name="unblock" type="submit" value="'.$user['id'].'">'.($user['state']==1 ? '&nbspbun&nbsp&nbsp': 'unban' ).'</td>';
                 }
            echo'</tr>';
                     
            }?>
 
        </table>
    </form>
</div>
выбивает вот такие ошибки
0
Миниатюры
Изменение состояния кнопки и поля в бд по клику  
DeadDance
1 / 1 / 0
Регистрация: 16.06.2013
Сообщений: 46
27.10.2016, 00:38  [ТС] 15
кароче разобрался ... снял ключи.... все заработало ... но не так как хотелось.. надо заюзать AJAX а то обновление происходит не сразу при 1ом клике а после 2ого ) вот более-менее рабочий код
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
    <?php
    include("/connection.php");
    mysql_select_db("userlistdb" ,$con);   //site - имя БД
    $users = mysql_query("SELECT * FROM usertbl" ,$con); //Выбирает поля name и text из таблицы links
 
    // Блок
    if(isset($_POST['block']))
    {
        
        $id =$_POST['block'];
        mysql_query('UPDATE `usertbl` SET `state` = 0 WHERE `id` = ' . $id);
        
    }
 
    // Разблок
    if(isset($_POST['unblock']))
    {
        $id = $_POST['unblock'];
        mysql_query('UPDATE `usertbl` SET `state` = 1 WHERE `id` = ' . $id);
        
    }
?>
 </div>
<div class="main">
    <form method="post">
 
        <table>
            <tr>             
                <th>full_name</th>
                <th>e-mail</th>
                <th>username</th>
                <th>state</th>
                <th>id</th>
                <th></th>
            </tr>
            <tr>     
            <?php while($user=mysql_fetch_assoc($users)){
    
    echo '<td>'.$user['full_name'].'&nbsp;</td>';
    echo '<td>'.$user['email'].'&nbsp;</td>';
    echo '<td>'.$user['username'].'&nbsp;</td>';
    echo '<td>'.($user['state']==1 ? '&nbspbun&nbsp&nbsp': 'unban').'</td>';
    
                 if($user['state'] == 1){
                 echo'<td><input name="block" type="submit" value="'.$user['id'].'" /></td>';
                 } else {
                echo'<td><input name="unblock" type="submit" value="'.$user['id'].'" /></td>';
                 }
            echo'</tr>';
                     
            }?>
 
        </table>
    </form>
</div>
0
27.10.2016, 00:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2016, 00:38

Изменение таблицы в форме в зависимости от состояния поля со списком Access 2007
Доброго времени суток. Подскажите, как изменить содержимое получаемое формой...

Запрет на изменение внутреннего состояния поля коллекции, доступное через свойство класса
Привет всем. Возник такой вопрос. Как мне запретить изменять внутреннее...

Добавление кнопки "Обзор" // Изменение свойств поля,изменение значения по 2му шелчку
Доброго времени суток! Есть форма для будущего заполнения пустой базы данных...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru