Problem z RPG Fields

Jeśli masz problem z nie autoryzowaną modyfikacją, nie możesz jej zainstalować lub występują błędy po jej instalacji to pisz w tym dziale.
18_groszy
Posty: 8
Rejestracja: 17 maja 2005, 14:36

Problem z RPG Fields

Post autor: 18_groszy » 02 sierpnia 2005, 10:06

Witam, zainstalowałem mod o nazwie RPG Fields (4 nowe opcje w profilu) na forum o wersji 2.0.15 i niby wszystko w porządku, ale przy akutalizacji profilu pojawia się taki error:

Could not update users table

DEBUG MODE

SQL Error : 1064 Something is wrong in your syntax obok ' user_klass=, user_race=, user_alignment= WHERE user_id = 2' w linii 2

UPDATE phpbb_users SET user_email
(...)
, user_sig_bbcode_uid = 'afd16fee67', user_viewemail = 1, user_aim = '', user_yim = '5363601', user_msnm = '', user_attachsig = 1, user_allowsmile = 1, user_allowhtml = 0, user_allowbbcode = 1, user_allow_viewonline = 1, user_notify = 0, user_notify_pm = 1, user_popup_pm = 1, hide_quick_reply = 0, user_timezone = 0, user_dateformat = 'd M Y h:i a', user_lang = 'polish', user_style = 1, user_active = 1, user_actkey = '', user_element= , user_klass=, user_race=, user_alignment= WHERE user_id = 2

Line : 525
File : usercp_register.php
Prosiłbym bardzo o pomoc. Jaki może być problem? Może istotna informacją będzie, że mam już zainstalowany mod Points System, może z nim koliduje? Czekam na rady, pozdrawiam

Awatar użytkownika
Lilly
Posty: 118
Rejestracja: 19 maja 2005, 11:53
Lokalizacja: Wrocław
Kontakt:

Post autor: Lilly » 02 sierpnia 2005, 11:13

Bledne jest zapytanie SQL w pliku usercp_register.php - to ktore, masz wyswietlone powyzej. Prawdopodobnie chodzi o to, ze po kilku "=" nie ma zadnych wartosci. Niestety, nie wiem, jakie wartosci powinny sie tam znalesc...
A to jest cos, co dodales do tego pliku instalujac moda :?: Podeslij mi najwyzej na maila albo udostepnij plik przed zmiana, po zmianie oraz instrukcje samego moda - moze bede w stanie cos pomoc.
Forum grupy konwentowo-rpgowej: Hysteria
Obrazek
Jesli pomoglam, prosze o plusika ;-)

18_groszy
Posty: 8
Rejestracja: 17 maja 2005, 14:36

Post autor: 18_groszy » 02 sierpnia 2005, 17:46

To jet dokładnie to co dodałem do pliku usercp_register.php:

Kod: Zaznacz cały

#-----[ OPEN ]------------------------------------------ 
# 
includes/usercp_register.php 

# 
#-----[ FIND ]------------------------------------------ 
# this is a partial search : the full line is longer
#
$sql = "UPDATE " . USERS_TABLE . " 
SET " 
WHERE user_id = $user_id"; 

# 
#-----[ IN-LINE FIND ]------------------------------------------ 
# 
$avatar_sql . " 

# 
#-----[ IN-LINE AFTER, ADD ]------------------------------------------ 
# 
, user_element=$element , user_klass=$klass, user_race=$race, user_alignment=$alignment

