Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Kick
GoodStuff
post
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.04.2013

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


Cześć, kolejny problem napisałem pokoje i próbuję zrobić opcje wyrzucenia gracza z pokoju. Wyświetlam w pętli graczy a obok dorobiłem button z opcją wyrzucenia problem polega na tym, że nie wiem jakie dokładnie zapytanie dać. Aktualnie kasuje po przez button pierwszą osobę z listy...


Kawałek kodu z pokoje.php
  1. $gracze = $db->query("SELECT * FROM pokoje_gracz Where id_pokoje=".$shout['id']."");
  2. echo'</td>
  3. <td class="tg-031e" colspan="3" rowspan="4">Gracze:<br />'; while($gracze_pokoje=mysqli_fetch_array($gracze)) { echo'-<a href="profile.php?id='.$gracze_pokoje['id_gracza'].'">'.$gracze_pokoje['nazwa_gracz'].'</a>';
  4. if($shout['id_wlasciciela'] == $user['id'])
  5. {
  6. echo '<form action="?" method="POST"><button type="submit" name="kick" class="kick"></button></form>';
  7. }
  8. echo'<br />';}




Button kick
  1. if(isset($_POST['kick']))
  2. {
  3. $gracze = $db->query("SELECT * FROM pokoje_gracz Where id_pokoje=".$shout['id']."");
  4. $gracze1=mysqli_fetch_array($gracze);
  5. $id_pokoje = $shout['id'];
  6. $id_gracza = $gracze1['id_gracza'];
  7.  
  8.  
  9.  
  10. $db->query("DELETE FROM pokoje_gracz Where id_gracza=$id_gracza and id_pokoje=$id_pokoje")
  11. or die(mysql_error());
  12.  
  13.  
  14.  
  15. header('Location: '.$_SERVER['REQUEST_URI']);
  16. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Aqu
post
Post #2





Grupa: Zarejestrowani
Postów: 279
Pomógł: 58
Dołączył: 14.07.2012

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


W jaki sposób Twój kod miałby działać? Nie przekazujesz w tym formularzu, którego gracza chcesz wyrzucić. Potem pobierasz wszystkich graczy i bierzesz sobie jakiegoś: $id_gracza = $gracze1['id_gracza']; (IMG:style_emoticons/default/facepalmxd.gif)

Dodaj sobie w tym formularzu ukryte pole - input type hidden.
Go to the top of the page
+Quote Post
GoodStuff
post
Post #3





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.04.2013

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


Gdy to dam co wtedy?
Go to the top of the page
+Quote Post
Aqu
post
Post #4





Grupa: Zarejestrowani
Postów: 279
Pomógł: 58
Dołączył: 14.07.2012

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


Przekaż w nim ID gracza, którego chcesz wyrzucić.
Go to the top of the page
+Quote Post
GoodStuff
post
Post #5





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.04.2013

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


Zrobiłem w ten sposób ale usuwa wszystkich ...

  1. while($gracze_pokoje=mysqli_fetch_array($gracze)) { echo'-<a href="profile.php?id='.$gracze_pokoje['id_gracza'].'">'.$gracze_pokoje['nazwa_gracz'].'</a>';
  2. if(isset($_POST['kick']))
  3. {
  4.  
  5. $id_pokoje = $shout['id'];
  6. $id_gracza = $gracze_pokoje['id_gracza'];
  7.  
  8.  
  9.  
  10. $db->query("DELETE FROM pokoje_gracz Where id_gracza=$id_gracza and id_pokoje=$id_pokoje")
  11. or die(mysql_error());
  12.  
  13.  
  14.  
  15. header('Location: '.$_SERVER['REQUEST_URI']);
  16. }
  17. if($shout['id_wlasciciela'] == $user['id'])
  18. {
  19. echo '<form action="?" method="POST"><button type="submit" name="kick" class="kick"></button></form>';
  20. }
  21. echo'<br />';}
Go to the top of the page
+Quote Post
Neymar11
post
Post #6





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 20.02.2015
Skąd: localhost

Ostrzeżenie: (10%)
X----


Wiesz co? Nie wiem czy to przez to ale chyba w zapytaniu apostrofy zgubiłeś (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Aqu
post
Post #7





Grupa: Zarejestrowani
Postów: 279
Pomógł: 58
Dołączył: 14.07.2012

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


Podstawia tam chyba liczby, więc apostrofy mu niepotrzebne.

I gdzie w tym kodzie jest hidden input? Gdzie go odbierasz i na podstawie tego usuwasz gracza?
Go to the top of the page
+Quote Post
GoodStuff
post
Post #8





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.04.2013

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


Cytat(Neymar11 @ 23.02.2015, 22:06:18 ) *
Wiesz co? Nie wiem czy to przez to ale chyba w zapytaniu apostrofy zgubiłeś (IMG:style_emoticons/default/smile.gif)


Nie nie tutaj apostrofy nie mają znaczenia:

Chodzi o petlę jak to wykonać po za nią..

  1. while($gracze_pokoje=mysqli_fetch_array($gracze)) { echo'-<a href="profile.php?id='.$gracze_pokoje['id_gracza'].'">'.$gracze_pokoje['nazwa_gracz'].'</a>';
  2. if($_POST['send'] == 4){
  3.  
  4. $id_pokoje = $shout['id'];
  5. $id_gracza = $gracze_pokoje['id_gracza'];
  6.  
  7. $result = $db->query("DELETE FROM pokoje_gracz Where id_gracza=$id_gracza and id_pokoje=$id_pokoje")
  8.  
  9. echo "<br />";
  10. echo $result;
  11. echo "<br />";
  12. echo $id_pokoje;
  13. echo "<br />";
  14. echo $id_gracza;
  15. echo "<br />";
  16.  
  17. }
  18. if($shout['id_wlasciciela'] == $user['id'])
  19. {
  20. echo '<form action="?" method="POST"> <input type="hidden" name="send" value="4" /><button type="submit" name="kick" class="kick"></button></form>';
  21. }
  22. echo'<br />';}



Wszystko gra tak jak powinno przy sprawdzeniu usuwa poprawnie ale jako button kick naciskając na jeden usuwa wszystkich

przykładowo jest 2 graczy

gracz a i gracz b

przy wywołaniu echo
  1. gracz a
  2. echo result = 1
  3. echo id_pokoje = 19
  4. echo id gracza = 8
  5.  
  6. gracz b
  7. echo result = 1
  8. echo id_pokoje = 19
  9. echo id gracza = 9
  10.  



Więc zapytanie jest jak najbardziej ok. Tylko ta pętla...


Cytat(Aqu @ 23.02.2015, 22:09:10 ) *
Podstawia tam chyba liczby, więc apostrofy mu niepotrzebne.

I gdzie w tym kodzie jest hidden input? Gdzie go odbierasz i na podstawie tego usuwasz gracza?


  1. echo '<form action="?" method="POST"> <input type="hidden" name="send" value="4" /><button type="submit" name="kick" class="kick"></button></form>';


  1. if($_POST['send'] == 4){
  2.  
  3. $id_pokoje = $shout['id'];
  4. $id_gracza = $gracze_pokoje['id_gracza'];
  5.  
  6. $result = $db->query("DELETE FROM pokoje_gracz Where id_gracza=$id_gracza and id_pokoje=$id_pokoje")
  7.  
  8. echo "<br />";
  9. echo $result;
  10. echo "<br />";
  11. echo $id_pokoje;
  12. echo "<br />";
  13. echo $id_gracza;
  14. echo "<br />";
  15.  
  16. }

Go to the top of the page
+Quote Post
Aqu
post
Post #9





Grupa: Zarejestrowani
Postów: 279
Pomógł: 58
Dołączył: 14.07.2012

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


1. IF wyrzuć z pętli, przecież to nie ma sensu.
2. Nie sprawdzaj if($_POST['send'] == 4), chcesz stworzyć odzielny IF dla każdego gracza?

  1. 3. <input type="hidden" name="kickPlayerId" value="ID GRACZA">
  2. 4. if(isset($_POST)) {
  3. // DELETE FROM tabela WHERE room=xx AND player_id=$_POST['kickPlayerId']
  4.  
  5. }
  6.  
  7. 5. Zabezpiecz to przed sql injection.
  8.  


Ten post edytował Aqu 23.02.2015, 22:16:25
Go to the top of the page
+Quote Post
Neymar11
post
Post #10





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 20.02.2015
Skąd: localhost

Ostrzeżenie: (10%)
X----


Spróbuj taką strukturę kodu:

  1. if($_POST['send'] == 4){
  2.  
  3. $id_pokoje = $shout['id'];
  4. $id_gracza = $gracze_pokoje['id_gracza'];
  5.  
  6. $q = "DELETE FROM pokoje_gracz Where id_gracza='$id_gracza' and id_pokoje='$id_pokoje'";
  7. $result = $db->query($q)
Go to the top of the page
+Quote Post
GoodStuff
post
Post #11





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.04.2013

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


Dzięki za pomoc. Aqu To rozwiązało wiele moich problemów (IMG:style_emoticons/default/smile.gif)

Ten post edytował GoodStuff 23.02.2015, 22:40:33
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: 27.12.2025 - 03:14