Archiv verlassen und diese Seite im Standarddesign anzeigen : Brauche hilfe beim eigenem Forum mit smarty
eternitysoft 04-07-2005, 15:53 Hallo also bin dabei mir ein eigenes Forum zu proggen
brauche bloß bei 2 sachen mal hilfe
Ist mit Smarty gemacht
mein Problem ist ich weiß nicht wie ich das mit der Ausgabe
machen soll so das die richtigen forums in der richtigen
katogerie ist bsp
[Allgemein]
-Test1
-Test2
[Rest]
-Restzeugst
e.t.c
wegen der abfrage und dann noch das ausgeben
(mit den mods ausgeben genauso)
und dann hab ich kein plan wie ich das mit dem Neuen Themen/ungelesene beiträge e.t.c machen soll
hoffe ihr könnt mir mal helfen hier die dateien einmal als zip(anhang)
und hier die wichtigen dateien als code
index.php
<?php
define('SMARTY_DIR', $absoluter_pfad.'/smarty/');
require(SMARTY_DIR.'Smarty.class.php');
$select_db = mysql_select_db($db['name']);
$sql_config=mysql_query("
select
*
from
".$prefix."_config
");
while($row_config = mysql_fetch_array($sql_config))
{
$sitename = $row_config['sitename'];
$standart_style = $row_config['style'];
$standart_language = $row_config['language'];
$description = $row_config['description'];
$allow_html = $row_config['allow_html'];
$allow_bbcode = $row_config['allow_bbcode'];
$allow_sig = $row_config['allow_sig'];
}
include ('inc/login.php');
include ('inc/language.php');
$catagories = array();
$sql_catagories=mysql_query("
select
*
from
".$prefix."_catagories order by nr asc
");
while($row_catagories = mysql_fetch_assoc($sql_catagories))
{
$catagories[] = $row_catagories;
}
$smarty = new Smarty;
require ('templatedaten.php');
$smarty->assign("catagorie",$catagories);
$smarty->display('index.tpl');
?>
index.tpl
{* index tpl *}
<table border="1" cellspacing="0" width="900" >
<tr>
<td>
{foreach from=$catagorie item=catagorie}
<table border="1" cellspacing="0" cellpadding="0" width="95%">
<tr><td>
{$catagorie.title}
</td></tr>
<tr><td>
{$catagorie.id}
</td></tr>
</table>
{/foreach}
</td>
</tr>
</table>
eternitysoft 04-07-2005, 15:54 Die tabellen
$tables = array ("".$prefix."_catagories" =>"CREATE TABLE ".$prefix."_catagories (
id int(10) DEFAULT '0' NOT NULL auto_increment,
title VARCHAR(100),
nr VARCHAR(5),
PRIMARY KEY (id),
)",
"".$prefix."_forums" =>"CREATE TABLE ".$prefix."_forums (
id int(10) DEFAULT '0' NOT NULL auto_increment,
cid int(10) NOT NULL,
name varchar(100),
description text,
password varchar(250),
last_topic varchar(100),
last_poster varchar(50),
posts varchar(5),
topics varchar(5),
nr varchar(5),
PRIMARY KEY (id)
)",
"".$prefix."_config" =>"CREATE TABLE ".$prefix."_config (
id int(10) DEFAULT '0' NOT NULL auto_increment,
sitename varchar(100),
style varchar (255),
language varchar (255),
description text,
allow_html varchar(1),
allow_bbcode varchar(1),
allow_sig varchar(1),
posts_per_page varchar(3),
topics_per_page varchar(3),
PRIMARY KEY (id)
)",
// 0 nein 1 ja
"".$prefix."_ranks" =>"CREATE TABLE ".$prefix."_ranks (
id int(10) DEFAULT '0' NOT NULL auto_increment,
title varchar(50) NOT NULL,
posts varchar(10) NOT NULL,
image varchar(250),
PRIMARY KEY(id),
)",
"".$prefix."_posts" =>"CREATE TABLE ".$prefix."_posts (
id int(10) DEFAULT '0' NOT NULL auto_increment,
tid int(10) DEFAULT '0' NOT NULL,
fid int(10) DEFAULT '0' NOT NULL,
pid int(10) NOT NULL,
text text,
sig_on varchar(0),
time varchar(20),
ip varchar(16),
PRIMARY KEY (id),
)",
"".$prefix."_pns" =>"CREATE TABLE ".$prefix."_pns (
id int(10) DEFAULT '0' NOT NULL auto_increment,
subject VARCHAR( 80 ),
from_id INT(10),
from_user VARCHAR( 50 ) ,
to_id INT(10),
to_user VARCHAR( 50 ) ,
text TEXT,
time varchar(20),
PRIMARY KEY (id),
)",
"".$prefix."_themes" =>"CREATE TABLE ".$prefix."_themes (
id int(10) DEFAULT '0' NOT NULL auto_increment,
name VARCHAR( 80 ),
url varchar(250),
PRIMARY KEY (id),
)",
"".$prefix."_language" =>"CREATE TABLE ".$prefix."_language (
id int(10) DEFAULT '0' NOT NULL auto_increment,
name VARCHAR( 255 ),
PRIMARY KEY (id),
)",
"".$prefix."_topics" =>"CREATE TABLE ".$prefix."_topics (
id int(10) DEFAULT '0' NOT NULL auto_increment,
title varchar(100),
poster int(10),
time varchar(20),
views varchar(20),
answers varchar(20),
fid int(10) NOT NULL,
status int(10) DEFAULT '0' NOT NULL,
type int(10) DEFAULT '0' NOT NULL,
lastpost_time varchar(20),
PRIMARY KEY (id) ,
)",
"".$prefix."_users" =>"CREATE TABLE ".$prefix."_users (
id int(10) DEFAULT '0' NOT NULL auto_increment,
username varchar(40) ,
regdate varchar(20) ,
passwort varchar(250),
email varchar(50),
icq varchar(15),
website varchar(100),
job varchar(100),
come varchar(100),
interest varchar(150),
sig varchar(255),
style varchar(255),
language varchar(255),
aim varchar(18),
yim varchar(25),
msnm varchar(25),
posts int(10) DEFAULT '0',
attachsig varchar(1),
smile varchar(1),
html varchar(1),
bbcode varchar(1),
rank int(10) DEFAULT '0',
level int(10) DEFAULT '1',
PRIMARY KEY (id),
)",
"".$prefix."_online" =>"CREATE TABLE ".$prefix."_online (
id int(3) DEFAULT '0' NOT NULL auto_increment,
ip varchar(255),
name varchar(255),
count varchar(255),
date varchar(255),
username varchar(40),
forum int(10),
PRIMARY KEY (id)
)",
"".$prefix."_smilies" =>"CREATE TABLE ".$prefix."_smilies (
id int(10) DEFAULT '0' NOT NULL AUTO_INCREMENT,
code varchar(50),
smile_url varchar(100),
emotion varchar(75),
PRIMARY KEY(id),
)",
"".$prefix."_words" =>"CREATE TABLE ".$prefix."_words (
id int(10) NOT NULL AUTO_INCREMENT DEFAULT '0',
word varchar(100),
replacement varchar(100),
PRIMARY KEY(id),
)",
"".$prefix."_banlist" =>"CREATE TABLE ".$prefix."_banlist (
id int(10) NOT NULL AUTO_INCREMENT DEFAULT '0',
ban_userid int(10),
ban_ip varchar(16),
PRIMARY KEY(id),
)",
"".$prefix."_mods" =>"CREATE TABLE ".$prefix."_mods (
fid int(10) NOT NULL,
uid int(10) NOT NULL
)",
);
eintrachtemil 04-07-2005, 16:52 Was ist denn jetzt eigentlich dein Problem?
Und wenn möglich, dann bitte in einer einigermaßen verständlichen Erklärung. Und so Dinger wie Satzzeichen sind für das Lesen auch ganz hilfreich...
Du hast dir keine Logik erarbeitet... !
Hier ein paar Anregungen:
1. Verwende JOINS, verknüpfe in der Abfrage CAT und FOREN.
2. Mache dir eine Variable, damit du eine 'temporäre' 'lastitem' hast zum überprüfen in der schleife
3. gebe in der TPL die Kategorie nur aus, wenn sie gefültl ist, wofür du bei der Füllung selbst verantwortlich ist.
Aber fang mal ganz langsam an, wenn du willst das man dir hilft!
Beginne mit dem Thema: JOINS !
Zeig uns dann mal dein Ansatz!
Original geschrieben von eintrachtemil
Was ist denn jetzt eigentlich dein Problem?
Und wenn möglich, dann bitte in einer einigermaßen verständlichen Erklärung. Und so Dinger wie Satzzeichen sind für das Lesen auch ganz hilfreich...
Er sucht sich IMHO eine Logik, damit er seine Foren ästhetisch sortiert darstellen kann...
eternitysoft 04-07-2005, 19:36 also hätte das jetzt so gemacht:
(benütze das zum erstenmal sry ist aber bestimmt nich ganz richtig)
$sql2 = mysql_query("select * from ".$prefix."_catagories, ".$prefix."_forums WHERE ".$prefix."_catagories.id = ".$prefix."_forums.cid ");
$catagories = array();
$sql_catagories=mysql_query("select * from ".$prefix."_catagories order by nr asc ");
while($row_catagories = mysql_fetch_assoc($sql2))
{
$catagories[] = $row_catagories;
}
Hat nicht ganz geklappt:
http://eternitysoft.pyrokar.lima-city.de/forum_et/index2.php
Würdest du, wenn man dir schon helfen möchte, auch die Tipps umsetzen?
Wo ist dein JOIN Query Categorie ft. Foren ?!
eternitysoft 04-07-2005, 20:24 Original geschrieben von xManUx
Würdest du, wenn man dir schon helfen möchte, auch die Tipps umsetzen?
Wo ist dein JOIN Query Categorie ft. Foren ?!
das habe ich im inet gefunden
das SQL-Statement
SELECT * FROM Mitarbeiter INNER JOIN Projekte ON Mitarbeiter.Nachname = Projekte.Nachname
SELECT * FROM Mitarbeiter, Projekte WHERE Mitarbeiter.Nachname = Projekte.Nachname
und darauf habe ich die zeile geschrieben und daraus gelesen
$sql2 = mysql_query("select * from ".$prefix."_catagories, ".$prefix."_forums WHERE ".$prefix."_catagories.id = ".$prefix."_forums.cid ");
dachte wäre nunmal join wie gesagt hab den befehl noch nie benüzt
mfg
et
http://www.php-resource.de/forum/showthread.php?s=&threadid=28292
MrHappiness hat auch was nettes für dich. :)
eternitysoft 05-07-2005, 01:41 danke das du mir so helfen tust
$sql =mysql_query ("
SELECT
c.title, f.name, f.description
FROM
".$prefix."_catagories c
INNER JOIN ".$prefix."_forums f ON c.id = f.cid
");
klappt auch soweit nur das er mit die katogerien doppelt ausgibt wenn z.B zwei foren dadrunter eingetragen sind oder dreifach wenn drei dadrunter eingetragen sind
http://eternitysoft.pyrokar.lima-city.de/forum_et/index2.php
Gut. Nun machst Du aus:
$sql =mysql_query ("
SELECT
c.title, f.name, f.description
FROM
".$prefix."_catagories c
INNER JOIN ".$prefix."_forums f ON c.id = f.cid
");
$sql =mysql_query ("
SELECT
c.title, f.name, f.description
FROM
".$prefix."_catagories c
INNER JOIN ".$prefix."_forums f ON c.id = f.cid
ORDER BY
c.title, f.name
");
Und widmest dich dem Punkt 2.
Tipp: Du füllst kontrolliert ein Array o. 2 mit den Ausgaben der Datenbank, so dass du es in Smarty ausgeben kannst.
eternitysoft 05-07-2005, 03:19 so gemacht
jetzt 2 sach bzw fragen
1.Wie meinst du das mit dem Array?
so?
while($row_catagories = mysql_fetch_assoc($sql2))
{
$catagories[] = $row_catagories;
}
wenn ja dann hab ich das
und wie gesagt wie kriege ich das hin das er eine Katogerie nicht 2 oder 3 mal ausgibt?
bsp:
momentan
[test3]
-test zu test3
[Allgemeines]
-test zum forum Allgemeines
[der rest]
-test zum Forum rest2
[der rest]
-test zum forum rest
soll aber ja so sein
[test3]
-test zu test3
[Allgemeines]
-test zum forum Allgemeines
[der rest]
-test zum Forum rest2
-test zum forum rest
mfg
et
So ähnlich. Zum Beispiel so:
$lastitem = time();
while($row_catagories = mysql_fetch_object($sql2)) {
$catname = $lastitem != $row_categories ? '' : $row_categories->catname;
$lastitem = $row_categories->catname;
$catagories[] = array(
'id' => $row_catagories->id,
'title' => $catname,
'forumname' => $row_categories->name
);
}
Setzt voraus, dass die Kateogrie sortiert wird. Ist sicher nicht die beste Lösung, aber das soll ja nur ein Beispiel sein ;)
BTW: Bitte umbrich deinen Beitrag weiter oben, damit man nicht horizontal scrollen muss !
In der TPL:
{foreach from=$catagorie item=categorie}
{if $categorie.title != ''}
<br><br>{$catagorie.title} <br>
{/if}
--------> {$catagorie.forumname} <br>
{/foreach}
eternitysoft 05-07-2005, 17:23 klappt irgendwie nicht richtig
http://eternitysoft.pyrokar.lima-city.de/forum_et/index2.php
wegen dem ersten posts muss ich mal gucken an welche zeile es liegt
werde mal weiter versuchen
mfg
et
ps: die schreibfehler müsste ich soweit entfernt haben du hast ab und zu cate anstatten cata geschrieben ^^ geht aber immernoch nicht <.<
Weil ich wissen wollte, ob du überhaupt verstehst, was mysql_fetch_object() der Unterschied ist zu mysql_fetch_assoc() ist.
http://www.php-resource.de/manual.php?p=function.mysql-fetch-object
$catname = $lastitem != $row_categories->id ? '' : $row_categories->catname;
Sofern das nun klappen sollte, überlege dir mal selbst, wie man das eleganter gestalten kann. Ein paar Tipps, die du mal selbst versuchst zu lösen. :)
1. Query so lassen
2. Ausgabe in ein Array packen
3. Kontrolliert Array füllen und dieses mal so:
$array[] = array ( 'cat_name' => $var1, 'forums' => array ( FORUM_INFOS ) );
damit in der TPL:
{foreach from=$catagorie item=categorie}
<br><br>{$catagorie.title} <br>
{foreach from=$catagorie.forums item=forums}
{$forums.forumname} <br>
{/foreach}
{/foreach}
eternitysoft 08-07-2005, 19:05 so hab alles mögliche was mir einfällt probiert und hab es jetzt so aber das klappt auch nicht richtig
while($row_catagories = mysql_fetch_object($sql2))
{
$catagories[] = array(
'cat_title' => $row_catagories->title,
);
$forums[] = array(
'forum_name' => $row_catagories->name,
'forum_desc' => $row_catagories->description
);
}
tpl
<table border="1" cellspacing="0" width="900" >
<tr>
<td>
{foreach from=$catagorie item=categorie}
<br><br>{$catagorie.cat_title} <br>
{foreach from=$forums item=forums}
--->{$forums.forum_name} <br>
--->{$forums.forum_description}
{/foreach}
{/foreach}
</td>
</tr>
</table>
eternitysoft 15-07-2005, 16:43 Bräuchte hilfe beim Parsen eines Templates aus einer Datenbank (Smarty) wenn jemand Ahnung dann bitte hilfe <.<
<?php session_start ();
require('inc/function.php');
require('config.php');
$absoluter_pfad = dirname(__FILE__);
define('SMARTY_DIR', $absoluter_pfad.'/smarty/');
require(SMARTY_DIR.'Smarty.class.php');
$connect = mysql_connect($dbhost, $dbuser, $dbpass);
if (!$connect)
{
die('Verbindung nicht möglich : ' . mysql_error());
}
else
{
$select = mysql_select_db($dbname);
if (!$select){
die('Konnte datenbank nicht auswählen: ' . mysql_error());
mysql_close($connect);
}
else
{
// put these function somewhere in your application
function db_get_template ($tpl_name, &$tpl_source, &$smarty_obj)
{
// do database call here to fetch your template,
// populating $tpl_source
$sql = new SQL;
$sql->query("select content
from templates
where id='2'");
if ($sql->num_rows) {
$tpl_source = $sql->record['tpl_source'];
return true;
} else {
return false;
}
}
// register the resource name "db"
$smarty->register_resource("db", array("db_get_template"));
$datum ="22.3.89";
$smarty->assign("date",$datum);
$smarty->display("db:index.tpl");
mysql_close($connect);
}
}
?>
fehler:
Fatal error: Call to a member function on a non-object in .../testdb2.php on line 43
unterlasse bitte das doppelposten! *zusammenführ*
|
|