# 
#-----[ FIND ]------------------------------------------ 
# this is a partial search : the full line is longer
# 
$sql = "INSERT INTO " . USERS_TABLE . " 
VALUES ( 

# 
#-----[ IN-LINE FIND ]------------------------------------------ 
# 
, user_style 

# 
#-----[ IN-LINE AFTER, ADD ]------------------------------------------ 
# 
, user_element , user_klass, user_race, user_alignment

# 
#-----[ IN-LINE FIND ]------------------------------------------ 
# 
, $user_style 
# 
#-----[ IN-LINE AFTER, ADD ]------------------------------------------ 
# 
, '$element' , '$klass', '$race', '$alignment'

# 
#-----[ FIND ]------------------------------------------ 
# 
	$smilies_status = ( $userdata['user_allowsmile'] && $board_config['allow_smilies']  ) ? $lang['Smilies_are_ON'] : $lang['Smilies_are_OFF']; 

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 
	if ( $userdata['user_level'] =='1' )
	{
		$user_field_lvl = 3;
	}
	else 	if ( $userdata['user_level'] =='2' )
	{
		$user_field_lvl = 2;
	}
	else
	{
		$user_field_lvl = 1;
	}

	$csql = "SELECT *
	FROM " . RPG_FIELDS_TABLE ."
	WHERE field_type = 1 
	AND field_level < ".$user_field_lvl;
	$cresult = $db->sql_query($csql);
	if( !$cresult )
	{
		message_die(GENERAL_ERROR, "Couldn't obtain rpg fields from database", "", __LINE__, __FILE__, $sql);
	}
	$rpg_fields_class = $db->sql_fetchrowset($cresult);
	$filename_list_class = "";
	for( $i = 0; $i < count($rpg_fields_class); $i++ )
	{
		$selected = ( $userdata['user_klass'] == $rpg_fields_class[$i]['field_id'] ) ? ' selected="selected"' : '';
		$filename_list_class .= '<option value="' . $rpg_fields_class[$i]['field_id'] . '"'.$selected.' >' . $rpg_fields_class[$i]['field_name'] . '</option>';
	}

	$esql = "SELECT *
	FROM " . RPG_FIELDS_TABLE ."
	WHERE field_type = 2 
	AND field_level < ".$user_field_lvl;
	$eresult = $db->sql_query($esql);
	if( !$eresult )
	{
		message_die(GENERAL_ERROR, "Couldn't obtain rpg fields from database", "", __LINE__, __FILE__, $sql);
	}
	$rpg_fields_element = $db->sql_fetchrowset($eresult);
	$filename_list_element = "";
	for( $i = 0; $i < count($rpg_fields_element); $i++ )
	{
		$selected = ( $userdata['user_element'] == $rpg_fields_element[$i]['field_id'] ) ? ' selected="selected"' : '';
		$filename_list_element .= '<option value="' . $rpg_fields_element[$i]['field_id'] . '"'.$selected.'>' . $rpg_fields_element[$i]['field_name'] . '</option>';
	}

	$rsql = "SELECT *
	FROM " . RPG_FIELDS_TABLE ."
	WHERE field_type = 3 
	AND field_level < ".$user_field_lvl;
	$rresult = $db->sql_query($rsql);
	if( !$rresult )
	{
		message_die(GENERAL_ERROR, "Couldn't obtain rpg fields from database", "", __LINE__, __FILE__, $sql);
	}
	$rpg_fields_race = $db->sql_fetchrowset($rresult);
	$filename_list_race = "";
	for( $i = 0; $i < count($rpg_fields_race); $i++ )
	{
		$selected = ( $userdata['user_race'] == $rpg_fields_race[$i]['field_id'] ) ? ' selected="selected"' : '';
		$filename_list_race .= '<option value="' . $rpg_fields_race[$i]['field_id'] . '"'.$selected.'>' . $rpg_fields_race[$i]['field_name'] . '</option>';
	}

	$asql = "SELECT *
	FROM " . RPG_FIELDS_TABLE ."
	WHERE field_type = 4 
	AND field_level < ".$user_field_lvl;
	$aresult = $db->sql_query($asql);
	if( !$aresult )
	{
		message_die(GENERAL_ERROR, "Couldn't obtain rpg fields from database", "", __LINE__, __FILE__, $sql);
	}
	$rpg_fields_alignment = $db->sql_fetchrowset($aresult);
	$filename_list_alignment = "";
	for( $i = 0; $i < count($rpg_fields_alignment); $i++ )
	{
		$selected = ( $userdata['user_alignment'] == $rpg_fields_alignment[$i]['field_id'] ) ? ' selected="selected"' : '';
		$filename_list_alignment .= '<option value="' . $rpg_fields_alignment[$i]['field_id'] . '"'.$selected.'>' . $rpg_fields_alignment[$i]['field_name'] . '</option>';
	}

	if ( $board_config['display_class'] )
	{
		$template->assign_block_vars( 'rpg_fields_class', array());
	}
	if ( $board_config['display_element'] )
	{
		$template->assign_block_vars( 'rpg_fields_element', array());
	}
	if ( $board_config['display_race'] )
	{
		$template->assign_block_vars( 'rpg_fields_race', array());
	}
	if ( $board_config['display_alignment'] )
	{
		$template->assign_block_vars( 'rpg_fields_alignment', array());
	}

# 
#-----[ FIND ]------------------------------------------ 
# 
		'SMILIES_STATUS' => $smilies_status,

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 
		'S_FILENAME_CLASS' => $filename_list_class, 
		'S_FILENAME_ELEMENT' => $filename_list_element, 
		'S_FILENAME_RACE' => $filename_list_race, 
		'S_FILENAME_ALIGNMENT' => $filename_list_alignment, 
		'S_NAME_CLASS' => $userdata['user_class'], 
		'S_NAME_ELEMENT' => $userdata['user_element'], 
		'S_NAME_RACE' => $userdata['user_race'], 
		'S_NAME_ALIGNMENT' => $userdata['user_alignment'], 
		'L_CLASS' =>$lang['rpg_fields_type_class'],
		'L_ELEMENT' =>$lang['rpg_fields_type_element'], 
		'L_RACE' =>$lang['rpg_fields_type_race'],
		'L_ALIGNMENT' =>$lang['rpg_fields_type_alignment'],
		'RPG_FIELDS_PROFILE' => $lang['rpg_fields_profile'],
Juz mi rece opadaja od tego wszystkiego :(

Awatar użytkownika
Lilly
Posty: 118
Rejestracja: 19 maja 2005, 11:53
Lokalizacja: Wrocław
Kontakt:

Post autor: Lilly » 02 sierpnia 2005, 17:52

Musisz przesledzic, co dzieje sie ze zmiennymi:

Kod: Zaznacz cały

$element
$klass
$race
$alignment
Bo wyglada na to, ze przed wywolaniem zapytania, ktore powoduje blad moga byc puste. Na razie jest to jedna z hipotez.

EDIT: mozliwe, ze brakuje apostrofow. W linijce, w ktorej jest to zapytanie kazda z tych zmiennych zawrzyj w pojedynczych apostrofach. Moze pomoze o tyl, ze zapytanie sie wykona. Hmm... albo chyba byla taka funkcja, ktora dodaje apostrofy do stringow... Pamieta ktos :?:
Forum grupy konwentowo-rpgowej: Hysteria
Obrazek
Jesli pomoglam, prosze o plusika ;-)

18_groszy
Posty: 8
Rejestracja: 17 maja 2005, 14:36

Post autor: 18_groszy » 02 sierpnia 2005, 21:18

dodałem apostrofy tak, że wygląda to w ten sposób:
user_element='$element', user_klass='$klass', user_race='$race', user_alignment='$alignment'

Przy aktualizacji profilu jest już w porządku, ale za to w profilu użytkownika wogóle nie ma tego, co tam w tym modzie wpisałem.
coś takiego:

Dołączył: 18 Gru 2004
Posty: 31
Skąd: Wawa
Klasa : <- tu powinno być..

Awatar użytkownika
Lilly
Posty: 118
Rejestracja: 19 maja 2005, 11:53
Lokalizacja: Wrocław
Kontakt:

Post autor: Lilly » 02 sierpnia 2005, 22:58

18_groszy pisze:Przy aktualizacji profilu jest już w porządku, ale za to w profilu użytkownika wogóle nie ma tego, co tam w tym modzie wpisałem.
coś takiego:
No bo najprawdopodobniej te zmienne sa puste (wskazywaloby na to wczesniejsze bledne zapytanie). Niestety, po samym zapytaniu ciezko przesledzic, dlaczego tak sie dzieje. W sumie, moge Ci poradzic, zebys po prostu uzywal echo $zmienna przy tych zapytaniach odnoszacych sie do powyzszych zmiennych - moze uda Ci sie znalesc, w ktorym miejscu zachowuja sie nieprawidlowo.
Forum grupy konwentowo-rpgowej: Hysteria
Obrazek
Jesli pomoglam, prosze o plusika ;-)

