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 »

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 ...
Patrik
Mitglied
Beiträge: 208
Registriert: 23.04.2005 13:30
Wohnort: Hallein

Beitrag 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);

?>
Die 3 größten Feinde eines Programmierers: Sonnenlicht, Frischluft und das unerträgliche Gebrüll der Vögel...
Jede Beseitigung eines Programmfehlers ruft Zwei neue hervor.
YoOoOoOo
Mitglied
Beiträge: 71
Registriert: 01.05.2006 16:34
Wohnort: YoOoOoOoOo
Kontaktdaten:

Beitrag 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); 
}
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag 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:
YoOoOoOo
Mitglied
Beiträge: 71
Registriert: 01.05.2006 16:34
Wohnort: YoOoOoOoOo
Kontaktdaten:

Beitrag 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?
Patrik
Mitglied
Beiträge: 208
Registriert: 23.04.2005 13:30
Wohnort: Hallein

Beitrag 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 .
Die 3 größten Feinde eines Programmierers: Sonnenlicht, Frischluft und das unerträgliche Gebrüll der Vögel...
Jede Beseitigung eines Programmfehlers ruft Zwei neue hervor.
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag von fanrpg »

@fanprg
Mein beliebtester Parse Error. Der fehlende .
Passiert mir auch öfters mit dem . .
Mein häufigster ist eher das vergessene ;
YoOoOoOo
Mitglied
Beiträge: 71
Registriert: 01.05.2006 16:34
Wohnort: YoOoOoOoOo
Kontaktdaten:

Beitrag 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 ...
YoOoOoOo
Mitglied
Beiträge: 71
Registriert: 01.05.2006 16:34
Wohnort: YoOoOoOoOo
Kontaktdaten:

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

Beitrag 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
    }
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Antworten

Zurück zu „Coding & Technik“