Problem mit sql-update

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
DerDumme

Problem mit sql-update

Beitrag von DerDumme »

tach leute, ich präsentier euch heute wieder mal meine grenzenlose dummheit! ich hab die memberlist für ein browsergame umprogrammiert und will nun mit einem klick eine kirche bauen ... da sollen 3 db-einträge geändert werden ... da hab ich diesen code geschrieben:

Code: Alles auswählen

		
$bauen_kirche ($sql = "SELECT username, user_id, user_posts, user_hq, user_kaserne, user_block, user_church, user_cash
FROM " . USERS_TABLE . "
UPDATE user_id = " . $userdata['user_id'] . "
SET user_cash = user_cash-500
SET user_church = user_church+1
SET user_posts = user_posts+50
if( !($result = $db->sql_query($sql)) )
			{
			message_die(GENERAL_ERROR, 'Could not query users', '', __LINE__, __FILE__, $sql);
		    }
			)

$template->assign_block_vars('memberrow', array(
			'ROW_NUMBER' => $i + ( $HTTP_GET_VARS['start'] + 1 ),
'ROW_COLOR' => '#' . $row_color,
'ROW_CLASS' => $row_class,
'USERNAME' => $username,
'FROM' => $from,
'JOINED' => $joined,
'POSTS' => $posts,
'HQ' => $hq,
'KASERNE' => $kaserne,
'BLOCK' => $block,
'CHURCH' => $church,
'CASH' => $cash,	
'BAUEN_KIRCHE' => $bauen_kirche

);
DA steht halt noch so viel anderes zeug drin weils halt die memberlist ist ... also hab ich nen button mit der variable {BAUEN_KIRCHE} gemacht ... das sollte ja dann die updates da oben ausführen ... leider bekomm ich immer nur

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\phpdev\www\public\buildings.php on line 197


Kann mir da vielleicht jemand helfen, wäre sehr nett !!!!!
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Sorry, aber da scheint erst mal ein Crash-Kurs MySQL notwendig. Aus dem Code lässt sich nicht erkennen, was du willst. Du würfelst eine SELECT-Abfrage mit 'nem UPDATE zusammen, dass nicht mal mit 'nem WHERE eingegrenzt wird. Von den fehlenden Anführungszeichen mal ganz zu schweigen...
Du solltest schon etwas konkretisieren, was du haben willst...

Gruß, Philipp

BTW: ein Beitrag reicht völlig :-)
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
DümmesKerl

Beitrag von DümmesKerl »

Ich will hallt, das man mit einem klick paar daten von dem user, der das gerade ausführt, verändert!

Stimmt das jetzt eher !?

Code: Alles auswählen

$bauen_kirche {
$sql = UPDATE `phpbb_users` SET `user_posts` = `user_posts`+1,
`user_cash` = `user_cash`-500,
`user_church` = `user_church`+1 WHERE `user_id` = " . $userdata['user_id'] . ";
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not query users', '', __LINE__, __FILE__, $sql);
}
}
ich hab das sql kram aus phpmyadmin abgeschrieben, aber es sagt, das ein fehler in der 2. zeile ist (also 2.zeile von dem code da oben)