18_groszy
Posty: 8
Rejestracja: 17 maja 2005, 14:36

Post autor: 18_groszy » 03 sierpnia 2005, 05:27

zobacze, pokombinuje i jakby co to jeszcze sie odezwe ;] Mimo to dzieki za pomoc, łap plusa :)

18_groszy
Posty: 8
Rejestracja: 17 maja 2005, 14:36

Post autor: 18_groszy » 03 sierpnia 2005, 23:45

No niestety nie poradziłem sobie. Moja teoria jest taka:

Kod: Zaznacz cały

user_element= , user_klass=, user_race=, user_alignment= WHERE user_id = 3
kiedy były apostrowy wstawiało poprostu puste wartosci (0), a gdy apostrofów nie ma zapytanie SQL jest błędne, więc trzeba się dowiedziec skąd, z jakiego pliku przychodza te zmienne.
Co o tym sądzicie? Jak z tym sobie poradzić?

edit:
np. zmienna "klass" wychodzi z formularza edycji profilu, ale nie trafia do usercp

Awatar użytkownika
Lilly
Posty: 118
Rejestracja: 19 maja 2005, 11:53
Lokalizacja: Wrocław
Kontakt:

Post autor: Lilly » 04 sierpnia 2005, 18:51

Ale w php zmienne przewaznie dzialaja w zakresie danego pliku. Przekazywanie ich wartosci miedzy plikami jest robione poprzez specjalne tablice. Ja stosuje zazwyczaj taka metode, ze szukam pierwszego wystapienia zmiennej w danym pliku i probuje przesledzic jej zmiany i co decyduje o zmianie jej wartosci. Moze jakis element kodu zle dziala.

To ze zmienna o tej samej nazwie wystepuje w innym pliku jest stosowane po to by ulatwic sledzenie pewnych zaleznosci miedzy plikami, ale nie jest to metoda przekazywania wartosci.
Forum grupy konwentowo-rpgowej: Hysteria
Obrazek
Jesli pomoglam, prosze o plusika ;-)

Zablokowany

Wróć do „Pomoc”