Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt
Forum PHP.pl > Forum > Bazy danych > MySQL
raxon
  1. <?php
  2. $connect = mysql_connect("x.x.x.100", "root", "123456");
  3. ?>
  4. <form action="?action=change" method="post">
  5. Nick: <input type="text" name="name"><br>
  6. Czas: <input type="text" name="availDt"><br>
  7. <input type="submit" value="Banuj">
  8. </form>
  9. <?php
  10. /********** KONFIGURACJA KOMUNIKATÓW *************/
  11. $msg['success'] = "Zbanowany";
  12. $msg['not_exist'] = "Niema Takiego gracza";
  13. $msg['not_some'] = "Podane hasła do siebie nie pasują!";
  14. /*************************************************/
  15. $nick = $_REQUEST['name'];
  16. $czas = $_REQUEST['availDt'];
  17. $db = mysql_select_db("account" "player");
  18. IF($_REQUEST['action']=='ban')
  19. {
  20. {
  21. $szukaj = mysql_num_rows(mysql_query("SELECT accountid FROM player WHERE name='$nick')) > 0)
  22.  
  23. $ban1 = mysql_num_rows(mysql_query("SELECT * FROM account WHERE id='$szukaj')) > 0)
  24.  
  25. $update = mysql_query("UPDATE account SET status=('BLOCK') AND availDt=('$czas') WHERE $szukaj='$ban1'") OR die(mysql_error());
  26. IF($update==true)
  27. {
  28. echo $msg['success'];
  29. }
  30.  
  31. else
  32. {
  33. echo "<b>Błąd</b><br>".$msg['not_exist'];
  34. }
  35. }
  36. }
  37. ?>



Napisałem coś takiego i czy jest dobrze napisany
ma robic cos takiego

1. wyszukuje danych w bazie "player" o danym "name" i kopiuje accountid z tej tabeli
2. odczytuje wynik z pk 1 i wyszukuje ten winyik z pkt, 1 w rekordzie "id"
3. jak znajdzie to zmieni dane tabeli na te co podałem "status=('BLOCK') AND availDt=('$czas')"

prosze o sugestie co zle a co dobrze
Mchl
PHP przemieszane z HTML - jak ktoś lubi oldschool to może być.

Błędy składniowe: brakuje zamkniętych cudzysłowów i średników na końcu polecenia.

Zero zabezpieczenia przed SQL injection.

Składnia UPDATE jest trochę inna:
Kod
UPDATE tabela SET pole1 = wartosc1, pole2 = wartosc2 WHERE ...

tak jak masz teraz, ustawiasz pole `status` na wynik koniunkcji ('BLOCK') AND availDt=('$czas')
Mion
Tu jest źle IF($update==true)
jak już to po wykonaniu UPDATE należy wywołać funkcję int mysql_affected_rows ([ resource $link_identifier ] )
i w zależności od tego czy zwróci 0, 1 sterować dalszym kodem..
----
Tak poza tym ten kod jest tak naładowany psarser eror'ami, że szok!
Mchl
I na dokładkę: "Nie ma" to dwa słowa. tongue.gif

A sensu tego:
Kod
WHERE $szukaj='$ban1'
w ogóle nie rozumiem.
raxon
  1. <?php
  2. $connect = mysql_connect("x.x.x.100", "root", "123456");
  3. ?>
  4. <form action="?action=change" method="post">
  5. Nick: <input type="text" name="name"><br>
  6. Czas: <input type="text" name="availDt"><br>
  7. <input type="submit" value="Banuj">
  8. </form>
  9. <?php
  10. /********** KONFIGURACJA KOMUNIKATÓW *************/
  11. $msg['success'] = "Zbanowany";
  12. $msg['not_exist'] = "Niema Takiego gracza";
  13. $msg['not_some'] = "Podane hasła do siebie nie pasują!";
  14. /*************************************************/
  15. $nick = $_REQUEST['name'];
  16. $czas = $_REQUEST['availDt'];
  17. $db = mysql_select_db("account" "player");
  18. IF($_REQUEST['action']=='ban')
  19. {
  20. {
  21. $szukaj = mysql_num_rows(mysql_query("SELECT accountid FROM player WHERE name='$nick')) > 0)
  22.  
  23. $ban1 = mysql_num_rows(mysql_query("SELECT * FROM account WHERE id='$szukaj')) > 0)
  24.  
  25. $update = mysql_query("UPDATE account SET status = 'BLOCK', availDt = '$czas' WHERE $szukaj=$ban1") OR die(mysql_error());
  26.  
  27. }
  28. ?>


Teraz? poprawione Jak coś jest źle proszę powiedzcie
Mchl
Na 6 czy 7 wuwag, poprawiłeś jedną rzecz. Jak dla mnie super.
raxon
NO weź proszę dopiero zaczynam z tym nie wiem wszystkiego ;/
Mchl
Masz włączone raportowanie błędów?

Jeśli nie wstaw sobie:

Kod
<?php
error_reporting(E_ALL);
ini_set('display_errors','On');
?>


na początku. Będą Ci leciały komunikaty błędów z numerem linii gdzie masz błąd. Po kolei naprawiaj, aż będziesz miał czysto.

Będziesz wtedy na etapie skryptu który przynajmniej nie rozsypuje się w połowie. Potem zajmiesz się poprawianiem logiki.
raxon
  1. $ban = mysql_num_rows(mysql_query("SELECT * FROM account WHERE id='$szukaj')) > 0)


CO w tym jest źle?
Mchl
  1. $ban = mysql_num_rows(mysql_query("SELECT * FROM account WHERE id='$szukaj'")) > 0);


I tak w zasadzie powinieneś się z tym udać do działu PHP, bo z MySQL to niewiele ma wspólnego.
raxon
cos jeszcze zle jest
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.