Strona 1 z 1
Mała przeróbka.
: 06 października 2009, 14:50
autor: Crypt3r
Chciałbym się dostać przez plik mojplik.php do bazy danych wykorzystując zapytanie sql dla pola user_misup w tabeli phpbb_users, używa tego:
Kod: Zaznacz cały
$sql = mysql_query("SELECT id,value FROM phpbb_users WHERE user_minusp='".$userdata['user_id']."' ORDER BY id DESC LIMIT 1");
Chciałbym ustawić wartość value czyli liczba user_minusp żeby było konfigurowalna przez ten plik. Co mam źle w tej linijce?
Wykorzystałem już chyba wszystkie możliwe pomysły. Proszę o Pomoc.
Re: Mała przeróbka.
: 06 października 2009, 15:02
autor: jaroslw
Może opisz to dokładniej (przedstaw jak wygląda struktura tej tabeli). Polecenie SELECT służy wyłącznie do pobierania (wyszukiwania) danych, a nie ich modyfikacji. Jeśli chcesz zaktualizować istniejące dane skorzystaj z polecenia UPDATE. Jeśli chcesz dodać nowe wiersze do tabeli, wykorzystaj polecenie INSERT.
Re: Mała przeróbka.
: 06 października 2009, 15:41
autor: Crypt3r
To tak może po kolei. Mam pewną modyfikację która daje punkty dla użytkowników, coś na zasadzie Points_System w phpbb2.
Mam plik: mojplik.php i w nim sa rozne funkcje. Chciałbym tym plikiem zdejmować różne punkty i chodziło mi o to jak dać zapytanie sql ja powyżej jest żeby zdejmować to z tabeli głównej: phpbb_users dla pola user_minusp jak ustawię tak jak tutaj:
Kod: Zaznacz cały
$sql = mysql_query("SELECT id,value FROM phpbb_users WHERE user_minusp='".$userdata['user_id']."' ORDER BY id DESC LIMIT 1");
to mam napisane, że nie mam ostrzeżenia gdzie w mysql to ostrzeżenie jest.
Re: Mała przeróbka.
: 06 października 2009, 16:32
autor: jaroslw
Jeśli dobrze rozumiem to chodzi Ci o coś takiego:
Kod: Zaznacz cały
$sql = mysql_query("UPDATE phpbb_users SET id = 'WARTOŚĆ', value = 'WARTOŚĆ' WHERE user_minusp = '{$userdata['user_id']}'");
PS. Zmień nazwę tematu na opisującą pokrótce problem!
Re: Mała przeróbka.
: 06 października 2009, 16:43
autor: Crypt3r
No sprawdzę, czy to pracuje i dam znać jak coś, jak na razie to dzięki

