Einige Fragen zu SQL-Anweisungen ...

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
YoOoOoOo
Mitglied
Beiträge: 71
Registriert: 01.05.2006 16:34
Wohnort: YoOoOoOoOo
Kontaktdaten:

Beitrag 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:
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag 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
}
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
YoOoOoOo
Mitglied
Beiträge: 71
Registriert: 01.05.2006 16:34
Wohnort: YoOoOoOoOo
Kontaktdaten:

Beitrag 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
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag 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:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
YoOoOoOo
Mitglied
Beiträge: 71
Registriert: 01.05.2006 16:34
Wohnort: YoOoOoOoOo
Kontaktdaten:

Beitrag 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 ...
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag 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.
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
YoOoOoOo
Mitglied
Beiträge: 71
Registriert: 01.05.2006 16:34
Wohnort: YoOoOoOoOo
Kontaktdaten:

Beitrag von YoOoOoOo »

Ausserdem würde ich beim aktualisieren (F5) gerne verhindern, dass der Wert dabei automatisch ansteigt :roll:

YoOoOoOoO
Zuletzt geändert von YoOoOoOo am 07.06.2006 18:05, insgesamt 1-mal geändert.
YoOoOoOo
Mitglied
Beiträge: 71
Registriert: 01.05.2006 16:34
Wohnort: YoOoOoOoOo
Kontaktdaten:

Beitrag 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
Antworten

Zurück zu „Coding & Technik“