Seite 4 von 4

Verfasst: 30.05.2006 16:57
von YoOoOoOo
Ich weiss nicht woran es liegt aber die Datenbank wird irgendwie immer noch nicht aktualisiert ... Nochmals die beiden Dateien ...
buildings.php

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=buildings.$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' => 'buildings_body.tpl') 
); 
        
/// 
/// Anweisung zum Updaten der Datenbank 
/// 
if (!empty($buttom)) 
{ 
  echo("Buttom gedrückt"); 
  $db_query  = "UPDATE phpbb_users 
    SET user_posts = user_posts + 4, 
      user_cash = user_cash - 500, 
      user_holz = user_holz - 300, 
      user_stein = user_stein - 500, 
      user_church = user_church + 1 
    WHERE user_id = " . $userdata['user_id']; 
  if (!$db->sql_query($db_query)) 
  { 
    message_die(GENERAL_ERROR, 'Could not update userdata', '', __LINE__, __FILE__, $db_query); 
  } 
}

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

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

?>
buildings_body.tpl

Code: Alles auswählen

<table width="100%" cellpadding="3" cellspacing="1" border="0" class="forumline">
  <tr> 
<td class="row1" align="left" width="1%"><img src="xxx" />
	</td><td class="row1" align="left" width="50%"><span class="gensmall">Kirche
	</td><td class="row1" align="right" width="50%">
	<form name="form1" method="post" action="buildings.php?buttom=1"><input type="submit" name="Buttom" value="Buttom"></td></form>
  </tr>
</table>
Und das ist das Ergebnis:
Ergebnis
Name: tre
PW: tre

Ich würde das Problem ja gerne lösen, aber irgendwie will es einfach nicht ... :cry:

Verfasst: 30.05.2006 21:14
von S2B
Die Variable $button ist doch gar nicht definiert...

Finde:

Code: Alles auswählen

///
/// Anweisung zum Updaten der Datenbank
/// 
Füge danach ein:

Code: Alles auswählen

$button = (isset($_GET['button'])) ? 1 : 0;
Allgemein geht das aber auch ohne diesen button-Parameter:

Code: Alles auswählen

<form action="deineDatei.php" method="post">
  [...]
  <input type="submit" name="submit" value="Absenden" />
</form>
und in der php-Datei:

Code: Alles auswählen

if (isset($_POST['submit']))
{
  // Button wurde gedrückt
}

Verfasst: 31.05.2006 09:56
von YoOoOoOo
Gut also ich hab das jetzt so wie deine zweite Variante gemacht - und endlich funktioniert es. Vielen vielen Dank! :grin:
Nun frage ich mich allerdings, wie ich es bewerkstelligen könnte, dass es eine bestimmte festgelegte Zeit dauert, bis der SQL-Befehl ausgeführt wird und vor allem dass diese Zeit dann auch aufgezeigt wird.
Man müsste zuerst den aktuellen Zeitpunkt festlegen, während der User einen SQL-Befehl in Auftrag gibt und danach + xx in Sekunden angeben, wie lange der User warten muss, bis der SQL-Befehl dann auch wirklich ausgeführt wird.
Möglich wäre dies also schon - aber wie sehen die Schritte konkret aus?
Zusätzlich sollte man ja dabei festlegen, dass während dieser Zeit kein anderer SQL-Befehl via Button ausgeführt werden könnte...

Ich bin allerdings schon mal zufrieden, dass der SQL-Befehl nun mit dem Button endlich klappt - vielen herzlichen Dank!! :D

YoOoOoOo

Verfasst: 31.05.2006 13:01
von S2B
Ohne Cronjob kannst du keinen Befehl zu einem ganz bestimmten Zeitpunkt ausführen lassen. Das einzige, das du machen kannst, ist, ihn beim nächsten Aufruf der Seite nach diesem Zeitpunkt ausführen zu lassen. :wink:

Verfasst: 01.06.2006 11:29
von YoOoOoOo
Ich glaube, du hast mich falsch verstanden. Ich versuchs nochmals anhand eines Beispiels zu erklären.
Der User klickt auf den Button >>Bauen<<. Anstatt dass die Datenbank nun aktualisiert wird, erscheint eine bestimmte Zeit, die ich festlegen kann, die er benötigt, um die Datenbank zu aktualisieren. Diese Zeit sollte dann möglichst auch angezeigt werden ...

Verfasst: 01.06.2006 13:35
von S2B
Ich hab dich schon richtig verstanden. Die Datenbank kann aber nur dann aktualisiert werden, wenn jemand deine Seite aufruft, egal ob es jetzt ein Mensch oder ein Computer (=> Cronjob) ist.

Auf jeden Fall musst du die aktuelle Zeit (bzw. den aktuellen Timestamp) beim Klick auf den Bauen-Button in die Datenbank speichern und dann bei jedem Hit auf der Seite überprüfen, ob die Zeit schon abgelaufen ist. Diese Zeit kannst du dann natürlich auch anzeigen lassen.

Verfasst: 04.06.2006 10:15
von YoOoOoOo
Ausserdem würde ich beim aktualisieren (F5) gerne verhindern, dass der Wert dabei automatisch ansteigt :roll:

YoOoOoOoO

Verfasst: 07.06.2006 18:05
von YoOoOoOo
Hat sich erledigt.
Inzwischen hab ich wieder rumgewerkelt und wollte, dass es den Punktestand nicht immer erhöht, sondern nur wenn man auf den Button klickt.
Deshalb hab ich folgendes versucht:

Code: Alles auswählen

if(isset($_POST['burg']) )  
{
  $db_query  = "UPDATE phpbb_users 
      SET user_posts = user_posts $burg_POSTS, 
      user_cash = user_cash $burg_gold, 
      user_holz = user_holz $burg_HOLZ, 
      user_stein = user_stein $burg_STEIN, 
      user_burg = user_burg + 1 
    WHERE user_id = " . $userdata['user_id']; 
  if (!$db->sql_query($db_query)) 
  { 
   message_die(GENERAL_ERROR, 'Could not update userdata', '', __LINE__, __FILE__, $db_query); 
  } 
  $db_query = "UPDATE phpbb_users 
      SET timestamp_burg = $time
    WHERE user_id = " . $userdata['user_id']; 
  if (!$db->sql_query($db_query)) 
  { 
  message_die(GENERAL_ERROR, 'Could not update userdata', '', __LINE__, __FILE__, $db_query); 
  } 
}
Sowie

Code: Alles auswählen

$input = '<input type="submit" name="burg" value="Ausbauen" class="liteoption" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="gen"><img src="images/gold.gif" />' . $burg_gold . '&nbsp;&nbsp;&nbsp;<img src="images/stones.gif" />' . $burg_STEIN . '&nbsp;&nbsp;&nbsp;<img src="images/holz.gif" />' . $burg_HOLZ . '</span>';
Müsste eigentlich auch funktionieren oder? Führt aber zum Ergebnis, dass die Datenbank nicht aktualisiert wird, wenn man auf den Button klickt ...
NEED HELP!

~~~> burg.php <~~~

YoOoOoOo