Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem ze skryptem aktualizującym
Vertisan
post
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 8.08.2014

Ostrzeżenie: (0%)
-----


Witam!

Mam sobie taki kod HTML (a konkretniej link):
  1. <a href="?rank='.$row['user_id'].'" class="btn btn-info btn-sm text-right" name="rank"> Zmień rangę </a>


oraz PHP:
  1.  
  2. if( isset($_GET['rank']) )
  3. {
  4. $rank = $_GET['rank'];
  5. $a_rank=mysql_query('SELECT `user_rank` FROM users');
  6. $res_a_rank = mysql_fetch_array($a_rank);
  7.  
  8. if ($res_a_rank['user_rank'] == 1) {
  9.  
  10. $sql= "UPDATE users SET `user_rank` = '0' WHERE user_id = '$rank' ";
  11. $res= mysql_query($sql) or die("Wystąpił błąd podczas zmiany uprawnien!".mysql_error());
  12. echo "<meta http-equiv='refresh' content='0;url=listUsers.php'>";
  13. } elseif ($res_a_rank['user_rank'] == 0) {
  14.  
  15. $sql= "UPDATE users SET `user_rank` = '1' WHERE user_id = '$rank' ";
  16. $res= mysql_query($sql) or die("Wystąpił błąd podczas zmiany uprawnien!".mysql_error());
  17. echo "<meta http-equiv='refresh' content='0;url=listUsers.php'>";
  18. }
  19.  
  20. }


Problem polega na tym, że po kliknięciu w link zmienia się wartość 1 -> 0, ale 0 -> 1 już nie.
Ma ktoś pomysł?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 18)
Wazniak96
post
Post #2





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

Ostrzeżenie: (0%)
-----


Zamień
  1. $a_rank=mysql_query('SELECT `user_rank` FROM users');

Na
  1. $a_rank=mysql_query('SELECT `user_rank` FROM users WHERE user_id='.$rank);