Helft der dummen kerl :-(
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Ich glaube - wenn ich das richtig verstanden habe - dass das nicht so ganz einfach ist, wie du das dir vorstellst. Du brauchst erst eine Routine, die den Klick (wohin auch immer) abfängt...

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
burp

Beitrag von burp »

ja ich hab den klick in nem template und dann was, das das abfängt 'BAUEN_KIRCHE' => $bauen_kirche und dann wollt ich halt das $bauen_kirche in ne funktion umwandeln ...

das kommt jetzt alles aus der umgewandelten memberlist.php!
Ist aber nur der ausschnitt, wo es drin vorkeommt!

Code: Alles auswählen

if ( $row = $db->sql_fetchrow($result) )
{
	$i = 0;
	do
	{
		$username = $row['username'];
		$user_id = $row['user_id'];

		$from = ( !empty($row['user_from']) ) ? $row['user_from'] : ' ';
		$joined = create_date($lang['DATE_FORMAT'], $row['user_regdate'], $board_config['board_timezone']);
		$posts = ( $row['user_posts'] ) ? $row['user_posts'] : 0;

        $hq = ( $row['user_hq'] ) ? $row['user_hq'] : 0;
		$kaserne = ( $row['user_kaserne'] ) ? $row['user_kaserne'] : 0;
		$block = ( $row['user_block'] ) ? $row['user_block'] : 0;
		$church = ( $row['user_church'] ) ? $row['user_church'] : 0;

		$cash = ( $row['user_cash'] ) ? $row['user_cash'] : 0;

		$temp_url = append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$user_id");
		$profile_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_profile'] . '" alt="' . $lang['Read_profile'] . '" title="' . $lang['Read_profile'] . '" border="0" /></a>';
		$profile = '<a href="' . $temp_url . '">' . $lang['Read_profile'] . '</a>';

		$temp_url = append_sid("privmsg.$phpEx?mode=post&" . POST_USERS_URL . "=$user_id");
		$pm_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_pm'] . '" alt="' . $lang['Send_private_message'] . '" title="' . $lang['Send_private_message'] . '" border="0" /></a>';
		$pm = '<a href="' . $temp_url . '">' . $lang['Send_private_message'] . '</a>';

		$www_img = ( $row['user_website'] ) ? '<a href="' . $row['user_website'] . '" target="_userwww"><img src="' . $images['icon_www'] . '" alt="' . $lang['Visit_website'] . '" title="' . $lang['Visit_website'] . '" border="0" /></a>' : '';
		$www = ( $row['user_website'] ) ? '<a href="' . $row['user_website'] . '" target="_userwww">' . $lang['Visit_website'] . '</a>' : '';

		if ( !empty($row['user_icq']) )
		{
			$icq_status_img = '<a href="http://wwp.icq.com/' . $row['user_icq'] . '#pager"><img src="http://web.icq.com/whitepages/online?icq=' . $row['user_icq'] . '&img=5" width="18" height="18" border="0" /></a>';
			$icq_img = '<a href="http://wwp.icq.com/scripts/search.dll?to=' . $row['user_icq'] . '"><img src="' . $images['icon_icq'] . '" alt="' . $lang['ICQ'] . '" title="' . $lang['ICQ'] . '" border="0" /></a>';
			$icq =  '<a href="http://wwp.icq.com/scripts/search.dll?to=' . $row['user_icq'] . '">' . $lang['ICQ'] . '</a>';
		}
		else
		{
			$icq_status_img = '';
			$icq_img = '';
			$icq = '';
		}

		$aim_img = ( $row['user_aim'] ) ? '<a href="aim:goim?screenname=' . $row['user_aim'] . '&message=Hello+Are+you+there?"><img src="' . $images['icon_aim'] . '" alt="' . $lang['AIM'] . '" title="' . $lang['AIM'] . '" border="0" /></a>' : '';
		$aim = ( $row['user_aim'] ) ? '<a href="aim:goim?screenname=' . $row['user_aim'] . '&message=Hello+Are+you+there?">' . $lang['AIM'] . '</a>' : '';

		$temp_url = append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$user_id");
		$msn_img = ( $row['user_msnm'] ) ? '<a href="' . $temp_url . '"><img src="' . $images['icon_msnm'] . '" alt="' . $lang['MSNM'] . '" title="' . $lang['MSNM'] . '" border="0" /></a>' : '';
		$msn = ( $row['user_msnm'] ) ? '<a href="' . $temp_url . '">' . $lang['MSNM'] . '</a>' : '';

		$yim_img = ( $row['user_yim'] ) ? '<a href="http://edit.yahoo.com/config/send_webmesg?.target=' . $row['user_yim'] . '&.src=pg"><img src="' . $images['icon_yim'] . '" alt="' . $lang['YIM'] . '" title="' . $lang['YIM'] . '" border="0" /></a>' : '';
		$yim = ( $row['user_yim'] ) ? '<a href="http://edit.yahoo.com/config/send_webmesg?.target=' . $row['user_yim'] . '&.src=pg">' . $lang['YIM'] . '</a>' : '';

		$temp_url = append_sid("search.$phpEx?search_author=" . urlencode($username) . "&showresults=posts");
		$search_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_search'] . '" alt="' . $lang['Search_user_posts'] . '" title="' . $lang['Search_user_posts'] . '" border="0" /></a>';
		$search = '<a href="' . $temp_url . '">' . $lang['Search_user_posts'] . '</a>';
		$row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
		$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];

		$bauen_kirche {
	    $sql = 'UPDATE `phpbb_users` SET `user_posts` = `user_posts`+50,';
        $sql .= ' `user_cash` = `user_cash`-500,';
        $sql .= ' `user_church` = `user_church`+1 WHERE `user_id` = " . $userdata['user_id'] . " LIMIT 1 ;';
        $sql .= ''; 
        if( !($result = $db->sql_query($sql)) )
			{
			message_die(GENERAL_ERROR, 'Could not query users', '', __LINE__, __FILE__, $sql);
		    }
		}

		$template->assign_block_vars('memberrow', array(
			'ROW_NUMBER' => $i + ( $HTTP_GET_VARS['start'] + 1 ),
			'ROW_COLOR' => '#' . $row_color,
			'ROW_CLASS' => $row_class,
			'USERNAME' => $username,
			'FROM' => $from,
			'JOINED' => $joined,
			'POSTS' => $posts,
			'AVATAR_IMG' => $poster_avatar,
			'PROFILE_IMG' => $profile_img, 
			'PROFILE' => $profile, 
			'SEARCH_IMG' => $search_img,
			'SEARCH' => $search,
			'PM_IMG' => $pm_img,
			'PM' => $pm,
			'EMAIL_IMG' => $email_img,
			'EMAIL' => $email,
			'WWW_IMG' => $www_img,
			'WWW' => $www,
			'ICQ_STATUS_IMG' => $icq_status_img,
			'ICQ_IMG' => $icq_img, 
			'ICQ' => $icq, 
			'AIM_IMG' => $aim_img,
			'AIM' => $aim,
			'MSN_IMG' => $msn_img,
			'MSN' => $msn,
			'YIM_IMG' => $yim_img,
			'YIM' => $yim,
			'PERCENTAGE' => $percentage,
			'HQ' => $hq,
			'KASERNE' => $kaserne,
            'BLOCK' => $block,
			'CHURCH' => $church,
		    'CASH' => $cash,	
			'BAUEN_KIRCHE' => $bauen_kirche

			'U_VIEWPROFILE' => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$user_id"))
		);

		$i++;
	}
	while ( $row = $db->sql_fetchrow($result) );
}
Hab nochmal den sql-code verändert, aber das funzt auch net!
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

Den UPDATE-Bereich würde ich ausserhalb des SELECT-Bereiches platzieren.

So.. du hast ja in der *.tpl einen Button. Dieser Button hat einen Namen (z.B. name="irgendwas").
Nun kannst du in der *.php die Aktion beim Betätigen des Buttons (UPDATE) mit folgendem deklarieren..

Code: Alles auswählen

if( isset($HTTP_POST_VARS[irgendwas]) )
{
     hier den ganze UPDATE code platzieren
}
Henss
Mitglied
Beiträge: 48
Registriert: 13.07.2003 16:16

Beitrag von Henss »

ach verdammz, ich werds nie kapieren ............ :cry: :cry: :cry:

also in der template hab ich:

<form action="kaufen_kirche" name="kaufen_kirche"><td class="{memberrow.ROW_CLASS}" align="center" valign="middle"><span class="gen"></span><input type="submit" name="kaufen_kirche" value="Kaufen" class="button"></td></form>

und in der .php :

if( isset($HTTP_POST_VARS[kaufen_kirche]) )
{
$sql = 'UPDATE `phpbb_users` SET `user_posts` = `user_posts`+250, `user_cash` = `user_cash`-2500; `user_church` = `user_church`+1 WHERE `user_id` = " . $userdata['user_id'] . ";
}


und ich hab irgendwo in der zeile mit den ganzen änderungen fehler ... kann mir bitte jemand helfen, bevor ich mich auch verzweiflung umbringe :cry: :cry: :cry: :D
Der Dumme

Beitrag von Der Dumme »

Kann niemand helfen?

Bitte ich bräuchte das wirklich! Bin aber recht dumm un weiss net wie man das macht!

Könnte mir niemand mal nen quelltext geben !? das ist das einzige was ich brauch!
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“