MyBB.de Forum

Normale Version: [gelöst] Externe Auflistung (für Tutorials)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Grüße,
####20.06.07####
Haben es geschafft - heut abend gibts den download dann Smile
##############

ich bin gerade dabei mein mybb bisl an meine seite anzupassen...

ich habe mein wbb mir mal ein script geschrieben welches

1. Alle Foren aus einer Kategorie ausliest
2. Nach klick auf das Forum kommen alle Threads welche in dem Forum sind
3. Nach klick auf den Thread kommt man zu dem ersten Post - welcher in diesem fall das Tutorial ist.

Zu sehen ist es hier: http://webstone.info/tutorials.php

jetzt hab ich das probiert fürs myBB zu machen aber er zeigt mir keine Foren an...
hier mal der Code(falls des zu lang werden sollte, füge ich auch gerne die dateien als anhang an)


tutorials.php
PHP-Code:
<?php
//**** Eigene Seite *****
 
define("KILL_GLOBALS"1);
 
define("IN_MYBB"1);

require 
"./global.php";
require 
"./inc/functions_post.php";

add_breadcrumb("Tutorials");

/*$query = $db->query("SELECT * from `".TABLE_PREFIX."forums` WHERE `".TABLE_PREFIX."forums`.type = 'f' AND `".TABLE_PREFIX."forums`.parentlist = '8'");
*/
$query $db->query("SELECT * from `".TABLE_PREFIX."forums` 
INNER JOIN (`"
.TABLE_PREFIX."threads` 
INNER JOIN `"
.TABLE_PREFIX."posts` 
ON `"
.TABLE_PREFIX."threads`.tid = `".TABLE_PREFIX."posts`.tid) 
ON `"
.TABLE_PREFIX."threads`.fid = `".TABLE_PREFIX."forums`.fid 
WHERE `"
.TABLE_PREFIX."forums`.parentlist = '8'");

$exists = array();

while(
$row $db->fetch_array($query))
{
        if(!
in_array($row['name'],$exists))
        {
/*                $row['message']=$parse->doparse($row['message'],$row['allowsmilies'],$row['allowhtml'],$row['allowbbcode'],$row['allowimages']);
        
                $row['subject'] = htmlconverter(textwrap($row['subject']));*/
                   
$name $row['name'];
                
$desc $row['description'];
/*                $time=date("H:i:s", $row["dateline"]);
                $date=date("d.m.Y", $row["dateline"]);*/
        
                
eval("\$tutorials_get .= \"".$templates->get("tutorials_get")."\";");
                
$exists[] = $row['name'];
        }
}

eval(
"\$tutorials .= \"".$templates->get("tutorials")."\";");
output_page($tutorials);
?>

das Template "tutorials"
Code:
$header
<navigation><br>
$tutorials_get
$footer

das Template "tutorials_get"
Code:
<table width="100%" border="0" cellpadding="0" cellspacing="0">

    <tr>
      <td width="100%" align="left" valign="top"><span style="padding-left:5px;">&raquo; <a href="tutorials_list.php?catid=$row[fid]&amp;sid=$session[hash]">$name</a></span><br></td>
    </tr>
    <tr>
      <td width="100%" align="left" valign="top"><span style="padding-left:5px;">$desc</span><br><br></td>
    </tr>

</table>


hatte es mit dem diesem code auch schon probiert(ist ausgeklammert)
PHP-Code:
$query $db->query("SELECT * from `".TABLE_PREFIX."forums` WHERE `".TABLE_PREFIX."forums`.type = 'f' AND `".TABLE_PREFIX."forums`.parentlist = '8'"); 
da zeigt er mir aber nur die kategorie "Tutorials" an... wobei er ja eigentlich auch die anderen anzeigen müsste...

achja, zu sehen ist mein versuch unter
http://web2.webstone.info/branches/v3.0/...orials.php


hoffe ihr könnt mir helfen.

Gruss
Marcus
Hallo Webstone,

Beim Blick auf deinen versuch habe ich bemerkt, dass das Template "tutorials_get" im Quelltext nicht auftaucht.
Das heißt es ist
PHP-Code:
!in_array($row['name'],$exists
Es kann kein Ergebnis gefunden werden.
Ersetze bitte erst einmal dein Script hiermit, um zu überprüfen ob ein Ergebnis vorhanden ist.
PHP-Code:
<?php
//**** Eigene Seite *****
 
define("KILL_GLOBALS"1);
 
define("IN_MYBB"1);

require 
"./global.php";
require 
"./inc/functions_post.php";

add_breadcrumb("Tutorials");

/*$query = $db->query("SELECT * from `".TABLE_PREFIX."forums` WHERE `".TABLE_PREFIX."forums`.type = 'f' AND `".TABLE_PREFIX."forums`.parentlist = '8'");
*/
$query $db->query("SELECT * from `".TABLE_PREFIX."forums` 
INNER JOIN (`"
.TABLE_PREFIX."threads` 
INNER JOIN `"
.TABLE_PREFIX."posts` 
ON `"
.TABLE_PREFIX."threads`.tid = `".TABLE_PREFIX."posts`.tid) 
ON `"
.TABLE_PREFIX."threads`.fid = `".TABLE_PREFIX."forums`.fid 
WHERE `"
.TABLE_PREFIX."forums`.parentlist = '8'");

$exists = array();

while(
$row $db->fetch_array($query))
{
        
#if(!in_array($row['name'],$exists))
        #{
/*                $row['message']=$parse->doparse($row['message'],$row['allowsmilies'],$row['allowhtml'],$row['allowbbcode'],$row['allowimages']);
        
                $row['subject'] = htmlconverter(textwrap($row['subject']));*/
                   
$name $row['name'];
                
$desc $row['description'];
/*                $time=date("H:i:s", $row["dateline"]);
                $date=date("d.m.Y", $row["dateline"]);*/
        
                
eval("\$tutorials_get .= \"".$templates->get("tutorials_get")."\";");
                
$exists[] = $row['name'];
        
#}
}

eval(
"\$tutorials .= \"".$templates->get("tutorials")."\";");
output_page($tutorials);
?>

Edit:
Bzw.: jetzt wo ich genau hinsehe, ist klar das es kein Ergebnis gibt. dein Query ist so nicht korrekt.
Nach dem Essen kann ich eine Korrektur geben.

Mfg Garlant
hiho Smile

erstma thx für die hilfe Smile

aber wird immer noch nix angezeigt Sad
habe deine code variante genutzt

wegen dem query.. hab einfach mein script vom wbb genommen, das was ich net gebraucht habe raus genommen und die variablen geändert... der obere query(der ausgeklammert ist) funktioniert ja ^^ nur zeigt er halt immer nur die kategorie "tutorials" an ^^
Ja dein erster Query war ein guter Ansatz, halt mit einem winzigem Fehler.
Das einzige Forum was auf die parentlist 8 passen wird, wird die Kategorie selbst sein. Die dazugehörigen Foren sind mit 8,x 8xy ... "gekennzeichnet". Daher wirst du da nur ein Ergebnis zurück bekommen. Du kannst aber nach ähnlichen Ergebnissen suche lassen.
Ersetze deinen Query bitte mit diesem:
PHP-Code:
$query $db->query("SELECT * FROM `".TABLE_PREFIX."forums` WHERE type = 'f' AND parentlist like '8%'"); 

Deine Variablen in den Templates sind mit/seit MyBB Version 1.2 nicht mehr korrekt. Die Variablen gehören in geschweifte klammern.
PHP-Code:
{$variable

Zum Schluss noch.
PHP-Code:
eval("\$tutorials .= \"".$templates->get("tutorials")."\";"); 
kannst du mit
PHP-Code:
eval("\$tutorials = \"".$templates->get("tutorials")."\";"); 
ersetzen. Die Variable $tutorials wird schließlich nur einmal verwendet und nicht im Wert erweitert.

Mfg Garlant
nabend Smile

okay ^^ also jetzt zeigt er mir alle foren in der kategorie "tutorials" an...

ich habe jetzt auch das array raus gelöscht, da er sonst nur eine kategorie angezeigt hat ^^

auch hab ich festgestellt das ich unsauber gearbeitet habe Smile hatte im template "tutorials" nicht $tutorials_get angegeben sondern nur $tutorial_get ...

ich bedanke mich schonmal für die tatkräftige unterstützung Smile

ich werd nochn bisl probieren und mich ggf. nochmal melden Smile

achja, sofern interesse bestehen sollte stelle ich den code dann zum schluss gerne zur verfügung Smile


schönen abend noch
gruss
marcus
hidiho ^^

ich habs fast geschafft Smile

es sind nur noch kleinigkeiten zu machen *grins*
(also für euch bestimmt kleinigkeiten)

es geht um folgendes...
ich habe nun bisl weiter gearbeitet und den code den Garlant mir gestern gegeben hat (nochmals dickes THX dafür) bisl bearbeitet und halt die thread auflistung sowie die auflistung des posts vorgenommen

funktioniert nun auch soweit...

nun möchte ich aber gerne, das ich z.b. bei der Ansicht des Tutorials nur der eigentliche "firstpost" angezeigt wird...
habe auch in der db schon die einträge gesehen und probiert das über den WHERE befehl so zu biegen das er halt automatisch guckt ob firstpost = pid ist...

aber leider ohne erfolg v.v *schnüff*

auch habe ich zur zeit das Problem das ich den namen in der navigation nur manuell angeben kann

also

Webstone.info » Tutorialname
bzw.
Webstone.info » Kategoriename

dies würde ich auch gerne automatisiert machen Smile aber keine ahnung wie... ich könnte den namen immer mitübergeben in der Domain sieht aber irgendwie bisl dumm aus...

Meine Idee war es, nenn Query zu schreiben, welcher die mitgegebene id dann nutzt um dann den namen entsprechend auszulesen...

hier mal der code der dateien (tutorials.php ist ja oben schon drinne, lasse ich jetzt weg)


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

require 
"./global.php";
require 
"./inc/functions_post.php";

add_breadcrumb("Kategoriename");

$query $db->query("SELECT * FROM `".TABLE_PREFIX."threads` WHERE fid = '".$_GET['cat_id']."'");

while(
$row $db->fetch_array($query))
{
                   
$tut_id                 $row['tid'];
                   
$subject         $row['subject'];
        
                eval(
"\$tutorials_list_get .= \"".$templates->get("tutorials_list_get")."\";");
}

eval(
"\$tutorials_list = \"".$templates->get("tutorials_list")."\";");
output_page($tutorials_list);
?>

template "tutorials_list"
Code:
$header
<navigation><br>
$tutorials_list_get
$footer

template "tutorials_list_get"
Code:
<table width="100%" border="0" cellpadding="0" cellspacing="0">

    <tr>
      <td width="100%" align="left" valign="top"><span style="padding-left:5px;">&raquo; <a href="tutorials_read.php?tut_id=$row[tid]">$row[subject]</a></span><br></td>
    </tr>

</table>

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

require 
"./global.php";
require 
"./inc/functions_post.php";

add_breadcrumb("Tutorialname");

$query $db->query("SELECT * FROM `".TABLE_PREFIX."posts` WHERE tid = '".$_GET['tut_id']."'");

while(
$row $db->fetch_array($query))
{
                   
$subject         $row['subject'];
                                   
$message         $row['message'];
                                   
$username         $row['username'];

        eval(
"\$tutorials_read_get .= \"".$templates->get("tutorials_read_get")."\";");
}

eval(
"\$tutorials_read = \"".$templates->get("tutorials_read")."\";");
output_page($tutorials_read);
?>

template "tutorials_read"
Code:
$header
<navigation><br>
$tutorials_read_get
$footer

template "tutorials_read_get"
Code:
<table width="100%" border="0" cellpadding="0" cellspacing="0">

    <tr>
      <td width="100%" align="left" valign="top">$row[subject] - $row[username]<br>$row[message]<br></td>
    </tr>

</table><br><br>


ich hoffe ihr versteht mein problem Smile


achja... zusehen ist es auf http://web2.webstone.info/branches/v3.0/...orials.php


ich bedanke mich vorweg schonmal Smile
ihr seit echt spitze *duck & weg* Wink

gruss
marcus
Hallo Webstone,

Warum benutzt du mehrere Dateien? Es ist doch wesentlich einfacher das ganze etwas zusammen zu halten.
Du kannst über einfache iI-Abfragen feststellen was gemacht werden soll und das ganze auseinander halten.
Ich habe die das ganze mal etwas Komprimiert und in einer Datei zusammengefasst.
Ich habe jetzt allerdings nicht alles realisiert, das wirst du noch abändern müssen oder bescheid sagen, das es zu ende geschrieben werden soll. Wink

PHP-Code:
define("IN_MYBB"1);

require_once 
"./global.php";
require 
"./inc/functions_post.php";

if (!isset(
$mybb->input['action']))
{
    
add_breadcrumb("Tutorials");
    
    
$query $db->query("SELECT fid,name, description FROM `".TABLE_PREFIX."forums` WHERE type = 'f' AND parentlist like '%8%'");
    while(
$row $db->fetch_array($query))
    {
        
$name "<a href=\"./tutorials.php?action=tut_list&id=".$row['fid']."\">".$row['name']."";
        
$desc $row['description'];
        eval(
"\$tutorials_get .= \"".$templates->get("tutorials_get")."\";");
    }
}
elseif (
$mybb->input['action'] == 'tut_list')
{
    if(!isset(
intval($mybb->input['id'])))
    {
        
$tutorials_get 'Unbekannte Kategorie';
    }
    else 
    {
        
$query $db->query("SELECT name FROM ".TABLE_PREFIX."forums WHERE fid='".intval($mybb->input['id'])."'");
        
$name $db->fetch_array($query);
        
$name $name['name'];
        
add_breadcrumb($name"./tutorial.php");
        
        
$tut_query $db->query("SELECT t.*,p.* FROM ".TABLE_PREFIX."threads t LEFT JOIN ".TABLE_PREFIX."posts p ON (t.tid=p.tid) WHERE t.fid='".intval($mybb->input['id'])."' AND p.fid='".intval($mybb->input['id'])."' GROUP BY p.tid ORDER BY t.tid asc");
        while(
$tut $db->fetch_array($tut_query))
        {
            
$name $tut['subject'];
            
$desc $tut['message'];
            eval(
"\$tutorials_get .= \"".$templates->get("tutorials_get")."\";");
        }
    }
}

eval(
"\$tutorials = \"".$templates->get("tutorials")."\";");
output_page($tutorials);
?>

Mfg Garlant
nabend...

das wäre natürlich auch ne idee Smile

ich hab extra dateien gemacht um für mich selber die fehlersuche geringer zu halten Smile

habs auch so gemacht wie ichs früher beim wbb hatte ^^ war für mich einfacher vom denken her...

aber wenns mit der if variante einfacher is, vorallem mit der navi werd ich das dann mal probieren Smile

danke für den gedankenanstoß Smile
grüße...

also habe mal bisl rum probiert und bin bisher soweit gekommen
http://web2.webstone.info/branches/v3.0/...orials.php

er macht jetzt alles über das eine template...

der code sieht folgendermaßen aus...

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

require_once 
"./global.php";
require 
"./inc/functions_post.php";

if (!isset(
$mybb->input['action']))
{
    
add_breadcrumb("Tutorials");

    
$query $db->query("SELECT fid,name, description FROM `".TABLE_PREFIX."forums` WHERE type = 'f' AND parentlist like '%8%'");
    while(
$row $db->fetch_array($query))
    {
        
$name "<a href=\"./tutorials.php?action=tut_list&id=".$row['fid']."\">".$row['name']."</a><br>".$row['description']."";
        eval(
"\$tutorials_get .= \"".$templates->get("tutorials_get")."\";");
    }
}
elseif (
$mybb->input['action'] == 'tut_list')
{
    if(!isset(
$mybb->input['id']))
    {
        
$tutorials_get 'Unbekannte Kategorie';
    }
    else
    {
        
$query $db->query("SELECT name FROM ".TABLE_PREFIX."forums WHERE fid='".$mybb->input['id']."'");
        
$name $db->fetch_array($query);
        
$name $name['name'];
        
add_breadcrumb("Tutorials &raquo; ".$name"./tutorial.php");

        
$tut_query $db->query("SELECT t.*,p.* FROM ".TABLE_PREFIX."threads t LEFT JOIN ".TABLE_PREFIX."posts p ON (t.tid=p.tid) WHERE t.fid='".$mybb->input['id']."' AND p.fid='".$mybb->input['id']."' GROUP BY p.tid ORDER BY t.tid asc");
        while(
$tut $db->fetch_array($tut_query))
        {
            
$name $tut['subject'];
            eval(
"\$tutorials_get .= \"".$templates->get("tutorials_get")."\";");
        }
    }
}
elseif (
$mybb->input['action'] == 'tut_read')
{
    if(!isset(
$mybb->input['id']))
    {
        
$tutorials_get 'Unbekanntes Tutorial';
    }
    else
    {
        
$query $db->query("SELECT name FROM ".TABLE_PREFIX."threads WHERE fid='".$mybb->input['id']."'");
        
$name $db->fetch_array($query);
        
$name $name['name'];
        
add_breadcrumb("Tutorials &raquo; ".$name"./tutorial.php");

        
$tut_query $db->query("SELECT t.*,p.* FROM ".TABLE_PREFIX."threads t LEFT JOIN ".TABLE_PREFIX."posts p ON (t.tid=p.tid) WHERE t.fid='".$mybb->input['id']."' AND p.fid='".$mybb->input['id']."' GROUP BY p.tid ORDER BY t.tid asc");
        while(
$tut $db->fetch_array($tut_query))
        {
            
$name $tut['subject'];
            eval(
"\$tutorials_get .= \"".$templates->get("tutorials_get")."\";");
        }
    }
}

eval(
"\$tutorials = \"".$templates->get("tutorials")."\";");
output_page($tutorials);
?>

jetzt weiss ich aber nicht wie ich das machen soll, das er
1. das tutorial verlinkt
2. wie mach ich das mit dem template für "tutorials__read"
denn das möchte ich gerne individuell gestalten so das links dann auch der username steht mit avatar etc.
das geht, wenn ich mich nicht irre nach diesem schema net...

denn er ruft ja immer das template "tutorials" auf und in diesem template ist nur "tutorials_get" als variable mit drinne...

habt ihr evtl. ne idee?

gruss
marcus
Hallo Webstone,

Für dein tut_read werden die völlig falschen Querys abgefragt(vermute ich einfach mal, den das ergibt keinen Sinn was da steht). Soll in tut_list lediglich eine Auflistung der Tutorials sein und in tut_read werden diese gelesen? ...

1. Inwiefern meinst du "Tutorial verlinkt"?
Soll eine URL zum aufgerufenem Tut zu sehen sein oder was genau?

2.Du kannst dein gewünschtes Template über dies aufrufen
PHP-Code:
eval("\$tutorials_get = \"".$templates->get("anderes_template")."\";"); 


Mfg Garlant
Seiten: 1 2