2010-11-22 6 views
2

Ich versuche, einen Blog mit einem Paginierungssystem (z. B. 5 Artikel pro Seite) zu erstellen. Alles ist gut mit der Paginierung selbst, aber neben jedem Artikel habe ich eine "Löschen" -Schaltfläche enthalten, die es dem Administrator erlaubt, den zugehörigen Artikel und seinen Inhalt dynamisch zu entfernen (jquery). Was ich jetzt will, ist "append" (ohne Aktualisierung) der erste Artikel der nächsten Seite, wenn ich einen Artikel lösche, die zweite, wenn ich einen anderen Artikel lösche, dann die dritte und so weiter. Ich möchte vermeiden, eine leere Seite zu haben, wenn ich weiterhin Artikel ohne Aktualisierung löschen.Löschen Sie einen Artikel und ziehen Sie den ersten von der nächsten Seite

Ich benutze tatsächlich PHP und eine MySQL-Datenbank zum Speichern von Daten zum paginieren Ich verwende etwas ähnliches zu diesem link.

Antwort

0

Ich antwortete ursprünglich auf das Duplikat, aber denke, dass das gelöscht werden könnte, also hier kopieren:

jQuery macht es schön und einfach. Dies setzt voraus, dass Sie eine PHP-Datei namens ajax/delete-article.php haben, die eine Artikel-ID als Parameter und die Artikel-ID des letzten Artikels auf der Seite als Parameter akzeptiert und den HTML-Code des nächster Artikel. Es geht auch davon aus, dass alle Ihre Artikel die Klasse "article" und die ID "article-230" haben, wobei 230 die ID-Nummer ist. Ich bin mir sicher, dass Sie es an Ihre eigene HTML-Struktur anpassen können.

$('.article-delete').click(function (event) { 
    $(this).closest('.article').remove(); // possibly use a more fancy-looking hide(), and remove on complete? 

    var lastArticleId = $('.article').last().attr('id').replace('article-',''); 
    var thisArticleId = $(this).attr('id').replace('article-',''); 
    $.get('ajax/next-article.php?last-article=' + lastArticleId + '&article-to-delete=' + thisArticleId ,function (data) { 
    $('#article-list').append(data); 
    }); 
    event.preventDefault(); 
}); 

Beachten Sie, dass dies nur ein grobes Beispiel ist. Benötigt einige Verbesserungen für die Robustheit. Es ist auch nicht getestet, so dass es überall JS-Fehler auslösen kann.

+0

Eine (offensichtliche) Verbesserung wäre, das Element nur zu entfernen, wenn der Ajax-Aufruf erfolgreich war, indem der Code zum Ausblenden/Entfernen im Erfolgs-Callback platziert wird. –

+0

Oh yeah ... das ist offensichtlich. Nennen Sie es einen ersten Entwurf :) –

+0

Danke Jungs Problem gelöst =) – luca

0

grundsätzlich, wenn Sie erfolgreich einen Artikel löschen, in der gleichen Anfrage (nicht eine andere, ist nicht notwendig) Sie auch (nächsten) nächsten Artikel nach der letzten Seite (nach ID, Veröffentlichungsdatum oder andere) und geben Sie den HTML-Code zum Anfügen

um klar zu sein: wenn wir annehmen, dass Sie Artikel 16,17,18,19,20 suchen Sie wissen, dass das letzte Element in der Seite 20 ist. Wenn Sie Artikel 17 dann löschen Sie Element 21 abrufen, an Seite anhängen und diesen Wert 21 als letzten Wert in der Seite setzen (und so weiter)

+0

ja, das könnte für den ersten gelöschten Artikel in Ordnung sein. aber wenn ich beschließe, ein anderes zu löschen (ohne zu erneuern), wie sage ich, um nicht den ersten Artikel der nächsten Seite, sondern den zweiten und so weiter zu ziehen? – luca

+0

Jedes Mal, wenn Sie etwas löschen, müssen Sie auch den letzten Wert in der Seite neu setzen, damit Sie es in die neue Anfrage weitergeben können, wie ich sagte –

+0

Ich denke, ich bekomme es =) – luca

Verwandte Themen