Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP][MySQL]Pobranie nazwy z bazy danych i zmiana jej za pomocą formularza.
Forum PHP.pl > Forum > Przedszkole
Snake
Witam,

od pewnego czasu borykam się z dość trudnym dla mnie problemem, na którego rozwiązanie nie mam już pomysłów.

Co chcę zrobić?

Otóż chcę pobrać z bazy danych "tytuły", wyświetlić je na stronie i po podwójnym kliknięciu (tutaj operowanie na jQuery) tekst zamieniany jest w input textbox z tą wartością, co chcę zmienić. Co dalej? Dalej zmieniam "tytułu" i chcę ją "nadpisać" w bazie danych. To wszystko mam.

Co mi nie działa?

Dobra, wszystko pobrałem, w jQuery pokazuje się textbox z zawartością, ale przy próbie nadpisania w bazie danych nadpisuje tylko ostatni rekord. Gdziekolwiek bym tego tytułu nie zmienił - to zamienia on ostatni rekord.

Co mam?

W
  1. <input name='id' type='hidden' value='" + id +"' />

Oczywiście wcześniej zadeklarowałem zmienną:
  1. var id = "{$id}";



Cały kod jQuery:

  1. $(function () {
  2. $(".title").dblclick(function (e) {
  3. e.stopPropagation();
  4. var currentEle = $(this);
  5. var value = $(this).html();
  6. var id = "{$id}";
  7. console.log("Wartość zmiennej id to:" + id);
  8. $(currentEle).html("<input name='newTitle' class='thVal' type='text' value=" + value + " /> <input type='submit' name='submit' /><input name='id' type='hidden' value='" + id +"' />");
  9. });
  10. });


<JS> Konsola przeglądarki wyrzuca "Wartość zmiennej id to: [tutaj jest liczba wszystkich rekordów".
<PHP> Przypisanie zmiennej $id (w PHP działa bez zarzutów):
  1. $id = $row['id'];

I w zmiennej do wyświetlania rekordów z bazy danych oczywiście mam diva z klasą "title".

Teraz PHP.

Z zapytania do bazy danych (jest ono prawidłowe, to jest pewne) chcę pobrać ID (zaznaczam, że przy numeracji po ID, np.:
  1. Przyklad 1
  2. Przyklad 2

wszystko działa)

Natomiast, gdy chcę to zrobić to, o czym wcześniej pisałem to input z ID ma value non stop liczbę wszystkich rekordów.

Potem.

Zapytanie, które nadpisze mi tytuł dla wybranego ID:
  1. UPDATE el_article SET `title` = '" . $_POST['newTitle'] . "' WHERE `id` = '" . $_POST['id'] . "';
  2.  

Wcześniej sprawdzając czy istnieje 'submit':
  1. if(isset($_POST['submit']))


----------------------------------------------------

Opisałem problem, mam nadzieję, że dość szczegółowo.

1) Uprzejmie prosiłbym o jakieś nakierowanie, coś może źle robię.
2) Czy jest możliwość, aby zamiast Double Clicka odbywało się to metodą "przytrzymania" przycisku myszy na elemencie.

Pozdrawiam, Mateusz.

Ma ktoś może pomysł? Podbijam wątek.
nospor
Z tego co widac na tym skapym kodzie co pokazales, to wynika, ze masz jeden form na cala tabele i w kazdym wierszu tabeli tworzysz pole input o tej samej nazwie. Skoro wszystkie pola maja takie same nazwy to logiczne ze wysle sie tylko to ostatnie gdyz ono nadpisuje wszystkie inne.
Chcac zrobic jak masz, to pole ma miec nazwe tablicowa czyli nie:
name="nazwa"
a:
name="nazwa[]"

Wowczas formularz wysle te pola jako tablice i beda wszystkie.

Moim jednak zdaniem i tak powinienies to zrobic inaczej, czyli jak ktos chce zapisac dane pole to nie masz wysylac calego forma jak teraz, tylko masz ajaxem wyslac to jedno pole i po sprawie.
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.