2009-06-08 5 views
1

Dies ist eine einfache Frage.Wie haben Sie mehrere Antworten in der App?

Mit PHP und MySQL versuche ich eine Bug-Reporting-Anwendung zu erstellen.

Derzeit kann der Benutzer Fehler veröffentlichen und eine Liste der Fehler wird dem Techniker/Administrator angezeigt.

Wie kann ich es so machen, dass viele Techniker oder Administratoren können den Bericht (Thread?) Antworten

Wie sowohl in MySQL-Tabelle Layout und PHP-Programmierung?

Die aktuelle MySQL-Tabelle hat das Layout:

id   (Bug ID) 
by   (person reporting it) 
title  (Report Title) 
content  (Contents of Report) 
datetime (Date/Time of report) 
application (Application/page where problems happens) 
priority (Priority) 
assigned (Assigned To) 
status  (Status of report/bug) 

Also keine Antwort Spalte noch, aber wie kann ich mehrere post/Antworten mit PHP und MySQLi erreichen?

Danke

Antwort

1

Normalerweise erstellen Sie eine separate Tabelle für die Antworten. In dieser Tabelle haben Sie ein Feld, das auf die erste Tabelle "zeigt". Es könnte wie folgt aussehen:

TABLE responses 
id   (Unique id) 
bug_id  ("Pointer" to which bug this response "belongs to") 
body  (Contents of response) 

Auf diese Weise können Sie viele Antworten haben, die alle auf einen Fehler zurück, und damit haben Sie praktisch ein „Eigentum“ oder „Beziehung“ erstellt. Es ist üblich, eine Beziehung wie die über einem "Eins zu Vielen" zu nennen, wenn wir so tun, als wären wir in der Käfer-Tabelle und schauen uns um. (Und eine "viele zu eins" von uns sind in der Tabelle Antworten, Blick auf die Fehler Tabelle.)

Dann, in PHP, wenn Sie alle Antworten zu einem Fehler erhalten möchten, tun Sie etwas so: (Pseudocode)

$bug = SELECT * FROM bugs WHERE id = $some_id 
$resps = SELECT * FROM responses WHERE bug_id = $bug['id'] ORDER BY created_at 

Voilá! Jetzt haben Sie den Fehler und alle Antworten geordnet nach Erstellungsdatum.Wenn Sie neue Antworten einfügen, müssen Sie natürlich bug_id auf den entsprechenden Wert setzen.

Prost!

+0

created_at? In meiner Antworttabelle wäre das Datum. – bear

+0

Datum, sicher! created_at = kurz für created_at_date. Alles Geschmackssache! – 0scar

5

Dies wäre eine Viele-zu-Eins-Beziehung. Sie können entweder:

Antworttabelle

id (response id) 
bugid (bug id) 
columns related to the response 

oder

Antworttabelle

id (response id) 
columns related to the response 

mit

bugresponse Tisch

responseid (response id) 
bugid (bug id) 
columns related to the bug-response relationship 

wo das zweite Design kann auch viele-zu-viele Beziehung handhaben (unwahrscheinlich in diesem Fall notwendig) und kann auch einige andere Vorteile abhängig von Ihren Anforderungen.

2

Sie machen eine weitere Tabelle mit den Antworten. Zum Beispiel mit dem Layout

id (Response Id), 
responseTo (id of the Bug this is a response to), 
by (person responding), 
content (Contents of Response) 

Wo responeTo ist das entscheidende Feld. Wenn Sie dann alle Antworten auf einen Fehler anzeigen möchten, wählen Sie einfach aus der Antworttabelle responseTo = currentBugId aus.