Tabellenfelder verknüpfen?

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB2 oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

Tabellenfelder verknüpfen?

Beitragvon Dungeonwatcher » 16.10.2009 13:26

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

Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12735
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Re: Tabellenfelder verknüpfen?

Beitragvon Pyramide » 16.10.2009 14:23

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

Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

Re: Tabellenfelder verknüpfen?

Beitragvon Dungeonwatcher » 16.10.2009 15:33

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


Zurück zu „phpBB 2.0: Mod-Bastelstube“