Seite 1 von 1

Beitrags ID in Beitrag (geeignet für die Suche) anzeigen

Verfasst: 04.07.2008 00:49
von Tommy_65428
Moin Moin.

Ich möchte gerne die Beitrags ID eines jeden Beitrags im jeweiligen Beitrag anzeigen lassen. Getrennt unterhalb des eingegebenen Beitrags durch ein "<hr>" Allerdings möchte Ich es so, daß die Beitrags ID auch über die Boardsuche gefunden werden kann. Leider ist mir das bisher noch nicht gelungen :-(

Kann mir dabei jemand helfen ?

Danke schonmal im vorraus :D

Verfasst: 04.07.2008 01:07
von tas2580
Warum willst du einen Beitrag suchen dessen ID du schon kennst?

Verfasst: 04.07.2008 01:11
von Tommy_65428
Hat nichts damit zu tun das Ich den schon kenne. Es geht darum. daß die ID von jedem einzelnen Beitrag unter dem jeweiligen Beitrag angezeigt wird.

Liest Du die Computer Bild (Spiele, Video etc. pp) ? Da gibts Webcodes, soll sowas ähnliches darstellen. Die "zweite" Suche ist schon drinnen, Ich bekomme das nur um´s verrecken nicht hin, die ID im Beitrag so anzuzeigen, daß die Suche (Auch die normale Suche findet die ID´s nicht) die ID´s findet. *hmpf*

Verfasst: 04.07.2008 01:24
von tas2580
Hm, entweder du schreibst die Nummer direkt in den Beitrag rein, beim absenden eines neuen Beitrags holst du dir danach mit mysql_insert_id() die ID und machst ein zusätzliches Querry mit message = mesage + $beitrag_id. Hat allerdings den Nachteil das man die ID per "Beitrag bearbeiten" ändern kann und das bei vorhandenen Beiträgen nicht funktioniert.

Die andere Möglichkeit die mir einfällt währe das du die Suche änderst. Ich hab schon lange nichts mehr mit phpBB2 gemacht und weiß nicht mehr genau wie die Suche da aufgebaut ist, aber du kannst doch bestimmt irgendwo ein Querry einbauen oder ädern so das nicht nur im Beitrag sonder auch in der Spalte der IDs gesucht wird.

Verfasst: 04.07.2008 01:54
von Tommy_65428
Das ist mir dann doch ne Nummer zu hoch :o

Verfasst: 04.07.2008 02:10
von tas2580
Suche in der search.php

Code: Alles auswählen

					if ( !strstr($multibyte_charset, $lang['ENCODING']) )
						{
							$match_word = str_replace('*', '%', $split_search[$i]);
							$sql = "SELECT m.post_id 
								FROM " . SEARCH_WORD_TABLE . " w, " . SEARCH_MATCH_TABLE . " m 
								WHERE w.word_text LIKE '$match_word' 
									AND m.word_id = w.word_id 
									AND w.word_common <> 1 
									$search_msg_only";
						}
						else
						{
							$match_word =  addslashes('%' . str_replace('*', '', $split_search[$i]) . '%');
							$search_msg_only = ( $search_fields ) ? "OR post_subject LIKE '$match_word'" : '';
							$sql = "SELECT post_id
								FROM " . POSTS_TEXT_TABLE . "
								WHERE post_text LIKE '$match_word'
								$search_msg_only";
						}
ersetze mit

Code: Alles auswählen

						if ( !strstr($multibyte_charset, $lang['ENCODING']) )
						{
							$match_word = str_replace('*', '%', $split_search[$i]);
							$sql = "SELECT m.post_id 
								FROM " . SEARCH_WORD_TABLE . " w, " . SEARCH_MATCH_TABLE . " m, " . POSTS_TEXT_TABLE . " p
								(WHERE w.word_text LIKE '$match_word' 
									AND m.word_id = w.word_id 
									AND w.word_common <> 1)
								OR (p.post_id = '$match_word')
								$search_msg_only";
						}
						else
						{
							$match_word =  addslashes('%' . str_replace('*', '', $split_search[$i]) . '%');
							$search_msg_only = ( $search_fields ) ? "OR post_subject LIKE '$match_word'" : '';
							$sql = "SELECT post_id
								FROM " . POSTS_TEXT_TABLE . "
								WHERE post_text LIKE '$match_word'
								OR post_id = '$match_word'
								$search_msg_only";
						}
Ich hab das jetzt zwar nicht getestet, aber ungefähr so sollte es funktionieren.

Verfasst: 04.07.2008 02:22
von Tommy_65428
Sieht dann so aus:

Code: Alles auswählen

					if ( !strstr($multibyte_charset, $lang['ENCODING']) )
						{
							$match_word = str_replace('*', '%', $split_search[$i]);
							$search_msg_only .= ($only_bluecards) ? " AND p.post_bluecard>0 AND m.post_id=p.post_id " : "";
							$sql = "SELECT m.post_id 
								FROM " . SEARCH_WORD_TABLE . " w, " . SEARCH_MATCH_TABLE . " m " . (($only_bluecards) ? ','.POSTS_TABLE . ' p ' : '') . "
								WHERE w.word_text LIKE '$match_word' 
									AND m.word_id = w.word_id 
									AND w.word_common <> 1
									OR (p.post_id = '$match_word')
									$search_msg_only";
						}
						else
						{
							$match_word =  addslashes('%' . str_replace('*', '', $split_search[$i]) . '%');
							$search_msg_only = ( $search_fields ) ? "OR pt.post_subject LIKE '$match_word'" : ''; 
							$search_msg_only .= ($only_bluecards) ? " AND p.post_bluecard>0 AND pt.post_id=p.post_id " : ""; 
                     					$sql = "SELECT pt.post_id 
                        					FROM " . POSTS_TEXT_TABLE . " pt " . (($only_bluecards) ? ','.POSTS_TABLE . ' p ' : '') . "
                        					WHERE pt.post_text LIKE '$match_word'
									OR post_id = '$match_word'
									$search_msg_only";
						}
Und führt zu folgendem Fehler:

Code: Alles auswählen

Could not obtain matched posts list

DEBUG MODE

SQL Error : 1109 Unknown table 'p' in where clause

SELECT m.post_id FROM FLphpbb_search_wordlist w, FLphpbb_search_wordmatch m WHERE w.word_text LIKE 'test' AND m.word_id = w.word_id AND w.word_common <> 1 OR (p.post_id = 'test')

Line : 430
File : search.php
Egal ob Ich nach "Test" oder einer Post ID suche :oops:

Verfasst: 05.07.2008 00:36
von cYbercOsmOnauT
Ich zitiere
SELECT m.post_id FROM FLphpbb_search_wordlist w, FLphpbb_search_wordmatch m WHERE w.word_text LIKE 'test' AND m.word_id = w.word_id AND w.word_common <> 1 OR (p.post_id = 'test')
Kleiner, aber feiner Tippfehler. ;)
Zudem ist der Wert einer post_id immer INT, somit ist (ausgebessert) OR (m.post_id = 'test') immer FALSE.

Verfasst: 05.07.2008 10:42
von Tommy_65428
Besten Dank Tekin. Ich hab mir an dem Ding den Kopf zerbrochen :D