Seite 2 von 4

Verfasst: 28.05.2006 17:21
von YoOoOoOo
Woher die Variable $cash kommt?
///
/// Anweisung zum Auslesen von der Datenbank
///
$sql = "SELECT user_posts, user_cash,
Müsste gehen oder? In der kirche_body.tpl steht folgendes:

Code: Alles auswählen

<table width="100%" cellpadding="3" cellspacing="1" border="0" class="forumline">
  <tr> 
	<form action="buildings.php"><td class="row1" align="left" width="1%">{CASH}
	</td><td class="row1" align="left" width="50%"><span class="gensmall">Kirche
	</td><td class="row1" align="right" width="50%">
	<input type="submit" name="church" value="Bauen"></td></form>
  </tr>
</table>
Wird aber nichts von wegen {CASH} angezeigt. Und die Submit >>Bauen<< geht auch nicht, die Seite bleibt einfach wie sie ist und in der Datenbank wird nichts verändert bzw. nichts drauf geschrieben ...

Verfasst: 28.05.2006 17:34
von Patrik
Das müsste klappen! Schon mal was von Tabs gehört?

Code: Alles auswählen

<?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
//

if(!$userdata['session_logged_in'])
{
	redirect(append_sid("login.$phpEx?redirect=index.$phpEx", true));
}

$is_auth_ary = array();
$is_auth_ary = auth(AUTH_VIEW, AUTH_LIST_ALL, $userdata, $forum_data);

//
// Start output of page
//
define('SHOW_ONLINE', true);
$page_title = $lang['Index'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);

$template->set_filenames(array(
	'body' => 'kirche_body.tpl')
);

///
/// Anweisung zum Auslesen von der Datenbank
///
$sql = "SELECT user_posts, user_cash, user_gold, user_holz, user_stein, user_metall, user_church
	FROM " . USERS_TABLE . "
	WHERE user_id = "$userdata['user_id'];
if(!($result = $db->sql_query($sql)))
{
	message_die(GENERAL_ERROR, 'Die Daten konnten nicht ausgelesen werden', '', __LINE__, __FILE__, $sql);
}

$row = $db->sql_fetchrow($result);

$template->assign_vars(array(
	'CASH' => $row['user_cash'])
);

///
/// Anweisung zum Updaten der Datenbank
///
if( isset($HTTP_POST_VARS['church']) )
{
	$sql = "UPDATE " . USERS_TABLE . "
		SET user_posts = user_posts + 4,
			user_cash = user_cash - 500,
			user_gold = user_gold - 0,
			user_holz = user_holz - 300,
			user_stein = user_stein - 500,
			user_metall = user_metall - 0,
			user_church = user_church + 1
		WHERE user_id = ".$userdata['user_id'];
	if(!($result = $db->sql_query($sql)))
	{
		message_die(GENERAL_ERROR, 'Deine Arbeiter können nicht so schnell arbeiten!', '', __LINE__, __FILE__, $sql);
	}

	$row = $db->sql_fetchrow($result);
}

//
// Generate the page
//
$template->pparse('body');

include($phpbb_root_path . 'includes/page_tail.'.$phpEx);

?>

Verfasst: 28.05.2006 17:43
von YoOoOoOo
Sorry, funktioniert nicht.

Code: Alles auswählen

Parse error: parse error in /home/c/coreforum.de/public_html/SurvivingFight/buildings.php on line 40
Das wäre folgender Ausschnitt:

Code: Alles auswählen

$sql = "SELECT user_posts, user_cash, user_gold, user_holz, user_stein, user_metall, user_church 
   FROM " . USERS_TABLE . " 
   WHERE user_id = "$userdata['user_id']; // ZEILE 40
if(!($result = $db->sql_query($sql))) 
{ 
   message_die(GENERAL_ERROR, 'Die Daten konnten nicht ausgelesen werden', '', __LINE__, __FILE__, $sql); 
}

Verfasst: 28.05.2006 17:48
von fanrpg

Code: Alles auswählen

$sql = "SELECT user_posts, user_cash, user_gold, user_holz, user_stein, user_metall, user_church 
   FROM " . USERS_TABLE . " 
   WHERE user_id = ".$userdata['user_id']; // ZEILE 40 
