Mała przeróbka.

Pomoc przy instalacji oraz użytkowaniu phpBB 3.0.x. Forum nie służy do zgłaszania znalezionych błędów, innowacji lub problemów związanych ze stylami i modyfikacjami.
Crypt3r
Posty: 63
Rejestracja: 01 kwietnia 2009, 20:17

Mała przeróbka.

Post autor: Crypt3r » 06 października 2009, 14:50

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.

jaroslw
Zasłużony
Posty: 4524
Rejestracja: 10 grudnia 2005, 18:48
Kontakt:

Re: Mała przeróbka.

Post autor: jaroslw » 06 października 2009, 15:02

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.
Pobierz styl: we_universalwe_clearblue
Nowości i aktualizacje: FacebookGoogle+Twitter

Crypt3r
Posty: 63
Rejestracja: 01 kwietnia 2009, 20:17

Re: Mała przeróbka.

Post autor: Crypt3r » 06 października 2009, 15:41

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.

jaroslw
Zasłużony
Posty: 4524
Rejestracja: 10 grudnia 2005, 18:48
Kontakt:

Re: Mała przeróbka.

Post autor: jaroslw » 06 października 2009, 16:32

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!
Pobierz styl: we_universalwe_clearblue
Nowości i aktualizacje: FacebookGoogle+Twitter

Crypt3r
Posty: 63
Rejestracja: 01 kwietnia 2009, 20:17

Re: Mała przeróbka.

Post autor: Crypt3r » 06 października 2009, 16:43

No sprawdzę, czy to pracuje i dam znać jak coś, jak na razie to dzięki :)

Crypt3r
Posty: 63
Rejestracja: 01 kwietnia 2009, 20:17

Re: Mała przeróbka.

Post autor: Crypt3r » 07 października 2009, 17:03

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....

jaroslw
Zasłużony
Posty: 4524
Rejestracja: 10 grudnia 2005, 18:48
Kontakt:

Re: Mała przeróbka.

Post autor: jaroslw » 08 października 2009, 14:32

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.
Pobierz styl: we_universalwe_clearblue
Nowości i aktualizacje: FacebookGoogle+Twitter

Crypt3r
Posty: 63
Rejestracja: 01 kwietnia 2009, 20:17

Re: Mała przeróbka.

Post autor: Crypt3r » 08 października 2009, 15:59

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?

jaroslw
Zasłużony
Posty: 4524
Rejestracja: 10 grudnia 2005, 18:48
Kontakt:

Re: Mała przeróbka.

Post autor: jaroslw » 09 października 2009, 17:34

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')"); 
Pobierz styl: we_universalwe_clearblue
Nowości i aktualizacje: FacebookGoogle+Twitter

Zablokowany

Wróć do „Użytkowanie”