За последние 24 часа нас посетили 34460 программистов и 1711 роботов. Сейчас ищут 759 программистов ...

Проблема с mysql_query

Тема в разделе "PHP для новичков", создана пользователем Terminator004, 6 янв 2018.

  1. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Вот так выгледит сейчас:
    upload_2018-1-4_23-11-39.png

    Я хочу, чтобы когда впишешь в тот текстовый input допустим "1", так у того пользователя вместо уже Пользователь[0], будет Администратор[1]. Ну я как бы всё сделал , но у меня все пользователи делаюются 1, вообщем я не знаю как сделать, чтоб именно для того пользователя сменилось.

    PHP:
    1. <?php
    2. $id = $_SESSION['id'];
    3.             $mysqli = mysqli_connect("localhost", "root", "", "nobiblio");
    4.             $res = mysqli_query($mysqli, "SELECT `status` FROM `users` WHERE  `id`='" . $id . "'");
    5.          
    6.          
    7.             if ($res) {
    8.                 $status = mysqli_fetch_assoc($res);
    9.                 if ($status['status'] == 0) {
    10.                     $flag = false;
    11.                     $result = mysqli_query($mysqli, "SELECT login,id,status FROM users ORDER BY login");
    12.                     ?>Список пользователей для <b>пользователя:</b><br><?php
    13.                     while ($myrow = mysqli_fetch_array($result)) {?>
    14.                     <p>          
    15.                   <?php  
    16.                   if($myrow['status'] == 0) {$kas = "Пользователь";}
    17.                         else if($myrow['status'] == 1){$kas = "Администратор";}
    18.                   echo '<br> Пользователь является - <b>'. $kas.'</b> - &nbsp;';
    19.                   printf("<a href='page.php?id=%s'>%s</a><br>", $myrow['id'], $myrow['login']);     }?>            
    20.                     <p>
    21.                     <?php
    22.                  }
    23.                else if($status['status'] == 1){
    24.                      $flag = true;
    25.                     $result = mysqli_query($mysqli, "SELECT login,id,status,email,activation,date FROM users ORDER BY login");
    26.      
    27.                     ?><hr><h2>Список пользователей для <b>Администратора:</b></h2><?php
    28.              
    29.                     while ($myrow = mysqli_fetch_array($result)) {?>
    30.                     <p>
    31.                         <?php if($flag){?>
    32.                      
    33.                         <span><?php
    34.                         if($myrow['activation'] == 0) {$da = "Нет";}
    35.                         else if($myrow['activation'] == 1){$da = "Да";}
    36.                      
    37.                         if($myrow['status'] == 0) {$kas = "Пользователь";}
    38.                         else if($myrow['status'] == 1){$kas = "Администратор";}
    39.                      
    40.                         $mylogin='<br>'.$myrow['login'];
    41.                         $myid=$myrow['id'];
    42.                      
    43.              
    44.                      
    45.                         printf("<a href='page.php?id=%s'>%s</a><br>",$myid, $mylogin );
    46.                         echo 'ID - <b>'.$myrow['id'].'</b>';
    47.                  
    48.  
    49.                         echo '<br> Пользователь является - <b>'
    50.                         .$kas.'['.$myrow['status'].']</b> <Br> Эл. Почта - <b>'
    51.                         .$myrow['email'].'</b><br> Пользователь подтвердил регистрацию? - <b>'
    52.                         .$da.'</b><Br>Дата регистрации: <b>'.$myrow['date'].'</b>';
    53. print <<<HERE
    54.                         <form method='post'>
    55.                         Назначить должность:<br>
    56.                         <input name='status' type='text'>
    57.                         <input type='submit' name='submit' value='изменить'>
    58.                      
    59.                         </form>
    60. HERE;
    61. $statusas = $_POST['status'];
    62. if (isset($_POST['status']))//Если существует status
    63.       {
    64.           mysql_query("UPDATE users SET status='$statusas' WHERE id='$id'",$db);
    65.           echo "<meta http-equiv='refresh' content='0;url=#'>";
    66.       }
    67.                      
    68.                         ?></span>
    69.                      
    70.                      
    71.                         <?php }
    72.              
    73.                     }?>
    74.                     <p>
    75.                <?php
    76.              
    77.                }
    78.            
    79.          
    80.             }
    81.           ?>

    Я даже знаю где проблема, но как там написать правильно, я не знаю.
    PHP:
    1. mysql_query("UPDATE users SET status='$statusas' WHERE id='$id'",$db);
    После WHERE уже и не правильно.
     
    #1 Terminator004, 6 янв 2018
    Последнее редактирование: 6 янв 2018
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Даже не догадываетесь... Судя по стилю кода и названию переменных, особенно $myrow, ваша проблема в Женечке Попове или его адептах ;)

    Пока ваш код не успели обложить трёхэтажными "эпитетами", я дам вам пищу для размышления:
    1. Почему в одном случае вы используете расширение mysqli_*, а в другом mysql_*.
    2. При этом, во втором случае используете переменную $db, которой должен был быть присвоен идентификатор соединения, но сама переменная в коде нигде не объявлена и ничего ей не присвоено.
    3. Полная загадка с переменной $id. Почему она используется в самом первом запросе, еще понятно, но почему она же используется для запроса UPDATE - ХЗ. Не задумывались над тем, чтобы передавать значение ID из формы вместе со статусом? И кстати, session_start() где потеряли?
    4. Превосходно получается: сначала вы присваиваете переменной $statusas значение $_POST['status'], а только потом проверяете: существует $_POST['status'] или нет ))
     
    MouseZver нравится это.
  3. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Так это не весь код я показал, выше там есть и session_start() и подключение к дб... Но у меня всё-ровно проблема не исправляется.
    PHP:
    1. <?php
    2.  
    3. include ("bd.php");
    4.  
    5. if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
    6. {
    7. $login = $_SESSION['login'];
    8. $password = $_SESSION['password'];
    9. $result2 = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db);
    10. $myrow2 = mysql_fetch_array($result2);
    11. if (empty($myrow2['id']))
    12.    {
    13.     exit("Вход на эту страницу разрешен только зарегистрированным пользователям!");
    14.    }
    15. }
    16. else {
    17. exit("Вход на эту страницу разрешен только зарегистрированным пользователям!"); }
    18. ?>
    19. <html>
    20. <head>
    21. <title>Список пользователей</title>
    22. </head>
    23. <body>
    24. <h2>Список пользователей</h2>
    25.  
    26. <?php
     
  4. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    надо весь код с базой
     
  5. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    причем тут база, вот тут нужно правильно написать
    PHP:
    1. mysql_query("UPDATE users SET status='$statusas' WHERE id='$id'",$db);
     
  6. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    :eek: не надо! Я уже старенький и мне нервы беречь нужно.
    --- Добавлено ---
    "правильно" и "чтоб работало" вещи совместимые, но разные по определению. У вас код рабочий. А причину, почему результат у вас не такой, как ожидаете, я уже написал выше - из формы вы не передаёте ID конкретного пользователя.
     
  7. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Хорошо, я понял, что нужно когда нажимаешь на кнопку, так она как-то проверила бы ид. Что-то в name нужно написать, где input type submit.
     
  8. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    В секеле этот код работает?