Re: Mała przeróbka.
: 07 października 2009, 17:03
autor: Crypt3r
No ok. Zrobiłem wszystklo tak jak należy ale jak wybieram opcję usunięcia ostrzeżenia to dalej to nie działa... Pokazuje się tylko informacja o tym: Nie posiadasz ostrzeżeń jak to ostrzeżenie mam. Dobra przyznam się, robię system płatności diamenty i tylko w tym jestem zawieszony, podam może całą cześć dla ostrzeżeń:
Kod: Zaznacz cały
$warn_points = $board_config['warndiamenty'];
if($userdata['session_logged_in'] && $_GET['wybierz_warn'])
{
$points_warn = $userdata['user_diamenty'] - $warn_points;
$odejmijwarn = $sprawdz['value'] - 1;
if($userdata['user_diamenty'] >= $warn_points)
{
$sprawdz = mysql_query("SELECT id,value FROM phpbb_users WHERE user_minusp='".$userdata['user_id']."' ORDER BY id DESC LIMIT 1");
if($sprawdz['value'] == '1')
{
$sql = mysql_query("INSERT INTO `phpbb_diamenty_przywileje` (`user_id`,`username`,`nazwa`,`data`,`diamenty`)
VALUES ('" . $userdata['user_id'] . "','" . $userdata['username'] . "','Zdjęcie Ostrzeżenia','" . $date . "','" . $warn_points . "')" );
$sql = mysql_query("UPDATE phpbb_users SET user_diamenty='" . $points_warn . "'
WHERE user_minusp='" . $userdata['user_id'] . "'");
$sql = mysql_query("DELETE SELECT id,user_minusp FROM phpbb_users WHERE user_minusp='".$sprawdz['id']."'");
message_die(GENERAL_MESSAGE, 'Ostrzeżenie zostało zdjęte<br /><br />Kliknij <a href="./diamenty.php"><b>Tutaj</b></a> aby powrócić do diamentów<br />');
}
else if($sprawdz['value'] > '1')
{
$odejmijwarn = $sprawdz['value'] - 1;
$sql = mysql_query("INSERT INTO `phpbb_diamenty_przywileje` (`user_id`,`username`,`nazwa`,`data`,`diamenty`)
VALUES ('" . $userdata['user_id'] . "','" . $userdata['username'] . "','Zdjęcie Ostrzeżenia','" . $date . "','" . $warn_points . "')" );
$sql = mysql_query("UPDATE phpbb_users
SET user_diamenty='" . $points_warn . "'
WHERE user_minusp='" . $userdata['user_id'] . "'");
$sql = mysql_query("UPDATE SELECT id,value FROM phpbb_users SET value='$odejmijwarn' WHERE id='".$sprawdz['id']."'");
message_die(GENERAL_MESSAGE, 'Ostrzeżenie zostało zdjęte<br /><br />Kliknij <a href="./diamenty.php"><b>Tutaj</b></a> aby powrócić do diamentów<br />');
}
else
{
message_die(GENERAL_MESSAGE, 'Nie posiadasz ostrzeżenia !<br /><br />Kliknij <a href="./diamenty.php"><b>Tutaj</b></a> aby powrócić do diamentów<br />');
}
}
message_die(GENERAL_MESSAGE, 'Błąd, posiadasz za mało diamentów !<br /><br />Kliknij <a href="./diamenty.php"><b>Tutaj</b></a> aby powrócić do diamentów<br />');
}
we3b jak możesz to mi pomóż i powiedź gdzie jest błąd, dodatkowo mogę powiedzieć, że wprowadziłem system plusminus phpbb2 więc to user_minusp jest niezbędne. Jeszcze raz bardzo proszę o Pomoc....
Re: Mała przeróbka.
: 08 października 2009, 14:32
autor: jaroslw
Pierwsza sprawa to źle skonstruowane zapytania SQL (przejrzyj jakiś kurs na temat ich podstawowej budowy, jest tylko kilka typów). Proponuję też zajrzeć do działu „
Bazy danych” i zapoznać się z warstwą operacji na bazie danych w phpBB.
Re: Mała przeróbka.
: 08 października 2009, 15:59
autor: Crypt3r
Myślałem, że dostanę pomoc tutaj na Forum a tym czasem dostaje odsyłacz, do nauki o bazach danych. Do niczego mnie nie prowadzi ten odsyłacz. A z drugiej strony skoro zrobiłem resztę na podobnej zasadzie to dlaczego akurat odpowiedź:
Pierwsza sprawa to źle skonstruowane zapytania SQL
. No więc może akurat dostanę jakąś odpowiedź czy raczej nie?
Re: Mała przeróbka.
: 09 października 2009, 17:34
autor: jaroslw
Mam przepisać za Ciebie cały kod? To do niczego nie prowadzi. Podałem już wcześniej wskazówki co jest źle. Polecenie
SELECT nie jest jedynym wykorzystywanym. Składnia polecenia
DELETE powinna wyglądać następująco:
Kod: Zaznacz cały
mysql_query("DELETE id, user_minusp FROM phpbb_users WHERE user_minusp = '$sprawdz['id']'");
W drugim zapytaniu
UPDATE również niepotrzebnie występuje
SELECT. Składniowo powinno wyglądać tak jak w moim drugim poście.
Wychodzę z założenia, że jeżeli sam to pisałeś, instrukcje warunkowe i operacje na zmiennych są dobrze ułożone i nie w nich leży problem (ten fragment kodu wiele mi nie mówi na temat funkcjonowania skryptu). Zasugerowałem przejrzenie kursu PHP/SQL, ponieważ w kodzie panuje bałagan. Może i to działa, aczkolwiek czasami nie jest potrzebne tyle apostrofów czy cudzysłowów. Przykład:
Kod: Zaznacz cały
$sql = mysql_query("INSERT INTO phpbb_diamenty_przywileje (user_id, username, nazwa, data, diamenty) VALUES ('$userdata['user_id']', '$userdata['username']', 'Zdjęcie Ostrzeżenia', '$date', '$warn_points')");