ersten eintrag herrausfiltern

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
kolja
Mitglied
Beiträge: 1546
Registriert: 13.05.2005 16:39
Wohnort: münster

ersten eintrag herrausfiltern

Beitrag von kolja »

nabend forum

ich habe ein kleines script, welches mir die vier ersten topics eines forums anzeigt
zu sehen hier: http://mona-davinci.de/phpbb/radio.php

klappt doch ganz gut, oder ??

doof ist nur, das man beim ersten betreten kein inhalt zu sehen bekommt
(klar fehlt ja auch die ?id=xxx)

nun habe ich erstmal versucht das ganze auf ein topic festzusetzen,
eigentlich soll es natürlich immer das erste (jüngste) sein welches erscheinen soll wenn man oben in der navigation auf radio klickt

so und hier mein kauderwelsch:

Code: Alles auswählen

if(isset($_POST['submit']) or isset($_GET['id']))
{
   $topic_id = ( !empty($HTTP_GET_VARS['id']) ) ? intval($HTTP_GET_VARS['id']) : intval($HTTP_POST_VARS['id']);
   $sql = "SELECT t.*, u.*, p.*, pt.* FROM `".TOPICS_TABLE."` t, `".USERS_TABLE."` u, `".POSTS_TABLE."` p, `".POSTS_TEXT_TABLE."` pt
           WHERE p.poster_id = u.user_id
         AND t.topic_poster = u.user_id
         AND t.topic_poster = p.poster_id
         AND p.topic_id = t.topic_id
         AND pt.post_id = p.post_id
         AND t.topic_id = $topic_id
         ORDER BY p.post_id ASC LIMIT 0 , 1";   
   if( !( $result = $db->sql_query($sql) ) )
   {
      message_die(CRITICAL_ERROR, 'Kann Themen Informationen nicht laden!', '', __LINE__, __FILE__, $sql);
   }      
   while($row = $db->sql_fetchrow($result))
   {
      $topic = $row['topic_title'];
	  $user = $row['username'];
      $message = bbencode_second_pass($row['post_text'], $row['bbcode_uid']);
      $message = nl2br($message); 
	    $template->assign_block_vars('posts', array(
	    'TOPIC' => $topic,
		'USER' => $user,
		'MESSAGE' => $message,
		'TOP_ID' => $row['topic_id'],
		));
   }
}         
else
{
   $topic_id = '1369';
}    

wie gesagt die $topic_id in der else bedingung soll immer die des ersten topics sein

über ne hilfe würde ich mich freuen
kolja
Das Leben ist unberechenbar - deshalb ist Improvisation wichtiger als Planung!

Es ist besser zu geben, als zu leihen, und kostet ungefähr gleichviel.

.: Münsters Reggae Forum :.
Xwitz
Mitglied
Beiträge: 1104
Registriert: 21.06.2005 21:41

Beitrag von Xwitz »

Welches meinst Du mit "ersten" das zuletzt eröffnete, das mit dem letzten Beitrag oder was?

Was Dir noch fehlt, ist die Auswahl der vier topic_id richtig?

EDIT: Hilft Dir das, für die vier Topics mit dem neusten Beiträgen des Forums ***?

Code: Alles auswählen

$sql = "SELECT topic_id FROM phpbb_topics WHERE forum_id = *** ORDER BY topic_last_post_id LIMIT 4";
Aus der KB:
Feld: topic_last_post_id
Funktion/Inhalt: id des letzten Beitrages im jeweiligen Thema
Werte: wird +1 gezählt (= forum_last_post_id in Tabelle "forums")
Benutzeravatar
kolja
Mitglied
Beiträge: 1546
Registriert: 13.05.2005 16:39
Wohnort: münster

Beitrag von kolja »

danke für die antwort, aber ich glaube wir reden (schreiben / denken) aneinander vorbei...

also wenn ich auf den reiter "radio" klicke lande ich auf der seite radio mit den vier letzten topics.
wenn ich dann auf eins der vier topics klicke bekomme ich den tesxt des jeweiligen topics angezeigt
(weil der text immer erscheint, sobald eine gültige id über die url mitgegeben wurde)

jetzt solte beim klick auf "radio" direckt das erste topic mit text angezeigt werden

dafür brauche ich (nach meiner theorie) einfach die id der ersten (dem zuletzt geschiebenen) topics und verwende diese wenn über die url keine id mitgegeben wurde

oder gibt es da was logischeres ??

kolja
Das Leben ist unberechenbar - deshalb ist Improvisation wichtiger als Planung!

Es ist besser zu geben, als zu leihen, und kostet ungefähr gleichviel.

.: Münsters Reggae Forum :.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Also Dein Script ist irgendwie unlogisch aufgebaut: Du machst die SQL Abfrage, wenn die ID gesetzt ist und wenn keine gesetzt ist, rätst du die ID des Topics.
In Deinem Posting hast Du die Vorgehensweise aber richtig geschrieben.
Hier ist also der Plan:

1. Führe die SQL Abfrage aus und übergebe (speichere) die ID des neuesten Topics in ein Variable.
2. Wenn die ID über die URL kommt: Verwende diese ansonsten die Gespeicherte.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
kolja
Mitglied
Beiträge: 1546
Registriert: 13.05.2005 16:39
Wohnort: münster

Beitrag von kolja »

