2010-11-19 4 views
0
geladen

Dies ist ein sehr schwieriges Problem zu beschreiben.php/mysql/javascript - Müssen GET-Variable rundherum (einschließlich in URL) festlegen, nachdem die Seite

Das große Bild: Ein Ajaxed-Dialog wird an eine Seite übergeben, um einen neuen Content-Set-Datensatz zu erstellen. Nach dem Erstellen des Inhaltssatz-Datensatzes sollte dieser neu erstellte Inhaltssatz der ausgewählte Inhaltssatz sein, und für alle Inhalte, die erstellt oder geändert werden, muss die neu erstellte Inhaltssatz-ID angehängt werden. Die Content-Set-ID wird mit einem Auto-Inkrement-Feld in MySQL beim Laden der Seite erstellt.

Problemdetails: Ich habe eine Seite, die Ajax verwendet, um einen Content Set-Erstellungsdialog aufzurufen. Der Dialog wird an eine leere URL übergeben, da er von mehreren Orten aus aufgerufen werden kann und der Dialog an die URL übergeben werden soll, von der er aufgerufen wurde. Nachdem der Dialog an die Seite übergeben wurde, von der er aufgerufen wurde, erstellt PHP auf der Seite einen Inhaltssatz-Datensatz in der MySQL-Datenbank. Ich brauche die Einfüge-ID des neu erstellten Datensatzes, die mit einer GET-Variable von Seite zu Seite übergeben wird (einfachste Methode, da ich bereits Paginierungsvariablen auf diese Weise übergebe), aber da die Seite geladen werden muss, bevor ich die Einfüge-ID abrufen kann, habe ich keine Möglichkeit, alle Orte zu füllen, die die GET-Variable bewohnen soll (auf Seiten-Links, php $ _GET-Variable, der URL).

einige Dinge zu beachten:

  • würde ich die neu geschaffene Einsatz id um über eine Session-Variable übergeben, es sei denn diese Probleme verursacht, wenn jemand die Zurück-Taste trifft, und die Session-Variable auf seine früheren nicht zurückkehren Wert.
  • Ich würde Javascript und PHP verwenden, um die verschiedenen Stellen zu ändern, an denen diese INSERT-ID-Variable verwendet wird, außer wenn sie ein anderes ajaxed-Dialogfeld aufrufen, das an eine leere URL übermittelt, die leere URL wird natürlich nicht die neue GET-Variable haben. Auch das scheint sehr schlampig und wäre ein Alptraum zu halten.
  • Ich würde, nach der Erstellung des Datensatzes, umleiten zurück auf die gleiche Seite nach dem Hinzufügen der neuen GET-Variable, außer ich wäre nicht in der Lage, POST Vars übergeben, so dass Fehler und Erfolgsmeldungen ein völliger Schmerz in den Arsch. Ich möchte GET vars nicht verwenden, um der Seite mitzuteilen, welche Fehler-/Erfolgsmeldung angezeigt werden soll, da GET vars mit Hilfe von $ _SERVER ['QUERY_STRING'] sowie leeren Links um Seite zu Seite weitergeleitet wird.
  • Ich könnte einfach nicht das neu erstellte Content-Set Autoload nach der Erstellung machen. Dies führt dazu, dass der Benutzer den zusätzlichen Schritt des Ladens des neu erstellten Inhaltssatzes selbst ausführt, was ich vermeiden möchte.

Gibt es irgendeine elegante Lösung? Dieses Problem kann aufgrund der Art und Weise, wie die Website eingerichtet wird, sehr einzigartig sein, aber jemand muss etwas ähnliches getan haben. Ich hoffe, dass ich das Design der Seite nicht zu sehr verändern muss, um dieses kleine Problem zu lösen. Irgendwelche Ideen sind willkommen.

Antwort

0

Ich würde hier einer sitzungsbasierten Lösung zustimmen müssen. Denken Sie daran, dass Sie in der Lage sein sollten, einen Mechanismus zu erstellen, mit dem der alte Wert wiederhergestellt werden kann, wenn die Benutzer zurückschlagen. Dazu benötigen Sie drei Session-Variablen, eine mit dem aktuellen Wert der ID, eine mit dem vorherigen Wert der ID und eine mit der URL der letzten Seite, auf der Sie sich befanden. Auf diese Weise sollten Sie überprüfen können, ob ein Benutzer die Zurück-Schaltfläche gedrückt hat, indem Sie überprüfen, ob die aktuelle URL gleich der letzten URL ist, die in Ihrer Sitzungsvariablen gespeichert ist, und in diesem Fall zur alten ID zurückkehren.

Bitte beachten Sie, dass dies nur ein allgemeines Konzept ist und ich bin mir sicher, dass Sie auf einige technische Probleme stoßen werden, die herauszufinden sind, bevor ein System wie dieses richtig funktioniert.

+0

Ich mag diese Idee wirklich. Dies könnte in vielerlei Hinsicht nützlich sein. Ein Problem könnte sein, dass wenn der Benutzer die Zurück-Taste mehrmals drückt, sie möglicherweise mehrere ID-Änderungen benötigt, die nicht alle in der Sitzungsvariablen gespeichert werden. Aber ich bin mir sicher, dass ich diese in Verbindung mit einer GET-Variablen oder etwas verwenden könnte eine immerwährende Rückwärtskette der Session-IDs. – dqhendricks

0

Ziemlich sicher, dass Sie die URL-Hash-Zeichenfolge (wie auch immer es heißt) ändern möchten. Weil Sie die URL nicht ändern können. Schau dir an, wie Seiten wie Facebook ihre URLs haben.

+0

Und wie ändern Sie die Hash-Zeichenfolge? Javascript? Wie ist das anders als mit einem GET var? Ich bin mir nicht sicher, ob ich verstehe, wie dies zur Lösung des Problems beiträgt. – dqhendricks

0

Ich verstehe, dass Sie eine Sitzung ablehnen, aber dies könnte eine gute Zeit sein, es zu verwenden.

Eine andere Idee ist, versteckte Eingabe in Ihren Seiten zu verwenden.

Nach dem ersten Dialog wird eine Anfrage an eine PHP (durch Ajax), die einen Datensatz in db, und erhalten Sie die ID, wo dies eingefügt wurde. Richtig?

In dem Ajax-Rückruf können Sie:

a) einen Eingang vom Typ machen versteckt id zu halten, machen dies in der Form. ID in jedem Beitrag

b) führen Sie knifflige Javascript, um "& ID = ID" in jede Verknüpfung/Schaltflächen URL-Zeichenfolge einzufügen. Jquery wäre hier sicherlich nützlich. thisa ist hart bc es kann Anker Links sein, Schaltflächenaktionen, was auch immer

Ich verstehe nicht wirklich, dass Sie darauf bestehen, es in GET zu setzen, aber Sie können es mit etwas zusätzlicher Arbeit geschehen lassen. Sie können es nach dem Ajax ohne Neuladen nicht in die URL einfügen, aber Sie können sicherstellen, dass Sie es überall hinterher haben.

Verwandte Themen