Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapisywanie tylko po zmianie
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Kinool
ok wiec od początku smile.gif

z bazy wyciągam pewne rekordy, wchodzą one w tabele jako pola formularza np. Imie Nazwisko Adres, na stronie jest to listowane w tabeli

np. jako
  1. <input type="text" name="imie[1]" value="Jan" />
itp. każda część (imię, nazwisko, adres) w oddzielnym polu tak by można było hurtowo zmieniać dane a nie wchodzić w edycje pojedynczych wpisów.

w tej chwili w skrypcie przechodzę cała tabele z POST-a np.
  1. <?php
  2. foreach ($_POST['imie'] as $id=>$value)
  3. ?>
i i przez to robie UPDATE w bazie, działa to ale ... no właśnie ale po co edytować dane, które się nie zmieniły a bez sensu porównywać czy dane się zmieniły bo będzie to jeszcze mniej optymalne niż jest teraz smile.gif

pomyślałem sobie o jakimś mechanizmie w JS który by "oznaczał" tylko te pola w których nastąpiła edycja i tylko one by wędrowały do pętli smile.gif

coś podobnego jest w PHPMyAdmin przy edycji wpisu

za pomoc wielkie dzięki smile.gif
paziek
  1. <input type="text" name="imie[1]" value="Jan" oldValue="Jan" />

w zależności od tego czy formularz wysyłąsz AJAXem - robisz zwykłe porównanie przed wysłaniem
  1. if(el.value!==el.getAttribute('oldValue') {/*wyślij dane z tego inputa*/}

lub jeśli tradycyjnie wysyłasz, to po ciśnięciu <input type="button" value="Wyślij" /> odpalasz funkcję, która zrobi porównanie elementów formularza (document.forms[0].elements) i usunie te, których wartość jest równa tej z oldValue.
  1. if(el.value===el.getAttribute('oldValue') {/*usuń tego inputa*/}

Następnie robisz form.submit(); do wysłania formularza (czy jak to tam poprawnie się robi) i gotowe.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.