Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [jQuery] append i post - nie zczytuje
deha21
post
Post #1





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Mam w panelu ustawienia dodawanie nowych pozycji. Po kliknięciu jquery wywołuje append, który dodane do formularza nowe pole. Okazuje się, że mimo ze to nowe pole istnieje i jest prawidłowo zapisane w formularzu to później skrypt PHP go nieczyta - a konkretniej nawet nie wysyła nowych pól bo nie widać ich w przesłanym headerze. Jest na to jakiś sposób czy trzeba to zrobić inaczej?
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Pokaż kod, bo nie widzimy czy ty w ogóle robisz to tak jak trzeba.
Go to the top of the page
+Quote Post
deha21
post
Post #3





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


jQuery:
[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function(){
  2.  
  3. var numb = 1;
  4.  
  5. $("#add_pos").live("click", function(){
  6.  
  7. numb=numb+1;
  8.  
  9. $("#pos").append('<tr><td style="border-top:1px solid #ccc; font-weight:bold; padding-top:10px; font-size:1.1em;">Pozycja '+numb+'</td></tr><td><input type="hidden" name="pos'+numb+'_id" value="'+numb+'"><input type="text" name="pos'+numb+'_title" size="45"></td></tr><tr><td><textarea name="pos'+numb+'_description" rows="4" style="width:350px"></textarea></td></tr><tr><td><input type="text" name="pos'+numb+'_image" id="pos'+numb+'_image" autocomplete="off"><a href="filesbrowser.php?directory=files/images/glosowania&target=pos'+numb+'_image&iframe" class="fbplus"></a></td></tr><tr><td style="padding-bottom:10px"><input type="text" name="pos'+numb+'_imagebig" id="pos'+numb+'_imagebig" autocomplete="off"><a href="filesbrowser.php?directory=files/images/glosowania&target=pos'+numb+'_imagebig&iframe" class="fbplus"></a></td></tr>');
  10. return false;
  11. });
  12.  
  13. });
[JAVASCRIPT] pobierz, plaintext


Skrypt:
  1. function dodawanie($atr,$idd) {
  2. $pos_title=filtr($_POST[$atr.'_title']);
  3. $pos_description=filtr($_POST[$atr.'_description']);
  4. $pos_image=filtr($_POST[$atr.'_image']);
  5. $pos_imagebig=filtr($_POST[$atr.'_imagebig']);
  6. //echo 'Zrobione',$atr,'<br>';
  7. mysql_query("INSERT INTO glosowanie values ('','$idd','$pos_title','$pos_description','$pos_image','$pos_imagebig','0')");
  8. }
  9.  
  10. if (isset($_POST['pos1_id'])) { dodawanie('pos1',$id); }
  11. if (isset($_POST['pos2_id'])) { dodawanie('pos2',$id); }
  12. if (isset($_POST['pos3_id'])) { dodawanie('pos3',$id); }
  13.  
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No ale pokaż jak wygląda formularz. Co to jest te #pos?

print_r($_POST);
jesteś pewien że to nie wyświetla ci wszystkich danych przesłanych formem?
Go to the top of the page
+Quote Post
deha21
post
Post #5





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Tak, $_POST nie wykazuje danych z nowoutworzonych pól :/ Gdy dodaję nowe pola przez jQuery to tworzą się poprawne nazwy, czyli np. pos2_id, pos2_title itd.

#pos to jest ID tabeli.