:oops: :oops: :oops: war wohl schon etwas spät gestern abend...

und so ganz logisch scheint mir die sache auch nicht...

nichtdestotrotz habe ich vergessen zu sagen, dass die id´s die übergeben werden aus dieser abfrage kommen:

Code: Alles auswählen

// NAVIGATION
$sql = "SELECT * FROM " . TOPICS_TABLE . " WHERE forum_id = 30 ORDER BY topic_id DESC LIMIT 0 , 4";
if( !($result = $db->sql_query($sql)) )
{
   message_die(GENERAL_ERROR, 'Could not query users', '', __LINE__, __FILE__, $sql);
}
   $i = 0;
   do
   {
      $topic_id = $row['topic_id'];
      $for_id = $row['forum_id'];
	  $topic_title = $row['topic_title'];
  	  $first_post_id = $row['topic_first_post_id'];


      $template->assign_block_vars('memberrow', array(
         'TOPIC_ID' => $topic_id,
		 'FOR_ID' => $for_id,
         'TOPIC_TITLE' => $topic_title,
		 'FIRST_POST_ID' => $first_post_id,)
      );
		
      $i++;
   }
   while ( $row = $db->sql_fetchrow($result) );
   $db->sql_freeresult($result);
// NAVIGATION
und davon brauche ich doch den wert (id) für die variable, oder ??

kolja
Das Leben ist unberechenbar - deshalb ist Improvisation wichtiger als Planung!

Es ist besser zu geben, als zu leihen, und kostet ungefähr gleichviel.

.: Münsters Reggae Forum :.
Benutzeravatar
kolja
Mitglied
Beiträge: 1546
Registriert: 13.05.2005 16:39
Wohnort: münster

Beitrag von kolja »

ok es läuft :D :D

http://mona-davinci.de/phpbb/radio.php

hier mal das was passiert wenn keine topic_id über die url geliefert wird:

Code: Alles auswählen

else
{
// erstes topic
$sql = "SELECT topic_id FROM " . TOPICS_TABLE . " WHERE forum_id = 30 ORDER BY topic_id DESC LIMIT 0 , 1";
if( !($result = $db->sql_query($sql)) )
{
   message_die(GENERAL_ERROR, 'Could not query users', '', __LINE__, __FILE__, $sql);
}
  
   do
   {
      $topic1_id = $row['topic_id'];

     
   }
   while ( $row = $db->sql_fetchrow($result) );
   $db->sql_freeresult($result);
// erstes topic

   $sql = "SELECT t.*, u.*, p.*, pt.* FROM `".TOPICS_TABLE."` t, `".USERS_TABLE."` u, `".POSTS_TABLE."` p, `".POSTS_TEXT_TABLE."` pt
           WHERE p.poster_id = u.user_id
         AND t.topic_poster = u.user_id
         AND t.topic_poster = p.poster_id
         AND p.topic_id = t.topic_id
         AND pt.post_id = p.post_id
         AND t.topic_id = $topic1_id
         ORDER BY p.post_id ASC LIMIT 0 , 1";   
   if( !( $result = $db->sql_query($sql) ) )
   {
      message_die(CRITICAL_ERROR, 'Kann Themen Informationen nicht laden!', '', __LINE__, __FILE__, $sql);
   }      
   while($row = $db->sql_fetchrow($result))
   {
      $topic = $row['topic_title'];
	  $user = $row['username'];
      $message = bbencode_second_pass($row['post_text'], $row['bbcode_uid']);
      $message = nl2br($message); 
	    $template->assign_block_vars('posts', array(
	    'TOPIC' => $topic,
		'USER' => $user,
		'MESSAGE' => $message,
		'TOP_ID' => $row['topic_id'],
		));
   }}    
ich hoffe das ist jetzt logischer ;-)

kolja
Das Leben ist unberechenbar - deshalb ist Improvisation wichtiger als Planung!

Es ist besser zu geben, als zu leihen, und kostet ungefähr gleichviel.

.: Münsters Reggae Forum :.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Wow, da ist noch 'ne Menge Optimierungspotential drin..... 8)
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
kolja
Mitglied
Beiträge: 1546
Registriert: 13.05.2005 16:39
Wohnort: münster

Beitrag von kolja »

:oops:
schlimme dinge also sicherheitsbedenklich,
oder nur nicht so elegant ;-)

kolja
Das Leben ist unberechenbar - deshalb ist Improvisation wichtiger als Planung!

Es ist besser zu geben, als zu leihen, und kostet ungefähr gleichviel.

.: Münsters Reggae Forum :.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Rein von der Art die Problematik scripttechnisch umzusetzen. Sicherheitssachen sehe ich erst mal nicht. :D
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
kolja
Mitglied
Beiträge: 1546
Registriert: 13.05.2005 16:39
Wohnort: münster

Beitrag von kolja »

naja das script wurde auch nun wirklich nicht für das problem geschrieben

der hauptteil ist aus dem intro+portal mod für die fetchposts :oops:

aber zum kompletten selberschreiben reicht es noch nicht...

kolja
Das Leben ist unberechenbar - deshalb ist Improvisation wichtiger als Planung!

Es ist besser zu geben, als zu leihen, und kostet ungefähr gleichviel.

.: Münsters Reggae Forum :.
Antworten

Zurück zu „Coding & Technik“