2017-03-13 1 views
0

Ich benutze MySQL und PHP.Wie kann ich die Seite kennen, auf der ein Element gefunden werden kann?

Hier ist die Sache: Ich baue ein Forum, mit Themen und Posts.

Beiträge werden in einem Thema auf verschiedenen Seiten angezeigt (sagen wir 10 Beiträge/Seite).

Meine Frage ist: wenn ich frage, um einen bestimmten Beitrag in einem Thema zu sehen, wie kann ich die Seite wissen, wo der Beitrag angezeigt wird? (Mit dem Zweck, die Seite erforderlich anzuzeigen)

Sollte ich die Anzahl der Seiten berechnen, dann überprüfen Sie jede Gruppe von Elementen aller möglichen Seiten oder etwas ähnliches?

Danke für Ihre Hilfe!

+1

Antwort auf diese Frage hängt stark davon ab, wie Sie die Struktur Ihres Forums aufbauen. Erstellen Sie Ihre Datenbankstruktur und teilen Sie sie mit uns, damit wir nicht erraten müssen, wie sie aufgebaut ist (Ergebnisse von 'describe {table_name}') – Dimi

+0

@Dimi: fertig! ^^ – Vae

+0

Schreibst du den Code deines Forums? Wenn ja, speichern Sie einfach die Seitenzahl, wenn der Beitrag eingefügt wird. Wenn ein Beitrag gelöscht werden kann, aktualisieren Sie einfach die Seitennummer anderer Beiträge. Sie können es nicht zur Laufzeit berechnen, es ist so teuer. Der "Google-Weg" weiß nichts über Ihre Datenbank, er speichert nur das Seitenergebnis (Link) mit dem in Lexeme umgewandelten Text. –

Antwort

0

Sie können Google Custom Search verwenden und Google die ganze Arbeit machen lassen. Ich habe gehört, sie sind ziemlich gut für die Suche nach Websites.

Wenn Sie etwas kleineres möchten, können Sie für die Google Site Search bezahlen.

Wenn Ihre Website klein ist und Sie eine wirklich einfache Lösung ausprobieren möchten, warum erkunden Sie nicht die MySQL-Volltextsuche?

Das sagte das Feld, Felder zu suchen muss ein Volltextindex sein. Sie können also ein paar Textfelder und einige Varchar-Felder in einem Fulltex-Index auswählen.

SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('database' WITH QUERY EXPANSION); 

Aber gehen Sie und schauen Sie sich MySQL Handbuch besser an!

+0

Ok ... Mit solchen Antworten sehe ich, dass ich ein echter Noob bin (und Englisch ist schwer für mich). Ich habe von deiner Antwort nichts verstanden xD. Was ist der Link zu einem Google-Tool? Ich versuche, die Seite zu berechnen, auf der der Beitrag diese bestimmte Seite anzeigen soll .... Hoffe, ich bin verständlich ^^ – Vae

+0

In einer anderen Weise könnte es sein: Ich habe 150 Elemente in einer Tabelle, wie kann ich wissen die Position eines bestimmten in MySQL (mit einer bestimmten Reihenfolge, etc.)? – Vae

+0

es tut mir leid für den Ärger. Ich denke, Sie müssen die Seitenzahl für den bestimmten Artikel finden, nicht wahr? –

0

Ok, ich habe gegessen und dann ... DIE IDEE.

Ich denke, ein einfacher Weg, dies zu tun ist, die Anzahl der Elemente vor dem benötigten zu zählen (mit ID oder besser mit Timestamps, weil Posts mit denen bestellt werden), und dann berechnen, wie viele Seiten es dauert.

Bedeutung, zum Beispiel, wenn Seiten 10 Artikel anzeigen, haben wir 24 Artikel vor unserem Ziel: ceil(24/10) = 3 Artikel wird auf Seite 3 sein! Sehr einfach, wenn wir darüber nachdenken.

#Get the page displaying the selected item 

#Step 1 : calculate how many items are before the selected one 
$nbr_of_items = SELECT COUNT(post_id) FROM posts WHERE post_topic_id = :topic_id AND post_timestamp < :timestamp_of_selected_item 

#Step 2 : do simple maths 
$calcul = ceil($nbr_of_items/$nbr_of_items_displayed_in_a_page); 
For example, we have 24 items before the selected one and pages display 10 items : 
$calcul = ceil(24/10) = 3 

Natürlich ist es aktualisiert werden kann (was ist, wenn ein anderer Beitrag hat den gleichen Zeitstempel, etc.), aber es ist ein guter Anfang.

Verwandte Themen