Seite 1 von 1

Wert in MYSQL ändern?

Verfasst: 13.06.2008 18:47
von Domitz
Hallo, ich habe folgende Frage:

Wie schaffe ich es, die Zahl aus ".$userdata['world']." zu ändern?

Habe von MySQL leider keine Ahnung Sad

Also ich möchte einfach den Wert mit 50 addieren.

Mein Ansatz: (phpBB 2)

Code: Alles auswählen

<?php
$id = $_GET["id"];
//Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);


//Session auslesen und Benutzer-Informationen laden
$userdata = session_pagestart($user_ip, $user_id, $username, PAGE_INDEX);
init_userprefs($userdata);

//Dieser Block kann weggelassen werden, wenn du nur den die Userdaten brauchst und auf den phpBB-Header verzichen möchtest
$page_title = 'Parkbesuche';
include($phpbb_root_path . 'includes/page_header.'.$phpEx);



/***** Inhaltsbereich ******/
error_reporting(E_ALL);
db_connect();
   $sql="UPDATE phpbb_users
SET user_world = 500
WHERE user_id = "2"
echo "Erfolgreich";";
   $result = mysql_query($sql);
   db_disconnect();


//Footer - nur dann weglassen, wenn du auch den Header weglässt
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
?>  
Kommt leider eine weiße Seite...

Verfasst: 13.06.2008 20:20
von Boecki91
Ähm, wo hast du den Code her?

Entweder du hast schlecht kopiert oder das kopierte war falsch.

Wofür ist $id = $_GET["id"]; ?
Diese Id brauchst du gar nicht?
Wo addierst du $userdata['world'] + 50?
Was sind das für Funktionen wozu brauchst du die dort??

Code: Alles auswählen

db_connect();
mysql_query()
db_disconnect(); 
Warum setzt du das Error-Level auf E_ALL, und das mitten drin?
Warum ist bei dem Echo ein ";"; am Ende?

Ach ja ich habe das Script mal getest, wie zu erwarten war ein Fehler:

Code: Alles auswählen

Parse error: syntax error, unexpected T_LNUMBER in D:\xampp\htdocs\phpBB2\test.php on line 25
Nachdem ich den Syntax-Fehler behoben habe bekomme ich den Fehler:

Code: Alles auswählen

Fatal error: Call to undefined function db_connect() in D:\xampp\htdocs\phpBB2\test.php on line 22
Also bräuchte ich die Funktion db_connect() von dir, da diese nicht zu phpBB2 und auch nicht zu php gehört, db_disconnect() bräuchte ich dann auch noch. Arbeiten die Funktionen dann mit dem normalen PHP mysql_*() Funktionen zusammen?

Willst du $result nicht noch irgendwie prüfen, wenn ein Fehlerauftritt? oder macht das alles db_disconnect() als universal Funktion?

Verfasst: 13.06.2008 20:40
von Domitz
Das hochsetzen etc schaffe ich alleine.
Habe nur leider keine Ahnung von MYSQL und müsste nur wissen, wie ich den Wert ändern kann.

Hab ich vergessen zu sagen, sorry.

Verfasst: 13.06.2008 21:08
von Boecki91
Meine Anmerkungen bezogen sich fast alle auf PHP-Fehler...

Eine Updaten sieht unfähr so aus:

Code: Alles auswählen

			$sql = "UPDATE " . X_TABLE . " SET
				x = '" . $y . "'
				WHERE x = '$z'";
			if( !$db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, "Fehler x bei y", "", __LINE__, __FILE__, $sql);
			}
Eine Abfrage aus der DB ungefähr so:

Code: Alles auswählen

				$sql = "SELECT * 
					FROM " . X_TABLE . "
					WHERE x = y";
				if ( !($result = $db->sql_query($sql)) )
				{
					message_die(GENERAL_ERROR, "Feher x bei y", "", __LINE__, __FILE__, $sql);
				}


				while( $row = $db->sql_fetchrow($result) )
				{
					$a = $row[x'];
				}

Verfasst: 14.06.2008 12:54
von Domitz
Meinst du so:

Code: Alles auswählen

<?php
$id = $_GET["id"];
//Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);


//Session auslesen und Benutzer-Informationen laden
$userdata = session_pagestart($user_ip, $user_id, $username, PAGE_INDEX);
init_userprefs($userdata);

//Dieser Block kann weggelassen werden, wenn du nur den die Userdaten brauchst und auf den phpBB-Header verzichen möchtest
$page_title = 'Titel';
include($phpbb_root_path . 'includes/page_header.'.$phpEx);

$y = "50";
$z = "2";

         $sql = "UPDATE " . phpbb_users . " SET
            user_word = '" . $y . "'
            WHERE user_id = '$z'";
         if( !$db->sql_query($sql) )
         {
            message_die(GENERAL_ERROR, "Fehler x bei y", "", __LINE__, __FILE__, $sql);
         }

//Footer - nur dann weglassen, wenn du auch den Header weglässt
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
?>
Edit: Klappt einwandfrei, danke =)

Verfasst: 14.06.2008 17:36
von Boecki91
Wenn du jetzt noch x und y durch sinnvollere Variablen-Namen ersetzt, und Ein Sinnvolle Fehlermeldung wählst, und dann noch anstatt von phpbb_users USERS_TABLE nimmst sollte es klappen.