Seite 1 von 1

Tabellenfelder verknüpfen?

Verfasst: 16.10.2009 13:26
von Dungeonwatcher
Hi große Meister! 8)

Ich bin gerade dabei dem Lottery Mod 2.3 einige Bugs auszutreiben. Einer ist z.b. der, das nicht das Los sondern ein User per Zufall gezogen wird. Hierbei tut auch immer derjenige gewinnen, welcher zuletzt ein Los gekauft hat. Nun stelle ich dies gerade so um, das eine zufällige Losnummer von den gekauften Losen gezogen wird. Das funktioniert mit folgendem Code:

Code: Alles auswählen

$sql = "SELECT max(id) FROM " . LOTTERY_TABLE . "
	ORDER BY id";
if( !$db->sql_query($sql))
{
	message_die(GENERAL_ERROR, 'Could not obtain id information', "", __LINE__, __FILE__, $sql);
}
$query = mysql_query($sql);
$array = mysql_fetch_array($query);
$max_id = $array[0];

$sql = "SELECT min(id) FROM " . LOTTERY_TABLE . "
	ORDER BY id";
if( !$db->sql_query($sql))
{
	message_die(GENERAL_ERROR, 'Could not obtain id information', "", __LINE__, __FILE__, $sql);
}
$query = mysql_query($sql);
$array = mysql_fetch_array($query);
$min_id = $array[0];

$min_id = ($min_id);
$max_id = ($max_id);

list($usec, $sec) = explode(' ', microtime());
$seed = (float) $sec + ((float) $usec * 100000);
srand($seed);

$randnum = rand($min_id, $max_id);

echo "Losnr. von: $min_id bis: $max_id und gezogen: $randnum";
Jetzt hänge ich aber daran fest, das ich die Losnummer mit dem User verknüpfen muss, welcher dieses Los gekauft hat. Beides steht in der Tabelle "lottery" als "id" (Losnummer) und "user_id".

Wie muss dies aussehen?

Bye

Re: Tabellenfelder verknüpfen?

Verfasst: 16.10.2009 14:23
von Pyramide

Code: Alles auswählen

SELECT l.id, l.user_id, u.username, u.user_email, ...
FROM lottery l
JOIN phpbb_users u ON (u.user_id = l.user_id)
ORDER BY rand() LIMIT 1

Re: Tabellenfelder verknüpfen?

Verfasst: 16.10.2009 15:33
von Dungeonwatcher
Hi! 8)

Nach langem grübeln habe ich es hinbekommen:

Code: Alles auswählen

$sql = "SELECT l.id, l.user_id, u.username
	FROM phpbb_lottery l
	LEFT JOIN phpbb_users u ON (u.user_id = l.user_id)
	WHERE l.id = $randnum";
	if ( !$db->sql_query($sql))
	{
		message_die(GENERAL_ERROR, 'Could not obtain user_id information', "", __LINE__, __FILE__, $sql);
	}

	$query = mysql_query($sql);
	while ( $row = mysql_fetch_array($query))
	{
		$won_name = $row['username'];
		$won_id = $row['user_id'];
	}
THNX