• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

sprawdzanie czy pojawiły się nowe dane w tabeli, jeśli tak wyświetlanie info php mysqli

VPS Starter Arubacloud
0 głosów
228 wizyt
pytanie zadane 6 maja 2022 w PHP przez gatka84 Bywalec (2,150 p.)

Witajcie nie mogę wykombinować jak w prosty sposób zrobić żeby pojawiało mi się info o nowych wpisach do bazy tzn mam tak :

<?php
                    $dash_mailing_query = "SELECT * FROM `mailing`";
                    $dash_mailing_query_run = mysqli_query($con, $dash_mailing_query);

                    if ($mailing_total = mysqli_num_rows($dash_mailing_query_run)) {
                        echo '<h4 class="mb-0"> ' . $mailing_total . ' </h4>';
                    } else {
                        echo '<h4 class="mb-0"> No Data </h4>';
                    }
?>

i pokazuje mi łączną ilość wpisów np 10 i teraz nie wiem jak zrobić żeby porównywał czy pojawiły się nowe i tu mam problem bo w pierw kombinowałam z dodatkową kolumną, w której by zapisywał ostatni stan i jeśli się zmienił to by pokazywał o ile ale w sumie nie bardzo wiem jak dać odniesienie czy od ostatniej wizyty czyli logowania się lub inny odnośnik, który by byłby punktem odniesienia (nie bardzo wiem jak powinno się do tego podejść), że pojawiły nowe wpisy w bazie? Jeśli ktoś ma jakiś pomysł albo nakierowanie jak to ugryźć była bym bardzo wdzięczna za podpowiedz lub nakierowanie na przykłady jak to może wyglądać

2 odpowiedzi

+2 głosów
odpowiedź 6 maja 2022 przez rafal.budzis Szeryf (85,260 p.)

Najłatwiej - nie sprawdzać tego i po prostu co jakiś interwał np 10 sekund wczytywać wszystkie dane na nowo. Zakładam że efekt będzie taki sam czyli odświeżone dane :) 

Nieco trudniej - co parę sekund wysyłamy zapytanie czy coś się zmieniło (Warto przepisać to na API zamiast zwracać HTMLa)

Prawidłowo - użyć technologii która pozwana na stałe połączenie. PHP jest zaprojektowany do stworzenia HTMLa, wysłania i zakończenia pracy. Dlatego asynchroniczność w nim nie jest tak oczywista. Dobrze by było użyć nodeJS. Jak to połączyć ? 

W nodeJS piszemy stałe połączenie (WebSocket). W PHP zaraz po wykonaniu zapytania SQL które coś zmienia (update/delete) wysyłamy request do nodeJSa który informuje że powinien poinformować o zmianach użytkowników. 

Prawidłowi i szybko - Użyć bazy danych firebase która wspiera wszystkie te rzeczy i nie bawić się w pisanie koła na nowo ;) 

https://firebase.google.com/products/realtime-database

komentarz 6 maja 2022 przez gatka84 Bywalec (2,150 p.)
Dzięki za podpowiedź ale niestety muszę zostać przy mysqli bo już mam wszystko w tym i próbuje sobie zrobić udogodnienie tak jak jest w np na skrzynce mailowej gdzie jest info o nowej wiadomości i stąd zastanawiałam się jak to ew dodać do już istniejącego projektu.
+1 głos
odpowiedź 6 maja 2022 przez Wiciorny Ekspert (269,120 p.)
Provider do bazy, czy rodzaj bazy - moze byc różny, generalnie zachowanie powinno być kierowane serwisem, jeśli aktualizuje się stan bazy, automatycznie powinien być efekt- informujący stronę klienta.

Z poziomu bazy ustawić logowanie informacji,
https://dev.mysql.com/doc/refman/8.0/en/faqs-triggers.html#qandaitem-23-5-1-11
Trigger bazodanowy może?   Wyzwalacz jest wykonywany na serwerze Mysql, a nie na serwerze PHP- niezaleznie od maszyny w tym jedyny kruczek i komplikacja.
Może też opcja CSV https://dev.mysql.com/doc/refman/5.7/en/csv-storage-engine.html
Z poziomu php, najlepiej po stronie API.
komentarz 9 maja 2022 przez gatka84 Bywalec (2,150 p.)

Szukając prostego rozwiązania zastanawiam się jak to prosto rozwiązać i pomyślałam czy ew można zrobić to tak że w modalu to zrobię i jak nacisnę do podglądu to od razu mi prześle do bazy info o tym że wiadomość już została obejrzana.

$(document).ready(function () {        
        $('.viewbtn').on('click', function () {            
            $('#viewmodal').modal('show');            
            $tr = $(this).closest('tr');            
            var data = $tr.children("td").map(function () {
            return $(this).text();
            }).get();            
            console.log(data);            
            $('#update_id').val(data[0]);
            $('#title').val(data[1]);
            $('#email').val(data[2]);
            $('#message').val(data[3]);
            $('#data').val(data[4]);
        });
    });

tylko nie wiem jak w podgląd wpleść mu od razu update bazy

w bazie zrobię dodatkowo np 'visible' o wartości 0- dla nie przeczytany i 1 dla przeczytany i teraz utknęłam na update przy jednoczesnym wyświetlaniu wiadomości do podglądu

Podobne pytania

0 głosów
2 odpowiedzi 797 wizyt
+1 głos
0 odpowiedzi 137 wizyt
pytanie zadane 19 grudnia 2022 w C i C++ przez piotr_domanski Bywalec (2,040 p.)
0 głosów
3 odpowiedzi 366 wizyt
pytanie zadane 9 lipca 2015 w PHP przez mowmiheniek Stary wyjadacz (11,900 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...