Ps: Zdajesz sobie sprawę, że twój skrypt jest dziurawy jak sito? (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Vertisan
post
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 8.08.2014

Ostrzeżenie: (0%)
-----


Nie bardzo działa ...
Dopiero się ucze (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Jeżeli tylko zmieniasz zamiennie to możesz tak:

  1. if( isset($_GET['rank']) )
  2. {
  3. $rank = $_GET['rank'];
  4. $sql = "UPDATE users SET `user_rank` = NOT `user_rank` WHERE user_id = '$rank' ";
  5. $res= mysql_query($sql) or die("Wystąpił błąd podczas zmiany uprawnien!".mysql_error());
  6. echo "<meta http-equiv='refresh' content='0;url=listUsers.php'>";
  7. }
Go to the top of the page
+Quote Post
Vertisan
post
Post #5





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 8.08.2014

Ostrzeżenie: (0%)
-----


Cytat(Pyton_000 @ 8.08.2014, 17:32:52 ) *
Jeżeli tylko zmieniasz zamiennie to możesz tak:

  1. if( isset($_GET['rank']) )
  2. {
  3. $rank = $_GET['rank'];
  4. $sql = "UPDATE users SET `user_rank` = NOT `user_rank` WHERE user_id = '$rank' ";
  5. $res= mysql_query($sql) or die("Wystąpił błąd podczas zmiany uprawnien!".mysql_error());
  6. echo "<meta http-equiv='refresh' content='0;url=listUsers.php'>";
  7. }


Nic nie dało ...
Go to the top of the page
+Quote Post
Pyton_000
post
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Co nic nie dało?
Go to the top of the page
+Quote Post
Vertisan
post
Post #7





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 8.08.2014

Ostrzeżenie: (0%)
-----


To samo co na początku ...
Jeżeli jest ustawione 1 to zmienia na 0, a jeżeli jest 0 to nic nie robi.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Zamieniłeś całość co miałeś tym co podałem?
Go to the top of the page
+Quote Post
Forti
post
Post #9





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


Pobierasz cala tabele zamiast pojedynczy rekord user_id. W pierwszym zapytaniu dodaj WHERE. Wowczas powinno dzialac. Pokaz kod jaki masz po obecnych zmianach.

I tak, ten kod jest jak sitko z samymi uchwytami bez sitka (IMG:style_emoticons/default/smile.gif)


Pisze z telefonu wiec kodu ci nie podam.
Go to the top of the page
+Quote Post
Vertisan
post
Post #10





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 8.08.2014

Ostrzeżenie: (0%)
-----


Cytat(Pyton_000 @ 9.08.2014, 12:10:30 ) *
Zamieniłeś całość co miałeś tym co podałem?


Tak

Cytat(Forti @ 9.08.2014, 12:12:35 ) *
Pobierasz cala tabele zamiast pojedynczy rekord user_id. W pierwszym zapytaniu dodaj WHERE. Wowczas powinno dzialac. Pokaz kod jaki masz po obecnych zmianach.

I tak, ten kod jest jak sitko z samymi uchwytami bez sitka (IMG:style_emoticons/default/smile.gif)


Pisze z telefonu wiec kodu ci nie podam.


  1. if( isset($_GET['rank']) )
  2. {
  3. $rank = $_GET['rank'];
  4. $a_rank=mysql_query('SELECT `user_rank` FROM users WHERE user_id ='.$rank.' ');
  5. $res_a_rank = mysql_fetch_array($a_rank);
  6.  
  7. if ($res_a_rank['user_rank'] == 1) {
  8.  
  9. $sql= "UPDATE users SET `user_rank` = '0' WHERE user_id = '$rank' ";
  10. $res= mysql_query($sql) or die("Wystąpił błąd podczas zmiany uprawnien!".mysql_error());
  11. echo "<meta http-equiv='refresh' content='0;url=listUsers.php'>";
  12. } else if ($res_a_rank['user_rank'] == 0) {
  13.  
  14. $sql= "UPDATE users SET `user_rank` = '1' WHERE user_id = '$rank' ";
  15. $res= mysql_query($sql) or die("Wystąpił błąd podczas zmiany uprawnien!".mysql_error());
  16. echo "<meta http-equiv='refresh' content='0;url=listUsers.php'>";
  17. }
  18.  
  19. }


Coś takiego skleciłem ale nadal nic (w sensie nie zmienia rangi)
Go to the top of the page
+Quote Post
Forti
post
Post #11





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


Ty chcesz zmienic range jednego usera czy wszystkich na raz? Jak wszystkich na raz? Skasuj caly twoj kod i wstaw to co python ci napisal. Jak nie dziala to blad masz gdzie indziej..

To co wstawiles where co prpsilem: szukasz usera z user_id odpowiadajacego wartosci zmiennej rank.. (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Vertisan
post
Post #12





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 8.08.2014

Ostrzeżenie: (0%)
-----


Cytat(Forti @ 9.08.2014, 12:37:00 ) *
Ty chcesz zmienic range jednego usera czy wszystkich na raz? Jak wszystkich na raz? Skasuj caly twoj kod i wstaw to co python ci napisal. Jak nie dziala to blad masz gdzie indziej..

To co wstawiles where co prpsilem: szukasz usera z user_id odpowiadajacego wartosci zmiennej rank.. (IMG:style_emoticons/default/smile.gif)


Chce zmienić tylko jednego użytkownika, tego przy którym kliknę w link
Go to the top of the page
+Quote Post
Forti
post
Post #13





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


To musisz zrobić tak:

masz lista użytkowników. Klikasz w link i odsyła Cie np. do strony ze skryptem. w linku jako _GET pobieraj jego ID (w bazie unikalne ID dla user oczywiście). Następnie coś takiego:


  1. <?php
  2. if( isset($_GET['id']) ) //jeżeli wybraliśmy user ID
  3. {
  4. $user_id = $_GET['id']; // przypisujemy _GET do zmiennej user_id
  5. $a_rank=mysql_query('SELECT `user_rank` FROM users WHERE user_id ='.$user_id.' '); // pobieramy user_rank usera wg. jego ID
  6. $res_a_rank = mysql_fetch_array($a_rank);
  7.  
  8. if ($res_a_rank['user_rank'] == 1) { // jeżeli wartość user_rank 1 to:
  9.  
  10. $sql= "UPDATE users SET `user_rank` = '0' WHERE user_id = '$user_id' ";
  11. $res= mysql_query($sql) or die("Wystąpił błąd podczas zmiany uprawnien!".mysql_error());
  12. echo "<meta http-equiv='refresh' content='0;url=listUsers.php'>";
  13. }
  14. elseif ($res_a_rank['user_rank'] == 0) { // jeżeli wartość user_rank 0 to:
  15.  
  16. $sql= "UPDATE users SET `user_rank` = '1' WHERE user_id = '$user_id' ";
  17. $res= mysql_query($sql) or die("Wystąpił błąd podczas zmiany uprawnien!".mysql_error());
  18. echo "<meta http-equiv='refresh' content='0;url=listUsers.php'>";
  19. }
  20.  
  21. echo $res_a_rank['user_rank']; // wyświetl sobie wartość user_rank
  22.  
  23. }
  24. ?>


Jest sobota i ja nie myślę, więc mogę się mylić ale elseif piszę się razem ;]
oczywiście na stronie z listą uzytkowników musisz pobierać z bazy ich nazwy oraz id by tego przekazać.

Rozumiesz? (IMG:style_emoticons/default/wink.gif)


edit:

zastanów się nad PDO - ułatwia życie, zabezpiecza przed wieloma błędami i atakami. Troche możesz mieć problemów ze zrozumieniem i nauczeniem się, ale na prawdę warto od tego zaczynać. mysql_query przeszło do "lamusa" wieki temu i kolejne wersje php za pewne wogóle nie będą go obsługiwać.

Ten post edytował Forti 9.08.2014, 12:14:45
Go to the top of the page
+Quote Post
Pyton_000
post
Post #14





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Forti to co ja podałem realizuje dokładnie to samo tyle że dużo szybciej i prościej.

Ewidentnie błąd jest nie tu tylko w innym miejscu.

Vertisan wklej jeszcze raz mój kod do postu i po $sql = ...
daj
echo $sql; Zobacz jakie zapytania Ci się generują.
Go to the top of the page
+Quote Post
Forti
post
Post #15





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


Tak, twój kod wykona się szybciej, jednak napisałem mu tak aby zrozumiał gdzie ma błąd. Bardziej w celach edukacyjnych.
Go to the top of the page
+Quote Post
Vertisan
post
Post #16





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 8.08.2014

Ostrzeżenie: (0%)
-----


Pogubiłem się już .. (IMG:style_emoticons/default/sad.gif)
To może od początku (może coś bardziej rozjaśni).

To jest moja struktura tabeli

(IMG:http://screenshu.com/static/uploads/temporary/er/22/dz/qz1vln.jpg)


To jest kod w całości:
  1. <html>
  2. <head>
  3. <title>Zmiana rangi</title>
  4. <meta charset="utf-8">
  5.  
  6. <style>
  7. table {
  8. border: 1px solid black;
  9. }
  10. td {
  11. padding: 5px;
  12. }
  13. </style>
  14. </head>
  15. <body>
  16.  
  17.  
  18. <?php
  19.  
  20. define('DBHOST', 'localhost');
  21. define('DBUSER', 'root');
  22. define('DBPASS', '');
  23. define('DBNAME', 'service');
  24.  
  25. function db_connect() {
  26. mysql_connect(DBHOST, DBUSER, DBPASS) or die('Server MySQL nie odpowiada!');
  27.  
  28. mysql_select_db(DBNAME) or die('Nie można wybrać bazy!');
  29. }
  30.  
  31. function db_close() {
  32. }
  33.  
  34. // -------------------------------------------------------------------------------------
  35. db_connect();
  36.  
  37. if($result = mysql_query('SELECT * FROM users ORDER BY user_id'))
  38. {
  39.  
  40. echo ' <table>
  41. <thead>
  42. <tr>
  43. <th>#</th>
  44. <th>Nazwa</th>
  45. <th>Email</th>
  46. <th>Ranga</th>
  47. <th>Data rejestracji</th>
  48. <th>&nbsp</th>
  49. </tr>
  50. </thead>
  51. ';
  52.  
  53.  
  54. while($row = mysql_fetch_array($result)){
  55.  
  56. echo '<tbody>';
  57. echo '<tr>';
  58. echo '<td>' . $row['user_id'] . '</td>';
  59. echo '<td>' . $row['user_name'] . '</td>';
  60. echo '<td>' . $row['user_email'] . '</td>';
  61. echo '<td>' . $row['user_rank'] . '</td>';
  62. echo '<td>' . $row['user_regdate'] . '</td>';
  63. echo '<td> <a href="?rank='.$row['user_id'].'" name="rank"> Zmień rangę </a>';
  64.  
  65. // ---------------------------------------------------------------------
  66.  
  67. if( isset($_GET['rank']) )
  68. {
  69. $rank = $_GET['rank'];
  70. $a_rank=mysql_query('SELECT `user_rank` FROM users');
  71. $res_a_rank = mysql_fetch_array($a_rank);
  72.  
  73. if ($res_a_rank['user_rank'] == 1) {
  74.  
  75. $sql= "UPDATE users SET `user_rank` = '0' WHERE user_id = '$rank' ";
  76. $res= mysql_query($sql) or die("Wystąpił błąd podczas zmiany uprawnien!".mysql_error());
  77. } elseif ($res_a_rank['user_rank'] == 0) {
  78.  
  79. $sql= "UPDATE users SET `user_rank` = '1' WHERE user_id = '$rank' ";
  80. $res= mysql_query($sql) or die("Wystąpił błąd podczas zmiany uprawnien!".mysql_error());
  81. }
  82.  
  83. }
  84.  
  85. echo '</tr>';
  86. echo '</tbody>';
  87.  
  88. }
  89. }
  90.  
  91. echo '</table>';
  92.  
  93.  
  94. db_close();
  95. ?>
  96.  
  97. </body>
  98. </html>


I teraz.
Gdy jest ustawiona wartość na 1 to zmienia na 0, natomiast jeżeli jest 0 to nic się nie dzieje (a ma zmieniać na 1)
Go to the top of the page
+Quote Post
Pyton_000
post
Post #17





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Wywal cały ten if z rank
i wstaw to co Ci dałem zaraz po db_connect();
Go to the top of the page
+Quote Post
Forti
post
Post #18





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


Wkleiłeś to ci ci napisałem ja lub python? W linku przekazujesz $_GET['rank']. Co to jest rank? 0 lub 1 odpowiadające randze usera czy jego ID?


już wiem gdzie masz kod, zrób to co mówi python, to musi dzialać.

Co ten kod Tobie wyświetla? Bo jak dla mnie to nie powinna Ci sie wogole strona otworzyć ;] masz pobrać jednego użytkownika czy wszystkich?

Ja to cały ten kod bym skasował i napisał od nowa.


edit

Ten post edytował Forti 9.08.2014, 13:10:52
Go to the top of the page
+Quote Post
Vertisan
post
Post #19





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 8.08.2014

Ostrzeżenie: (0%)
-----


Nareszcie ...
Widzę że jeszcze sporo muszę się nauczyć (IMG:style_emoticons/default/smile.gif)
Dzięki wielkie chłopaki za pomoc (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 07:51