if(!($result = $db->sql_query($sql))) 
{ 
   message_die(GENERAL_ERROR, 'Die Daten konnten nicht ausgelesen werden', '', __LINE__, __FILE__, $sql); 
}
:wink: :roll:

Verfasst: 28.05.2006 17:51
von YoOoOoOo
Danke, das mit dem auslesen hat nun endlich funktioniert :wink:
Nur wenn ich auf den Button 'Bauen' klicke, passiert immer noch nichts.
Kann man das nicht irgendwie einbauen, dass wenn ich auf dein Button klicke und es erfolgreich ist eine Nachricht erscheint?

Verfasst: 28.05.2006 18:00
von Patrik
Also das bauen müsste man schon bemerken in dem man sieht wie sich der Chashwert verringert.

@fanprg
Mein beliebtester Parse Error. Der fehlende .

Verfasst: 28.05.2006 18:11
von fanrpg
@fanprg
Mein beliebtester Parse Error. Der fehlende .
Passiert mir auch öfters mit dem . .
Mein häufigster ist eher das vergessene ;

Verfasst: 28.05.2006 18:23
von YoOoOoOo
Patrik hat geschrieben:Also das bauen müsste man schon bemerken in dem man sieht wie sich der Chashwert verringert.
Wie bitte was müsste sich verringern?
Sicher, dass der Code stimmt? Denn es ändert sich nichts ...

Verfasst: 29.05.2006 14:21
von YoOoOoOo
Aaalso ... der Button funktioniert leider immer noch nicht, da arbeite ich noch immer dran, während mir schon die nächste Idee in den Kopf schiesst ...
Wie ist es möglich, einen Wert pro Minute automatisch zu erhöhen, wenn ein bestimmter Wert auf 1 ist, wird es z.B. um 3 erhöhrt, wenn der Wert auf 2 ist, wird es jede Minute um 5 erhöht usw ...
Der Anfang wäre so:

Code: Alles auswählen

$timestamp = time() 
$stunde = date("H",$timestamp);
Aber weiter weiss ich leider noch nicht ...
Dann eine weitere Frage: Wie ist es möglich, ein bestimmtes Wort, das durch eine Variable ausgegebn wurde, je nachdem, wie hoch ein bestimmter Wert ist, zu verändern?
Beispiel: Wenn WertX auf 1 steht, gibt er bei der Variable 'Banane' aus. Wenn der WertX auf 10 steht, gibt er bei der Variable 'Apfel' aus.

Und wie regle ich es, dass eine bestimmte Variable erst dann ausgegeben wird, wenn ein Wert mindestens auf (z.B.) 5 steht?

Und wie bewerkstellige ich es, dass man nur nach einer bestimmten Zeit die Abfrage wieder neu starten kann und wenn möglich diese Zeit auch eingeblendet wird?

Und wie schaffe ich es, dass ein Wert nicht unter 0 absacken kann? d.h. falls der Wert durch eine bestimmte Abfrage unter 0 absacken sollte, müsste eine Meldung kommen, dass dies nicht ginge.$

Ach, hier noch ein TESTACCOUNT für meine Seite wegen dem nicht funktionierenden Button!
Login
Name: tre
PW: tre

Grüsse

Verfasst: 29.05.2006 15:15
von S2B
  1. Du brauchst eine Art last_update-Variable, in der du den Timestamp der letzten Änderung speicherst und mit dem aktuellen vergleichst. Diese musst du in einer Datenbank, in einem GET/POST-Parameter oder in einem Cookie speichern, damit sie auch nach dem Aufruf noch verfügbar ist.
  2. Code: Alles auswählen

    $dein_wert = 10;
    
    $dein_array = array(
      10 => 'Apfel',
      20 => 'Banane',
      30 => 'Kirsche',
      [..]);
    
    if ($dein_wert >= 5)
    {
      echo $dein_array[$dein_wert]; // gibt Apfel aus
    }
  3. Du hast deine last_update-Variable, auf die du reagieren kannst:

    Code: Alles auswählen

    if ($last_update > time() - 60)
    {
      // noch keine Minute vergangen
    }
    else
    {
      // schon eine Minute oder mehr vergangen
    }
  4. Code: Alles auswählen

    if ($deine_variable < 0)
    {
      // Fehlermeldung, kleiner 0
    }