Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Kick
Forum PHP.pl > Forum > Przedszkole
GoodStuff
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. }
Aqu
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']; facepalmxd.gif

Dodaj sobie w tym formularzu ukryte pole - input type hidden.
GoodStuff
Gdy to dam co wtedy?
Aqu
Przekaż w nim ID gracza, którego chcesz wyrzucić.
GoodStuff
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 />';}
Neymar11
Wiesz co? Nie wiem czy to przez to ale chyba w zapytaniu apostrofy zgubiłeś smile.gif
Aqu
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?
GoodStuff
Cytat(Neymar11 @ 23.02.2015, 22:06:18 ) *
Wiesz co? Nie wiem czy to przez to ale chyba w zapytaniu apostrofy zgubiłeś 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. }

Aqu
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.  
Neymar11
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)
GoodStuff
Dzięki za pomoc. Aqu To rozwiązało wiele moich problemów smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.