Teh'leth
Hallo zusammen,
ich versuche mich grade am auslesen aus einer SQL-Datenbank. Das klappt soweit auch. Das folgende PHP-Scripts gibt mir einen bestimmten Datensatz aus und das passt auch soweit. Der nächste Schritt wäre jetzt für mich, daß alles in ein WBB-Template zu bekommen.
Das wäre meine
label.php-Datei:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
|
<?php
require('./global.php');
if ($_GET['label'] == '')
{
eval("\$tpl->output(\"".$tpl->get("labels")."\");");
}
if ($_GET['label'] == 'blabla')
{
$anfrage = "SELECT * FROM bb2_threads WHERE boardid= 7 AND shortinfo LIKE '%BlaBla%' ORDER BY topic ASC" ;
}
if ($_GET['label'] == 'foobar')
{
$anfrage = "SELECT * FROM bb2_threads WHERE boardid= 7 AND shortinfo LIKE '%Foo Bar%' ORDER BY topic ASC" ;
}
$ergebnis = mysql_query($anfrage );
echo '<div>';
while ($zeile = mysql_fetch_array( $ergebnis, MYSQL_ASSOC))
{
echo "<a href='thread.php?threadid=".$zeile['threadid']."'><b>". $zeile['topic'] . "</b></a><br />";
echo "<span class='shortinfo'>".$zeile['shortinfo'] . "</span><br />";
}
echo "</div>";
mysql_free_result($ergebnis);
?> |
|
Wie bekomm ich die Ausgabe jetzt in ein WBB2.x Template? Wie müsste in etwa das passende
label.tpl aussehen?
Vielen Dank im voraus!
[kamui]
Gehört in den wBB2-Bereich
Schau mal wie die Programmierer von WoltLab das Problem gelöst haben.
Das kann man in der usercp.php z.B. sehen, wenn die Profilfelder (Herkunft, ...) ausgelesen werden
Agi
-> Verschoben
Zuerst würde ich dir raten, die WBB2 Datenbankklasse zu verwenden.
Also, das sieht wie folgt aus:
Du machst 2 Templates. Das Eine (labels.tpl) hast du schon.
Dort fügst du an die Stelle im Template labels, an die die While Ausgabe kommen soll, jetzt zb einfach $label ein.
Dann machst du ein zweites Template namens
labelsbit.tpl und fügst dort nur den Code ein, der von der While Schleife ausgegeben werden soll.
In diesem Fall wäre das:
code: |
1:
2:
|
<div><a href="thread.php?threadid="$zeile[threadid]"><b>$zeile[topic]</b></a><br />
<span class="shortinfo">$zeile[shortinfo]</span><br /></div> |
|
Die PHP Datei sollte so aussehen:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
|
<?php
require('./global.php');
if (isset($_GET['label'])) $label = $_GET['label'];
else $label = '';
if ($label == 'blabla') {
$anfrage = $db->query("SELECT * FROM bb".$n."_threads WHERE boardid= 7 AND shortinfo LIKE '%BlaBla%' ORDER BY topic ASC");
}
if ($label == 'foobar')
{
$anfrage = $db->query("SELECT * FROM bb".$n."_threads WHERE boardid= 7 AND shortinfo LIKE '%Foo Bar%' ORDER BY topic ASC");
}
while ($zeile = $db->fetch_array($anfrage))
{
eval("\$label .= \"".$tpl->get("labelsbit")."\";");
}
eval("\$tpl->output(\"".$tpl->get("labels")."\");");
?> |
|
Sollte so funktionieren.
Ghostmaster
So jetzt machen wir das mal schön zum WBB2 Standard:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
|
<?php
require('./global.php');
$label = addslashes($_GET['label']);
if ($label == 'blabla') $anfrage = $db->query("SELECT * FROM bb".$n."_threads WHERE boardid= 7 AND shortinfo LIKE '%BlaBla%' ORDER BY topic ASC");
if ($label == 'foobar') $anfrage = $db->query("SELECT * FROM bb".$n."_threads WHERE boardid= 7 AND shortinfo LIKE '%Foo Bar%' ORDER BY topic ASC");
while ($zeile = $db->fetch_array($ergebnis)) {
eval ("\$labelbit .= \"".$tpl->get("labels_bit")."\";");
}
eval("\$tpl->output(\"".$tpl->get("labels")."\");");
?> |
|
Dann hast du 2 Templates.
1x das normale "labels" und das "labels_bit".
Das "labels_bit" sieht dann so aus:
code: |
1:
|
<div><span class="normalfont"><a href="thread.php?threadid=$zeile[threadid]"><b>$zeile[topic]</b></a></span><br /><span class="shortinfo">$zeile[shortinfo]</span><br /></div> |
|
Und im Templates "labels" baust du dann die Variable $labelbit irgendwo an.
Teh'leth
Hey... das waren ja mal schnelle Antworten.
Wird gleich mal ausprobiert. Vielen Dank!
EDIT:
Die Version von agi läuft schon ganz gut.
2 Fragen noch:
Bei der Ausgabe wird vor der Ausgabe der Schleife nochmal der das keyword ausgeben wonach gefiltert wird. Also bei label.php?label=blabla wird nochmal als Text "blabla" und dann erst die eigentlichen Datensätze ausgegeben. Wie bekomm ich das erste "blabla" weg?
Bei dem Fall wo nur label.php aufgerufen wird, gibt es noch eine Fehlermeldung:
Zitat: |
mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/htdocs/.../acp/lib/class_db_mysql.php on line 83 |
Müsst ich da jetzt noch diese Datei anpassen, daß alles reibungslos läuft?
EDIT 2:
Ein Kollege hat nochmal drüber geschaut und jetzt läuft alles super!
Thread kann als erledigt gekennzeichnet werden!