Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Problem bei Auslesen aus Datenbank
#1
Hallo,
ich möchte gerne 2 Datenbankabfragen machen.
Irgendwie klappt der Code nicht richtig, ich würde gerne zu jedem User, geordnet nach "LASTACTIVE" seine FID's anzeigen lassen.
Wäre dankbar bei Hilfe.

Hier der Aussschnitt aus der Abfrage.

PHP-Code:
<?php 


    
global $db$mybb;
    {        
    
      
$query $db->query("

SELECT * 
 FROM `mybb_users`

   ORDER BY `mybb_users`.`lastactive`
 DESC LIMIT 0, 10 "
);
            echo 
'';

          while(
$row $db->fetch_array($query))  


  if(
$mybb->user['uid'] >= 0)




 
$query2 $db->query("SELECT * 
 FROM `mybb_userfields`

ORDER BY .... [hier benötige ich Hilfe]


 DESC LIMIT 0, 1 "
);                 
            echo 
'';

          while(
$row2 $db->fetch_array($query2))  

  if(
$mybb->user['uid'] >= 0
Zitieren
#2
Ich würde zunächst versuchen, die MySQL-Abfrage mit LEFT JOIN zu erzeugen (ähnlich wie hier). Eine MySQL-Abfrage innerhalb einer while-Schleife kann meiner Meinung nach schnell zu Performance-Problemen führen.
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#3
Mit LEFT JOIN habe ich es bereits versucht, aber irgendwie komme ich zu keinem Ergebnis, bzw. ohne einer Fehlermeldung.
Bin darin wsl. noch zu unerfahren.

So habe ich es eingegeben:

PHP-Code:
<?php 


    
global $db$mybb;
    {        
    
      
$query $db->query("

                         SELECT u.lastactive, u.uid, u.username, uf.fid3
                         FROM "
.TABLE_PREFIX."users u
                         LEFT JOIN "
.TABLE_PREFIX."userfields uf ON (u.fid3 = uf.fid3)


   ORDER BY `mybb_users`.`lastactive`
 DESC LIMIT 0, 10 "
);
            echo 
'';

          while(
$row $db->fetch_array($query))  


  if(
$mybb->user['uid'] >= 0)


 { 
Zitieren
#4
Probier mal ob das klappt und ob Du damit weiterkommst
PHP-Code:
$query $db->query("SELECT u.*, f.*
    FROM "
.TABLE_PREFIX."users u
    LEFT JOIN "
.TABLE_PREFIX."userfields f ON (u.uid=f.ufid)
    WHERE 1=1
    ORDER BY u.uid DESC, u.lastactive DESC
    LIMIT 0,10"
); 
Willst Du nur auf fid3 zugreifen oder auf alle Userfields?
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#5
Code klappt.
Durch den * greife ich ja schon auf alle hinzu, das möchte ich auch..

Vielen Dank nochmal! Smile
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Aus Auswahlliste auslesen und sortieren Seven 1 1.242 29.05.2015, 07:00
Letzter Beitrag: Seven