PHP Tabelle automatisch aktualisieren?!

cardinal

Lt. Junior Grade
Registriert
Mai 2010
Beiträge
467
Moin Community,

ich hab ein kleines Problem welches mir ein wenig Kopfzerbrechen bereitet:

Ich habe eine Seite in der man Einträge in eine DB hinzufügen kann, dank Ajax/Json wird auch eine Success- bzw. Error-Message angezeigt wenn es geklappt bzw. nicht geklappt hat. Die Seite wird aber, da dies ja über Ajax/Json läuft nicht aktualisiert. Demnach zeigt die Tabelle, welche auf der Seitr vorhanden ist, auch nicht die neu eingetragene Zeile an.
Hat jemand eine Idee wie man die Tabelle aktualisieren kann ohne die Erfolgs-/Fehlermeldung zu verlieren?
Führe ich die Aktualiesierung über die header Funktion aus, wird die gesamte Seite aktualisiert und die Meldung nicht mehr angezeigt -.-

Ich hoffe meine Erklärung ist einigermaßen veständlich ;)
Vielen Dank für jegliche Ideen,
Lui
 
Du kannst den letzten Datensatz auslesen (z.B. per MAX(ID) ...) und anschließend ans DOM anhängen.
Falls du jQuery verwendest, könnte man dazu die Funktion appendTo() nehmen.
 
du kannst ja bei dem Ajax-Call im Success-Fall ein Json-Object zurückgeben und darin die eingetragenen werte übergeben. Alternativ kannste die DAten aus der Eingabemaske auslene und ebenfalls mit dem oben genannten BEfehl an die Tabelle anhängen.
 
es geht noch performanter. Du prüfst ob der AJAX Call erforgreich ausgefürht wurde. Falls ja nimmst du die übergebenen Parameter und fügst die entsprechenden Werte übre appendTo() an DOM an, dadurch sparst du dir eine SQL Abfrage
 
Hey,

vielen Dank für die Vorschläge. Gibts dazu irgendein Beispiel/Tutorial?
Ich bin noch nicht so lange dabei um es sofort umsetzen zu können, deswegen würde mir sowas wirklich helfen. Ich möchte es auch gern selbst versuchen, damit ich es danach auch verstanden habe :)

Edit:
Wird die Maske genutzt, sind die Daten schon in einer mySQL DB eingefügt. Vorhanden sind diese also schon. Ich muss der Tabelle jetzt nur irgendwie sagen: "Neue Daten vorhanden, also aktualisier dich mal" ;)
Angezeigt wird die Tabelle über eine php-Datei und per require_once ausgeführt.

Edit2:
Es funktioniert so einigermaßen mit der jQuery Funktion load:
HTML:
<script type="text/javascript">

                            $(document).ready (function () {
                                setTimeout (function () {
                                    $('div#infos').load('table.php', 'update=true').scrollTop(lastScrollPos);
                                }, 3000);
                            });
</script>
Aber wieso aktualisiert die Tabelle sich nur einmal??

Gruß,
Lui
 
Zuletzt bearbeitet:
Wozu brauchst du den Timeout?
Fall du mit dem Request auch die Buttons tauscht an denen das Speichern hängt musst du denen wahrscheinlich einen neuen Eventhandler geben nach dem Austausch, die gehen dann verloren.

Und document.ready dürfte (denke) ich nur einmal feuern, nämlich wenn die Seite fertig geladen ist. Das $('div#infos').load('table.php', 'update=true').scrollTop(lastScrollPos); solltest du wahrscheinlich als Callback der Speichern Funktion benutzen, oder du gibst beim Speichern direkt die Tabelle zurück und tauscht sie aus. Ich kenne mich mit JQUERY leider nicht besonders aus, aber wenn du mehr Hilfe brauchst pste mal den PHP Code der die Tabelle generiert, die Funktion die das ganze abspeichert und dein Javascript dazu.
 
Zuletzt bearbeitet von einem Moderator:
Ich poste den Code wenn ich später nach Hause komme, ich bin für jeden einzelnen Vorschlag dankbar :)
 
http://api.jquery.com/jquery.ajax/
http://api.jquery.com/append/

Code:
var dataToPost = {
   name:'Max Mustermann',
   message: 'Test DB Entry'
};

$.ajax({
    type: 'POST',
    url: '/db/store',
    data: dataToPost,
    success: function(data){
        $('#messages').append(data.result);
        $('#alert-success').show();
    },
    error: function(data){
        $('#alert-failure').show();
    },
});

So oder so ungefähr dürfte es funktionieren^^
 
Zurück
Oben