2016-12-29 2 views
0

Ich habe zwei Seiten. Eines ist ein Formular, das ich verwende, um einfach Daten einzugeben, die an meine Datenbank gesendet werden, und die zweite Seite, die die eingegebenen Daten tatsächlich in das Formular übernimmt und an die Datenbank sendet und die Informationen anzeigen soll, die ich gerade hinzugefügt habe .mysql - Abfrage, um den gerade hinzugefügten Datensatz anzuzeigen

Alles funktioniert gut, aber ich kämpfe mit der Abfrage etwas. Was ich tun muss, ist die Anzeige aller Informationen für die letzten in die Datenbank eingegebenen Daten.

Die Abfrage Ich habe zur Zeit zeigt nur die Daten mit der höchsten ID:

$sql = "SELECT * FROM Results ORDER BY ID DESC LIMIT 1"; 

So als Beispiel würde ich mit den folgenden Informationen gelassen, nachdem mein Formular ausfüllen:

Success! Data being saved: 
ID = 900 Amount = 206 Date = 2016-12-26 

Dieses zeigt offensichtlich nur die Daten mit der höchsten ID, aber da die ID und alle Daten schwanken, muss ich nur die Daten anzeigen, die gerade eingegeben wurden.

Ich kam über das: Query to select newly added records only. Aber ich glaube nicht, dass diese Lösung lebensfähig wie die Datenbank ist extern und ich möchte nicht neue Tabellen zu erstellen.

Ich dachte, dass es möglich sein könnte, jedem neu hinzugefügten Datensatz über die Abfrage einen versteckten Wert zuzuweisen. z.B. Neu 1, Neu 2, Neu 3 usw. Dann wird der neueste Datensatz für Neu gedruckt. Ich konnte jedoch nichts dazu finden.

Jede Hilfe würde sehr geschätzt werden!

+0

Sie können 3 Seiten haben; Seite 1: Eingabe, Seite 2: Ansicht eingegeben, Seite 3: Alle anzeigen. Nach der Eingabe können Sie GET verwenden und senden Sie die ID auf die Ansicht eingegebene Seite – Shank

+0

Ihre aktuelle Implementierung hat auch einen Fehler. Wenn mehrere Benutzer gleichzeitig Daten eingeben, können Sie nicht garantieren, dass die von Ihrer SELECT-Abfrage zurückgegebene ID die ID für diese Transaktion erzeugt. Verwenden Sie LAST_INSERT_ID, um die letzte ID aus dieser Transaktion zu erhalten – Alex

+0

'LAST_INSERT_ID()' sollte funktionieren. –

Antwort

2

Sie diese Methode verwenden, müssen sehr korrekten Wert haben:

  1. Eingabeformular auf eine andere Datei senden müssen, dass sie das Einfügen (nennen wir es hier insert.php)

  2. insert.php muss Fügen Sie die Daten nach der Validierung ein und danach können Sie die letzte ID-Nummer aus der Datenbank holen. Abhängig von der Methode, mit der Sie arbeiten, kann es anders sein. zum Beispiel, wenn Sie PDO verwenden, können Sie es erhalten, indem PDO::lastInsertId

  3. nach Erhalt der ID müssen Sie es an die Anzeige oder Bearbeitung Seite weiterleiten. zum Beispiel view.php?id=LastInsertId. Dieser Forward hat einige Gründe:

    • Codes können sauberer sein.

    • Wir verhindern Aktualisierung und erneutes Einfügen.zum Beispiel, wenn Sie innerhalb vide.php einfügen und Benutzer F5 drücken, um die Seite zu aktualisieren, die Einfügung geschieht erneut.

Das ist die ganze Idee. Sie können diese Methode nur für eine Seite verwenden:

  1. page.php tun = new

  2. page.php do = einfügen

  3. uns auf die page.php tun =? Ansicht & ID = lastInsertID

0

Warum versuchen Sie, nur eingegebene Daten aus der Datenbank zu bekommen? Sie können dies einfach mit der HTTP POST/GET-Methode tun. Senden Sie die Daten einfach als Parameter und zeigen Sie sie auf der zweiten Seite an.

0

Wenn Sie bereits über die Daten verfügen, die Sie einfügen, müssen Sie keine Abfrage ausführen, um sie erneut aus der Datenbank abzurufen. Sie können nur sicherstellen, dass die Abfrage erfolgreich war und die Daten direkt anzeigen. Anyways: Sie können die Einfüge-ID von der letzten Einfügung mithilfe des MySQLi-Objekts abrufen. Zum Beispiel:

$sql = "<your insert statement>" 
$conn->query($sql); 
$last_id = $conn->insert_id; //Id of the row you just inserted 
$sql = "SELECT * FROM Results WHERE id=$last_id"; 

Das setzt voraus, tun Sie den Einsatz in der gleichen Seite, die Sie das Ergebnis anzeigen.

Verwandte Themen