Seite 1 von 2

MYAQL Datenbankabfrage erscheint nicht

Verfasst: 30.07.2011 17:24
von sneasel
Hallo,

ich versuche eine Startseite für mein Forum zu bauen. Diese Startseite soll surch eine HTML/PHP Datei aufgebaut werden.
Die News sollen per Datenbankabfrage aus meiner MYSQL Datenbank abgefragt werden.

Hier mein Code für die php-Datei:

Code: Alles auswählen

<link href="{T_THEME_PATH}/news.css" rel="stylesheet" type="text/css" />
<div id="kopf"><!-- INCLUDE overall_header.html --></div>
<div id="mitte">
<div id="inhalt"><p><b>Uberschrift</b></p><p>
 
<?php
mysql_select_db("d010e2d0") or die ("Die Datenbank existiert nicht.");
$ergebnis = mysql_query("SELECT post_text FROM kas_phpbb_posts");
while($row = mysql_fetch_object($ergebnis))
{
  echo $row->post_text;
}
?>

</p></div>
<div id="links">TEST</div>
<div id="rechts">TEST</div>
</div>
<div id="fuss"><!-- INCLUDE overall_footer.html --></div>
Hier ist der Link zu meiner Startseite: http://www.deinekarrierevonmorgen.de/news.php

Könnt ihr mir sagen warum auf der Startseite keine daten erscheinen? bzw. Was ich anders machen muss.

MfG Matthias

Re: MYAQL Datenbankabfrage erscheint nicht

Verfasst: 30.07.2011 18:22
von Elsensee
http://wiki.phpbb.com/Deutsch:Vorlage_f ... ene_Seiten <= Das hier sollte unbedingt beachtet werden. :wink:

Nachdem du das gemacht hast, poste nochmal den Code hier. Dann können wir weiterschauen. :)

Re: MYAQL Datenbankabfrage erscheint nicht

Verfasst: 30.07.2011 19:43
von sneasel
Hallo,

genau das hab ich schon probiert. Leider konnte ich meine variablen nie in der HTML-datei ansprechen. Lediglich wenn ich sie in der php-Datei aus schritt 1 per echo dargestellt hatte konnte man sie auf der Startseite sehen.
Hier ist der Code mit dem ich es versucht hatte:

Code: Alles auswählen

   $res = mysql_db_query("d010e2d0",
          "select * from kas_phpbb_posts");
   $num = mysql_num_rows($res);

   for ($i=0; $i<$num; $i++)
   {
      $nn = mysql_result($res, $i, "post_subject");
      $vn = mysql_result($res, $i, "post_text");
   }


// Ein typischer Gebrauch um Variablen an das Template zu senden.
$template->assign_vars(array(
    'uberschrift' => $nn,
    'text'        => $vn,
));
Hier die HTML-Datei:

Code: Alles auswählen

<!-- INCLUDE overall_header.html -->

<div>{uberschrift}</div>
<div>{text}</div>


<!-- INCLUDE overall_footer.html -->

Re: MYAQL Datenbankabfrage erscheint nicht

Verfasst: 31.07.2011 15:47
von Elsensee
Versuch es mal mit Großbuchstaben.
Also:

Code: Alles auswählen

<div>{UEBERSCHRIFT}</div>
<div>{TEXT}</div>
Außerdem empfehle ich dir als spezielle Lektüre dies:
KBL:tippstyles

Re: MYAQL Datenbankabfrage erscheint nicht

Verfasst: 31.07.2011 17:27
von sneasel
Die Großbuchstaben waren das Problem X.X
Schonmal ein riesen Dankeschön für die Hilfe.

Nun eine neue Frage:

Ich frage ja aus der Tabelle kas_phpbb_posts zwei Felder ab (in denen die Überschrift und der Beitrag gespeichert sind)
Diese Felder gibt es ja jeweils für jeden Beitrag. Wie kann ich die Überschriften und die Beiträge aus der Tabelle ordnen, damit ich z.b. aus den letzten 5 Beiträgen immer die News machen kann?
Mit der von mir beschriebenen abfrage erscheint nur ein Beitrag.

MfG Matthias

Re: MYAQL Datenbankabfrage erscheint nicht

Verfasst: 01.08.2011 17:35
von sneasel
Hallo,

ich bin schon eine wenig weitergekommen.

Hier erstmal mein neuer Code:

