MyBB.de Forum
Automatische Liste - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Sonstiges (https://www.mybb.de/forum/forum-1.html)
+--- Forum: Programmierung (https://www.mybb.de/forum/forum-32.html)
+--- Thema: Automatische Liste (/thread-30934.html)

Seiten: Seiten: 1 2 3 4 5


Automatische Liste - niftytimes - 07.11.2014

Hallo zusammen,
ich hab versucht eine automatische Liste zu erstellen bzw eine vorhandene nach meinen Wünschen umzuschreiben. Nunja, bei der ersten hat alles ganz wunderbar funktioniert (zumindest fast xD), aber bei der Zweiten hab ich wohl einen Fehler gemacht. Leider weiß ich mal wieder nicht welchen und stell deswegen mal hier die nächste doofe Frage Big Grin

Was hab ich falsch gemacht :
Die PHP
Code:
   <?php
   define("IN_MYBB", 1);

   require("global.php");
      global $db, $mybb, $lang, $templates, $parser, $theme, $userfields, $customfields, $profilefields, $field_hidden, $bgcolor, $alttrow;

   require_once MYBB_ROOT."inc/class_parser.php";


   //mannschaftslisten addon by fallen newyork

   //edited by risuena

   require "./inc/config.php";

   add_breadcrumb("besonderheiten", "besonderheiten.php");

   // fid11: besonderheiten
   // mit AND NOT werden Usergruppen ausgeschlossen (z.B, Npc, Adminaccount, Gastaccount) Muss also auch dementsprechend angepasst werden.


   // Okklumentik
   $faceclaim=$db->query("
      SELECT * FROM mybb_users
      LEFT JOIN mybb_userfields
      ON mybb_users.uid = mybb_userfields.ufid
       WHERE fid11 = 'okklumentik'
      AND NOT usergroup = '1'
      AND NOT usergroup = '3'
      AND NOT usergroup = '5'
      AND NOT usergroup = '6'
      AND fid11 LIKE 'Okklumentik Legilimentik%'
      ORDER BY mybb_userfields.fid11 ASC"
      );

   while($result=$db->fetch_array($faceclaim)) {
   $userid = $result['uid'];
   $username = $result['username'];
   $besonderheit = $result ['fid11'];

   $besonderheiten_okklumentik .= "$besonderheit - <font style=\"font-size:9px;\">$username</font><br>";
   }

   // Legilimentik
   $faceclaim=$db->query("
      SELECT * FROM mybb_users
      LEFT JOIN mybb_userfields
      ON mybb_users.uid = mybb_userfields.ufid
       WHERE fid11 = 'legilimentik'
      AND NOT usergroup = '1'
      AND NOT usergroup = '3'
      AND NOT usergroup = '5'
      AND NOT usergroup = '6'
      AND fid11 LIKE 'Okklumentik Legilimentik%'
      ORDER BY mybb_userfields.fid11 ASC"
      );

   while($result=$db->fetch_array($faceclaim)) {
   $userid = $result['uid'];
   $username = $result['username'];
   $besonderheit = $result ['fid11'];

   $besonderheiten_legilimentik .= "$besonderheit - <font style=\"font-size:9px;\">$username</font><br>";
   }
    
    // Metamorphmagus
   $faceclaim=$db->query("
      SELECT * FROM mybb_users
      LEFT JOIN mybb_userfields
      ON mybb_users.uid = mybb_userfields.ufid
       WHERE fid11 = 'metamorphmagus'
      AND NOT usergroup = '1'
      AND NOT usergroup = '3'
      AND NOT usergroup = '5'
      AND NOT usergroup = '6'
      AND fid11 LIKE 'Metamorphmagus%'
      ORDER BY mybb_userfields.fid11 ASC"
      );

   while($result=$db->fetch_array($faceclaim)) {
   $userid = $result['uid'];
   $username = $result['username'];
   $besonderheit = $result ['fid11'];

   $besonderheiten_metamorphmagus .= "$besonderheit - <font style=\"font-size:9px;\">$username</font><br>";
   }
    
    // Parselmund
   $faceclaim=$db->query("
      SELECT * FROM mybb_users
      LEFT JOIN mybb_userfields
      ON mybb_users.uid = mybb_userfields.ufid
       WHERE fid11 = 'parselmund'
      AND NOT usergroup = '1'
      AND NOT usergroup = '3'
      AND NOT usergroup = '5'
      AND NOT usergroup = '6'
      AND fid11 LIKE 'Parselmund%'
      ORDER BY mybb_userfields.fid11 ASC"
      );

   while($result=$db->fetch_array($faceclaim)) {
   $userid = $result['uid'];
   $username = $result['username'];
   $besonderheit = $result ['fid11'];

   $besonderheiten_parselmund .= "$besonderheit - <font style=\"font-size:9px;\">$username</font><br>";
   }
    
    // Animagus
   $faceclaim=$db->query("
      SELECT * FROM mybb_users
      LEFT JOIN mybb_userfields
      ON mybb_users.uid = mybb_userfields.ufid
       WHERE fid11 = 'animagus'
      AND NOT usergroup = '1'
      AND NOT usergroup = '3'
      AND NOT usergroup = '5'
      AND NOT usergroup = '6'
      AND fid11 LIKE 'Animagus%'
      ORDER BY mybb_userfields.fid11 ASC"
      );

   while($result=$db->fetch_array($faceclaim)) {
   $userid = $result['uid'];
   $username = $result['username'];
   $besonderheit = $result ['fid11'];

   $besonderheiten_animagus .= "$besonderheit - <font style=\"font-size:9px;\">$username</font><br>";
   }
    
    // Wahrsager
   $faceclaim=$db->query("
      SELECT * FROM mybb_users
      LEFT JOIN mybb_userfields
      ON mybb_users.uid = mybb_userfields.ufid
       WHERE fid11 = 'wahrsager'
      AND NOT usergroup = '1'
      AND NOT usergroup = '3'
      AND NOT usergroup = '5'
      AND NOT usergroup = '6'
      AND fid11 LIKE 'Wahrsager%'
      ORDER BY mybb_userfields.fid11 ASC"
      );

   while($result=$db->fetch_array($faceclaim)) {
   $userid = $result['uid'];
   $username = $result['username'];
   $besonderheit = $result ['fid11'];

   $besonderheiten_wahrsager .= "$besonderheit - <font style=\"font-size:9px;\">$username</font><br>";
   }
    
    // Werwolf
   $faceclaim=$db->query("
      SELECT * FROM mybb_users
      LEFT JOIN mybb_userfields
      ON mybb_users.uid = mybb_userfields.ufid
       WHERE fid11 = 'werwolf'
      AND NOT usergroup = '1'
      AND NOT usergroup = '3'
      AND NOT usergroup = '5'
      AND NOT usergroup = '6'
      AND fid11 LIKE 'Werwolf%'
      ORDER BY mybb_userfields.fid11 ASC"
      );

   while($result=$db->fetch_array($faceclaim)) {
   $userid = $result['uid'];
   $username = $result['username'];
   $besonderheit = $result ['fid11'];

   $besonderheiten_werwolf .= "$besonderheit - <font style=\"font-size:9px;\">$username</font><br>";
   }
    
    // Veela
   $faceclaim=$db->query("
      SELECT * FROM mybb_users
      LEFT JOIN mybb_userfields
      ON mybb_users.uid = mybb_userfields.ufid
       WHERE fid11 = 'veela'
      AND NOT usergroup = '1'
      AND NOT usergroup = '3'
      AND NOT usergroup = '5'
      AND NOT usergroup = '6'
      AND fid11 LIKE 'Veela%'
      ORDER BY mybb_userfields.fid11 ASC"
      );

   while($result=$db->fetch_array($faceclaim)) {
   $userid = $result['uid'];
   $username = $result['username'];
   $besonderheit = $result ['fid11'];

   $besonderheiten_veela .= "$besonderheit - <font style=\"font-size:9px;\">$username</font><br>";
   }
    
    eval("\$besonderheiten = \"".$templates->get("besonderheiten")."\";");
   output_page($besonderheiten);

   ?>
Und das Template:
Code:
   <html>
   <head>
   <title>Besonderheiten - {$settings['bbname']}</title>
   {$headerinclude}
   </head>
   <body>
   {$header}
   <br />
   <center>
   <table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder">
   <tr><td align="center"><br>
         <div class="headline1">Besonderheiten</div><br>
   <div class="bg_listen-div">
   <br /><center>
<table width="450px">
     <div class="headline1"><a name="1">Okklumentik & Legilimentik </a></div>
    <tr><td valign="top"class="avaliste_abstand">
   {$besonderheiten_okklumentik}{$besonderheiten_legilimentik}</td></tr><br>
     <div class="headline1"><a name="1">Metamophmagus</a></div>
   <tr><td valign="top"class="avaliste_abstand">
   {$besonderheiten_metamorphmagus}</td></tr><br>
     <div class="headline1"><a name="1">Parselmund </a></div>
    <tr><td valign="top"class="avaliste_abstand">
   {$besonderheiten_parselmund}</td></tr><br>
     <div class="headline1"><a name="1">Animagus </div>
   <tr><td valign="top"class="avaliste_abstand">
   {$besonderheiten_animagus}</td></tr><br>
     <div class="headline1"><a name="1">Wahrsager</a></div>
    <tr><td valign="top"class="avaliste_abstand">
   {$besonderheiten_wahrsager}</td></tr><br>
     <div class="headline1"><a name="1">Veela</a></div>
    <tr><td valign="top"class="avaliste_abstand">
   {$besonderheiten_veela}</td></tr><br>
     <div class="headline1"><a name="1">Werwolf</a></div>
    <tr><td valign="top"class="avaliste_abstand">
   {$besonderheiten_werwolf}</td></tr></table></div></center>
   
   <center><br />
   <a href="http://goldentimes.bplaced.net/showthread.php?tid=20" target="_blank"><span style="font-weight: bold;">zu den reservierten Posten</span></a><br />
   <br>
   </div>
   <br>
   </td></tr>
   </table>

       <br><br> &nbsp;
   {$footer}

   </body>

   </html>

Lieben Gruß


RE: Automatische Liste - MrBrechreiz - 08.11.2014

Versuche es mal so.

PHP-Code:
<?php
   define
("IN_MYBB"1);

   require_once 
"./global.php";


   require_once 
MYBB_ROOT."inc/class_parser.php";


   
//mannschaftslisten addon by fallen newyork

   //edited by risuena

   //require "./inc/config.php";

   
add_breadcrumb("besonderheiten""besonderheiten.php");

   
// fid11: besonderheiten
   // mit AND NOT werden Usergruppen ausgeschlossen (z.B, Npc, Adminaccount, Gastaccount) Muss also auch dementsprechend angepasst werden.


   // Okklumentik
   
$faceclaim=$db->query("
      SELECT * FROM mybb_users
      LEFT JOIN mybb_userfields
      ON mybb_users.uid = mybb_userfields.ufid
       WHERE fid11 = 'okklumentik'
      AND NOT usergroup = '1'
      AND NOT usergroup = '3'
      AND NOT usergroup = '5'
      AND NOT usergroup = '6'
      AND fid11 LIKE 'Okklumentik Legilimentik%'
      ORDER BY mybb_userfields.fid11 ASC"
      
);

   while(
$result=$db->fetch_array($faceclaim)) {
   
$userid $result['uid'];
   
$username $result['username'];
   
$besonderheit $result ['fid11'];

   
$besonderheiten_okklumentik .= "$besonderheit - <font style=\"font-size:9px;\">$username</font><br>";
   }

   
// Legilimentik
   
$faceclaim=$db->query("
      SELECT * FROM mybb_users
      LEFT JOIN mybb_userfields
      ON mybb_users.uid = mybb_userfields.ufid
       WHERE fid11 = 'legilimentik'
      AND NOT usergroup = '1'
      AND NOT usergroup = '3'
      AND NOT usergroup = '5'
      AND NOT usergroup = '6'
      AND fid11 LIKE 'Okklumentik Legilimentik%'
      ORDER BY mybb_userfields.fid11 ASC"
      
);

   while(
$result=$db->fetch_array($faceclaim)) {
   
$userid $result['uid'];
   
$username $result['username'];
   
$besonderheit $result ['fid11'];

   
$besonderheiten_legilimentik .= "$besonderheit - <font style=\"font-size:9px;\">$username</font><br>";
   }
    
    
// Metamorphmagus
   
$faceclaim=$db->query("
      SELECT * FROM mybb_users
      LEFT JOIN mybb_userfields
      ON mybb_users.uid = mybb_userfields.ufid
       WHERE fid11 = 'metamorphmagus'
      AND NOT usergroup = '1'
      AND NOT usergroup = '3'
      AND NOT usergroup = '5'
      AND NOT usergroup = '6'
      AND fid11 LIKE 'Metamorphmagus%'
      ORDER BY mybb_userfields.fid11 ASC"
      
);

   while(
$result=$db->fetch_array($faceclaim)) {
   
$userid $result['uid'];
   
$username $result['username'];
   
$besonderheit $result ['fid11'];

   
$besonderheiten_metamorphmagus .= "$besonderheit - <font style=\"font-size:9px;\">$username</font><br>";
   }
    
    
// Parselmund
   
$faceclaim=$db->query("
      SELECT * FROM mybb_users
      LEFT JOIN mybb_userfields
      ON mybb_users.uid = mybb_userfields.ufid
       WHERE fid11 = 'parselmund'
      AND NOT usergroup = '1'
      AND NOT usergroup = '3'
      AND NOT usergroup = '5'
      AND NOT usergroup = '6'
      AND fid11 LIKE 'Parselmund%'
      ORDER BY mybb_userfields.fid11 ASC"
      
);

   while(
$result=$db->fetch_array($faceclaim)) {
   
$userid $result['uid'];
   
$username $result['username'];
   
$besonderheit $result ['fid11'];

   
$besonderheiten_parselmund .= "$besonderheit - <font style=\"font-size:9px;\">$username</font><br>";
   }
    
    
// Animagus
   
$faceclaim=$db->query("
      SELECT * FROM mybb_users
      LEFT JOIN mybb_userfields
      ON mybb_users.uid = mybb_userfields.ufid
       WHERE fid11 = 'animagus'
      AND NOT usergroup = '1'
      AND NOT usergroup = '3'
      AND NOT usergroup = '5'
      AND NOT usergroup = '6'
      AND fid11 LIKE 'Animagus%'
      ORDER BY mybb_userfields.fid11 ASC"
      
);

   while(
$result=$db->fetch_array($faceclaim)) {
   
$userid $result['uid'];
   
$username $result['username'];
   
$besonderheit $result ['fid11'];

   
$besonderheiten_animagus .= "$besonderheit - <font style=\"font-size:9px;\">$username</font><br>";
   }
    
    
// Wahrsager
   
$faceclaim=$db->query("
      SELECT * FROM mybb_users
      LEFT JOIN mybb_userfields
      ON mybb_users.uid = mybb_userfields.ufid
       WHERE fid11 = 'wahrsager'
      AND NOT usergroup = '1'
      AND NOT usergroup = '3'
      AND NOT usergroup = '5'
      AND NOT usergroup = '6'
      AND fid11 LIKE 'Wahrsager%'
      ORDER BY mybb_userfields.fid11 ASC"
      
);

   while(
$result=$db->fetch_array($faceclaim)) {
   
$userid $result['uid'];
   
$username $result['username'];
   
$besonderheit $result ['fid11'];

   
$besonderheiten_wahrsager .= "$besonderheit - <font style=\"font-size:9px;\">$username</font><br>";
   }
    
    
// Werwolf
   
$faceclaim=$db->query("
      SELECT * FROM mybb_users
      LEFT JOIN mybb_userfields
      ON mybb_users.uid = mybb_userfields.ufid
       WHERE fid11 = 'werwolf'
      AND NOT usergroup = '1'
      AND NOT usergroup = '3'
      AND NOT usergroup = '5'
      AND NOT usergroup = '6'
      AND fid11 LIKE 'Werwolf%'
      ORDER BY mybb_userfields.fid11 ASC"
      
);

   while(
$result=$db->fetch_array($faceclaim)) {
   
$userid $result['uid'];
   
$username $result['username'];
   
$besonderheit $result ['fid11'];

   
$besonderheiten_werwolf .= "$besonderheit - <font style=\"font-size:9px;\">$username</font><br>";
   }
    
    
// Veela
   
$faceclaim=$db->query("
      SELECT * FROM mybb_users
      LEFT JOIN mybb_userfields
      ON mybb_users.uid = mybb_userfields.ufid
       WHERE fid11 = 'veela'
      AND NOT usergroup = '1'
      AND NOT usergroup = '3'
      AND NOT usergroup = '5'
      AND NOT usergroup = '6'
      AND fid11 LIKE 'Veela%'
      ORDER BY mybb_userfields.fid11 ASC"
      
);

   while(
$result=$db->fetch_array($faceclaim)) {
   
$userid $result['uid'];
   
$username $result['username'];
   
$besonderheit $result ['fid11'];

   
$besonderheiten_veela .= "$besonderheit - <font style=\"font-size:9px;\">$username</font><br>";
   }
    
eval(
"\$besonderheiten = \"".$templates->get("besonderheiten")."\";");
output_page($besonderheiten);

?>



RE: Automatische Liste - niftytimes - 08.11.2014

Hm... ich glaube der Fehler liegt in dem Template, angezeigt wird es zwar, aber leider nicht an der richtigen Stelle. (siehe Anhang)
Nur hab ich schon dreißigmal verglichen mit dem anderen Template wo alles fuktioniert und keinen Unterschied gefunden bis auf die neu eingesetzten Variablen^^


RE: Automatische Liste - MrBrechreiz - 08.11.2014

An deiner Stelle würde ich generell das Template überarbeiten, da es doch recht viele Fehler enthält.


RE: Automatische Liste - niftytimes - 08.11.2014

Okay, werde es nochmal von vorne versuchen und hoffe nicht den gleichen Fehler einzubauen xD
Danke Smile


RE: Automatische Liste - navis - 13.03.2015

Ich habe eine Liste erstellt wo 4 Profilfelder abgefragt werden, dass klappt auch soweit alles gut.

Die Sortierung habe ich nach fid33 gewählt, dass klappt auch soweit gut, aber da es bei fid33 öfter vorkommt, dass es dort Zahlen doppelt gibt, würde ich zusätzlich gern nach fid31 sortieren und vielleicht sogar eher nach Username statt nach UserID.

Kann mir da jemand behilflich sein?

Code:
$XYZ=$db->query("SELECT * FROM mybb_users LEFT JOIN mybb_userfields ON mybb_users.uid = mybb_userfields.ufid WHERE fid30 = 'ABZ' ORDER BY mybb_userfields.fid33 ASC");

Folgendes hat irgendwie nichts gebracht.
Code:
$XYZ=$db->query("SELECT * FROM mybb_users LEFT JOIN mybb_userfields ON mybb_users.uid = mybb_userfields.ufid WHERE fid30 = 'ABZ' ORDER BY mybb_userfields.fid33, mybb_userfields.fid31 ASC");



RE: Automatische Liste - MrBrechreiz - 13.03.2015

Dann versuche es mal statt

"ORDER BY mybb_userfields.fid33 ASC"

so

"ORDER BY mybb_username.fid33 ASC" oder "ORDER BY mybb_username ASC"


RE: Automatische Liste - navis - 13.03.2015

Na ja hauptsächlich geht es mir aber erst mal, dass das Ganze erst nach fid33 sortiert wird und wenn es da zu einer Doppelbelegung kommt, dann dort nach fid31, wenn es dann noch doppelte gibt, dann nach Username.

Hatte es mit: http://sql.lernenhoch2.de/lernen/sql-anfanger/select-daten-selektieren/order-by-sortieren/#weiter_links eben versucht, aber das funktioniert nicht.

Außerdem werden bei fid33 bzw. mittlerweile fid34, weil ich es neu angelegt habe, da ich dachte der "Fehler" würde dann verschwinden, die Zahlen nicht richtig angegeben. Ich habe Zahlen von 1-39 eingefügt. Da aber dann die 13 vor der 2 kommt, habe ich es auf 02 geändert, was mir auch innerhalb der Auswahlbox angezeigt wird, bei der Ausgabe steht aber wieder nur 2 und somit ist die Sortierung trotzdem falsch.

Bei einem anderen Profilfeld funktioniert es aber mit 01, 02, 03


RE: Automatische Liste - MrBrechreiz - 13.03.2015

"ORDER BY mybb_userfields.fid33, mybb_userfields.fid31, mybb_username"


RE: Automatische Liste - navis - 13.03.2015

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1054 - Unknown column 'mybb_username' in 'order clause'
Query:
SELECT * FROM mybb_users LEFT JOIN mybb_userfields ON mybb_users.uid = mybb_userfields.ufid WHERE fid30 = 'XYZ' ORDER BY mybb_userfields.fid34, mybb_userfields.fid31, mybb_username ASC