Formularz:
  1. <form method="POST" action="dodaj.php">
  2. <fieldset><legend>Dodawanie głosowania</legend>
  3. <input type="hidden" name="type" value="add">
  4.  
  5. <table id="pos">
  6.  
  7. <tr><td style="border-top:1px solid #ccc; padding-top:10px; font-weight:bold; font-size:1.1em;">Pozycja 1</td></tr>
  8. <td><input type="hidden" name="pos'1_id" value="1">
  9. <input type="text" name="pos1_title" size="45"></td></tr>
  10. <tr><td><textarea name="pos1_description" rows="4" style="width:350px"></textarea></td></tr>
  11. <tr><td><input type="text" name="pos1_image" id="pos1_image" autocomplete="off"><a href="filesbrowser.php?directory=files/images/glosowania&target=pos1_image&iframe" class="fbplus"></a></td></tr>
  12. <tr><td style="padding-bottom:10px"><input type="text" name="pos1_imagebig" id="pos1_imagebig" autocomplete="off"><a href="filesbrowser.php?directory=files/images/glosowania&target=pos1_imagebig&iframe" class="fbplus"></a></td></tr>';
  13.  
  14.  
  15. </form>
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Jakoś mi się nie chce wierzyć, że print_r($_POST); nie zwraca ci tych pól. Pokaż dokładnie co zwraca
print_r($_POST);

Twój kod na pierwszy rzut oka wydaje się być ok
Go to the top of the page
+Quote Post
deha21
post
Post #7





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Zwracam mi tylko pierwsze pole, czyli te które "już jest" (bo pierwsze jest wpisane na sztywno w htmlu).
  1. Array ( [type] => addglosowanie [title] => Test [date] => 12.12.2012 [dateto] => 19.12.2012 [image] => [description] => [pos1_id] => 1 [pos1_title] => Raz raz raz [pos1_description] => [pos1_image] => [pos1_imagebig] => ) pos1

Dodałem dwa dodatkowe pola, czyli łącznie powinno być 3 a jest tylko pos1
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Masz to gdzieś wystawione?

numb=numb+1;
alert(numb);
wyświetla kolejne numerki?
Go to the top of the page
+Quote Post
deha21
post
Post #9





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Alert dobrze wyświetla. Wszystko się ładnie tworzy, sprawdzałem poprawność utworzonych nowych pół narzędziem z google chrome i jest wszystko ok. Mam tylko tylko swoim panelu admina (IMG:style_emoticons/default/wink.gif) Postaram się przepisać gdzieś "dla świata" ale musiałbym to dodatkowo zabezpieczyć (lepiej dmuchać na zimne (IMG:style_emoticons/default/tongue.gif) ).
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No ale w wystawionym kodzie nie musisz robić inserwów do bazy.
Wystarczy że zostawisz print_r($_POST);
(IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
deha21
post
Post #11





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Inserty moge zrobic, nie ma problemu ale moze jakiś nie powołany ktoś bedzie chciał przetestować formy ataków xss czy jakieś inne majeskuele indżekszony (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Jak nie zrobisz insertów to ci zadnych XSS nie spróbuje.... chyba ze jedynie na sobie samym... (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
deha21
post
Post #13





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Cytat(nospor @ 12.12.2012, 13:41:33 ) *
Jak nie zrobisz insertów to ci zadnych XSS nie spróbuje.... chyba ze jedynie na sobie samym... (IMG:style_emoticons/default/tongue.gif)

Racja! Ale jestem głupi hehe (IMG:style_emoticons/default/biggrin.gif) Zaraz przygotuję i wkleję linka.

http://www.hbmedia.pl/test/dodaj.php?type=glosowanie

Ten post edytował deha21 12.12.2012, 14:36:05
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Przecież ta tabela jest poza formularzem to niby jakim cudem coś co jest poza formularzem ma się wysłać?

edit: a nie, nie jest poza formularzem tylko ty masz błędny kod HTML przez co wywala się wszystko.
FORM ma obejmować oba Twoje DIVy: left i right. Wówczas powinno być dobrze.
Ty teraz FORM otwierasz w div left a zamykasz w div RIGHT. Przecież to jest zły kod HTML. Ma byc tak:
<form>
left
right
</form>
Powód edycji: [nospor]:
Go to the top of the page
+Quote Post
deha21
post
Post #15





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Jesteś wielki! (IMG:style_emoticons/default/biggrin.gif) Rzeczywiście tak było
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 21:31