Code: Alles auswählen

   $res = mysql_db_query("d010e2d0",
          "select * from kas_phpbb_posts ORDER BY post_id DESC LIMIT 5");
   $num = mysql_num_rows($res);

   for ($i=0; $i<$num; $i++)
   {
      $nn = mysql_result($res, $i, "post_subject");
      $vn = mysql_result($res, $i, "post_text");
   }


// Ein typischer Gebrauch um Variablen an das Template zu senden.
$template->assign_vars(array(
    'UBERSCHRIFT' => $nn,
    'TEXT'        => $vn,
));
Ich lese also jetzt die 5 letzten Tabellen (die Tabellen mit den höchsten Ids) aus und speichere diese in die Variablen nn und vn.

Mein Problem: Es wird immer nur der letzte Beitrag gezeigt ( der letzte der 5 Durchgänge). Ich vermute, dass bei jedem Durchgang der For-Schleife die Variablen mit den neuen Werten überschrieben werden. Wisst ihr wie ich die die Ergebnisse jedes Schleifendurchganges getrennt speichern kann (z.B. für Schleifendurchgang 1 -> nn1 und vn1, für Schleifendurchgang 2 -> nn2 und vn2 .... )

Hoffe ihr wisst was ich meine :D

MfG Matthias

Re: MYAQL Datenbankabfrage erscheint nicht

Verfasst: 01.08.2011 21:03
von Elsensee
Warum greifst du eigentlich nicht auf phpBB-eigene-Funktionen zu? :wink:

Re: MYAQL Datenbankabfrage erscheint nicht

Verfasst: 02.08.2011 08:27
von sneasel
Was sind PHP-eigene Funktionen und wie kann ich diese zu meinem Vorteil nutzen?

MfG Matthias

Re: MYAQL Datenbankabfrage erscheint nicht

Verfasst: 02.08.2011 10:45
von Elsensee
Aalso - ganz oben in deiner PHP-Datei hast du ja schon

Code: Alles auswählen

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx); 
Und wenn wir mal davon ausgehen, dass deine Template-Datei "news_body.html" heißt (muss im Ordner styles/STYLE]/template/ liegen) und deine Sprachdatei "news.php" heißt und dementsprechend im Ordner language/[SPRACHE]/ könnte deine PHP-Datei so aussehen:

Code: Alles auswählen

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

$user->session_begin();
$auth->acl($user->data);
$user->setup('news');

$sql = 'SELECT post_subject, post_text FROM ' . POSTS_TABLE . ' ORDER BY post_id DESC LIMIT 0, 5';
$result = $db->sql_query($sql);

while ($row = $db->sql_fetchrow($result))
{
    $template->assign_block_vars('news', array(
        'UEBERSCHRIFT'    => $row['post_subject'],
        'TEXT'        => $row['post_text'],
    ));
}
$db->sql_freeresult($result);

page_header($user-lang['NEWS_TITLE']); //Muss als Sprachvariable in deiner Sprachdatei existieren

$template->set_filenames(array(
    'body'    => 'news_body.html',
));

page_footer(); 
Das Template muss für jeden Style existieren und die Sprachdatei für jede Sprache.
Das Template könnte nun also so aussehen:

Code: Alles auswählen

<!-- INCLUDE overall_header.html -->

<!-- BEGIN news -->
<div><b>{news.UEBERSCHRIFT}</b></div>
<div>{news.TEXT}</div>
<!-- END news -->

<!-- INCLUDE overall_footer.html -->
Und dabei werden auch schon die phpBB-Funktionen verwendet. :wink:

Re: MYAQL Datenbankabfrage erscheint nicht

Verfasst: 02.08.2011 14:30
von sneasel
Hab leider keine Ahnung wie ich das in meine Dateien integrieren muss. Bei meinem ersten versuch kam ein fehler mit einer language-Datei.

Liegt es daran, dass meine Sprachdatei diese Pfad/Namen besitzt: /language/de_x_sie/mods/meine_sprach_datei.php
Und mein Template heißt news.html

Ich versteh einfach überhaupt nicht was dein ''Programm'' macht. :D

kann man denn nicht einfach bei meiner for-Schleife eine varibale einbauen, welche von der Zahl des jeweiligen Schleifendurchlaufs abhängt (Wäre für mein Anfängerverständnid die einfachste Lösung :D)

MfG Matthias