Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Jquery, php, html]Niepożądana zmiana id diva prowadzi do błędnego wstawienia danych, do bazy danych
Programer
post 3.09.2012, 21:29:30
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 3.09.2012

Ostrzeżenie: (0%)
-----


Witam,
Spotkałem się z pewnym problemem. Mianowicie zbudowałem sobie formularz do dodawania komentarzy pod określonym artykułem. Formularz działa w oparciu o Jquery, PHP, HTML, Ajax oraz JSON i rzecz jasna CSS, ale to już mało istotne. Dane, czyli komentarz trafia do bazy danych MySQL. Sam formularz działa prawidłowo.
W wielkim skrócie formularz działa następująco. W skrypcie Jquery obsługuję zdarzenie click przycisku "Dodaj", który jest odpowiedzialny za wysłanie danych formularza. Dane te następnie Ajaxem wysyłam do skryptu PHP o nazwie "walidacja.php", który to właśnie odpowiedzialny jest za walidację danych formularza. Informacje o ewentualnych błędach (np. zły email, zła captcha) powracają następnie JSON-em do skryptu Jquery i tam jeśli podam, np. nieprawidłowy adres email to odpowiednie pole dostaje czerwoną obwódkę. Nie w tym jednak rzecz. W przypadku gdy wszystkie dane z pól formularza są prawidłowe to w pliku walidacyjnym "walidacja.php" zachodzi operacja wstawienia danych do bazy.

I teraz tak, jak to przejrzyście opisać. W bazie danych mam 3 tabele:
a ) Articles - odpowiedzialna za przechowywanie artykułów, każdy artykuł posiada IDArticle jako klucz główny
b ) Comments - przechowuje komentarze, klucz dla każdego to IDComment
c ) ArtCom - trzecia tabela, której zadaniem jest powiązanie odpowiednich komentarzy z odpowiednimi artykułami. Zawiera klucze obce do powyższych tabel (IDArticle i IDComment)

W momencie podania prawidłowych danych w formularzu, jak już napisałem wyżej, w pliku walidacja.php następuje wstawienie danych do dwóch tabel. Najpierw do tabeli Comments wstawiany jest komentarz (przy tam nick, email), a zaraz potem w tabeli ArtCom jest tworzone powiązanie: czyli wstawiam ID komentarza i ID artykułu. W ten sposób komentarz ląduje pod artykułem, pod którym jest pisany.

Tu zaczynają się schody i to bez poręczy. Muszę znać właśnie ID komentarza (tego co dopiero wstawiłem) oraz ID artykułu, pod którym piszę komentarz. Z ID komentarza problemu nie ma: wstawiam dane do tabeli i następnie odczytuję ID wstawionych danych. Problem jest z ID artykułu bo skądś muszę go wziąć.
Artykuł pod którym piszę dany komentarz leży w div-ie, którego id ma postać "articlex", gdzie x to ID artykułu pobrany z bazy podczas wyświetlenie strony. Wygląda to następująco, np.:
Kod
<div id="article5">artykuł"</div>
<div>komentarze</div>

Pobieram zatem w skrypcie Jquery tą wartość, wycinam zbędne "article" i w ten sposób uzyskuję potrzebny ID artykułu. Następnie wartość ta (razem z danymi z pól formularza) jest Ajax-em wysyłana do pliku walidacja.php i tam wstawienie do tabeli ArtCom nie generuje dużego problemu bowiem oba potrzebne identyfikatory już znam.

Do czego jednak zmierzam.

Zauważyłem, że gdy, obojętnie czy to Firebugiem w Firefoksie czy edytorem strony wbudowanym w Chrome, zamienię wartość identyfikatora diva, w którym leży komentarz, tzn. zmienię cyfrę, która tam jest, np. z nazwy "article7" na "article8" to do Jquery idzie fałszywy ID artykułu (np. zamiast 7 to 8) i dalej reakcja łańcuchowa: Ajax wysyła do pliku walidacja.php zły ID artykułu, a afekt jest taki, że komentarz zamiast być dodany pod aktualnie wyświetlonym artykułem to ląduje pod innym.
Mam nadzieję, że dobrze to wytłumaczyłem.

Pytanie: jak się przed taką niechcianą zmianą id diva zabezpieczyć?

Ten post edytował Programer 3.09.2012, 21:44:42
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 11:19