Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Działanie buttona na id w sql
Sokusters
post 17.12.2017, 13:37:11
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 17.12.2017

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


Witam, otóż tworzę pewien projekt strony. Z góry mówię że jestem osobą w trakcie nauki php.sql itd.

potrzebuje zrobić tabele gdzie w każdym wierszu będzie przycisk który zmienia konkretny wpis w tym przypadku w kolumnie ranga, gdzie warunkiem będzie id.

Nie był by to problem gdyby tabela była statyczna tyle że to jest dynamiczna tabela wiec dane ilość wierszy w tabeli się ciągle zmienia.

Udało mi się zrobić coś takiego:

Wycinek php
  1. $zapytanietxt = "SELECT `id`, `nick`, `datar`, `ranga`, `spr1` FROM `administratorzy`";
  2.  
  3.  
  4.  
  5. $rezultat = mysqli_query($polaczenie, $zapytanietxt);
  6. $ile = mysqli_num_rows($rezultat);
  7.  
  8.  
  9. if ($ile>=1)
  10. {
  11. echo<<<END
  12. <td width="50" align="center" bgcolor="e5e5e5"></td>
  13. <td width="100" align="center" bgcolor="e5e5e5">Nick</td>
  14. <td width="100" align="center" bgcolor="e5e5e5">Data</td>
  15. <td width="100" align="center" bgcolor="e5e5e5">Ranga</td>
  16. <td width="50" align="center" bgcolor="e5e5e5">2017-12-03<br>2017-12-10</td>
  17.  
  18. </tr><tr>
  19. END;
  20. }
  21.  
  22.  
  23.  
  24. for ($i = 1; $i <= $ile; $i++)
  25. {
  26.  
  27. $row = mysqli_fetch_assoc($rezultat);
  28. $a1 = $row['id'];
  29. $a2 = $row['nick'];
  30. $a3 = $row['datar'];
  31. $a4 = $row['ranga'];
  32. $a5 = $row['spr1'];
  33.  
  34. if(isset($_GET['awansset']))
  35. {
  36. $zapytanieawans = "UPDATE `administratorzy` SET `ranga`='sdhhtthhhhdas' WHERE id=$a1";
  37. $rezultat = mysqli_query($polaczenie, $zapytanieawans);
  38.  
  39. }
  40.  
  41.  
  42. echo<<<END
  43. <td width="50" align="center">
  44.  
  45.  
  46. <button id="awans">A</button>
  47.  
  48.  
  49. </td>
  50. <td width="100" align="center">$a2</td>
  51. <td width="100" align="center">$a3</td>
  52. <td width="100" align="center">$a4</td>
  53. <td width="100" align="center">$a5</td>
  54. </tr><tr>
  55. END;
  56.  
  57.  
  58. }


Skrypt wywołujący klikniecie:

  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3. $("#awans").click(function(){
  4. $.get("ListaAdministracji.php?awansset");
  5. });
  6. });


Teraz button działa ale tylko na pierwszy wiersz każdy kolejny już nie ;(



Z góry dziękuję za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
SmokAnalog
post 17.12.2017, 14:12:22
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Atrybut id musi być unikalny, tzn. tylko jeden o danej wartości na stronę.

Zmień materiały do nauki. Atrybut bgcolor wymarł razem z dinozaurami.
Go to the top of the page
+Quote Post
Sokusters
post 17.12.2017, 14:52:51
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 17.12.2017

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


No dobra podstawiłem zamiast zwyklego id awans zmienna $a1 No ale teraz nawet ten 1 wiersz się nie zmienia ;(
  1. <button id="$a1">A</button>

  1.  
  2. <script type="text/javascript">
  3. $(document).ready(function(){
  4. $("#<?$a1?>").click(function(){
  5. $.get("ListaAdministracji.php?awansset");
  6. });
  7. });
Go to the top of the page
+Quote Post
viking
post 17.12.2017, 19:24:45
Post #4





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Poczytaj sobie o delegacji zdarzeń. Ten js generujesz w php?

Ten post edytował viking 17.12.2017, 19:25:19


--------------------
Go to the top of the page
+Quote Post
Sokusters
post 17.12.2017, 22:02:14
Post #5





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 17.12.2017

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


js jest w sekcji header
Go to the top of the page
+Quote Post
viking
post 18.12.2017, 07:54:07
Post #6





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Wiesz że taki zapis nic nie wypisze na ekranie? <?$a1?>


--------------------
Go to the top of the page
+Quote Post
Sokusters
post 18.12.2017, 14:36:51
Post #7





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 17.12.2017

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


Teraz już wiem ;D
Jak mogę to inaczej zrobić questionmark.gif

Co do delegacji zdarzeń czytałem trochę ale nie mam zielonego pojecia jak mogę to wykorzystać.
Jakaś mała podpowiedz ?
Go to the top of the page
+Quote Post
nospor
post 18.12.2017, 14:45:19
Post #8





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




Cytat
Jak mogę to inaczej zrobić
Wyswietlic $a1? No to moze standardowo: <?php echo $a1 ?> ? Albo nawet krocej: <?= $a1 ?> ?

Ale nawet z tymi poprawkami ten kod jest poprostu bez sensu....
Masz sie odwolywac po klasie czyli zamiast id awans daj poprostu klase awans a potem
$(".awans").click(function()
Juz ci bedzie reagowac na kazdy button.

Oczywiscie teraz bezsensu jest kod php, bo teraz updatujesz kazdy rekord w bazie a nie klikniety wink.gif (znaczy tak by bylo jakbys nie nadpisywal zmiennej $rezultat. teraz nadpisujesz wiec sila rzeczy pobierasz/updatujesz tylko jeden rekord - ot przypadek biggrin.gif )


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Sokusters
post 18.12.2017, 20:36:27
Post #9





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 17.12.2017

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


No dobra ale gdy zmienię zmienna $rezultat na jakaś inna to wtedy każdy rekord się zmienia a oto mi też nie chodzi.
Teraz to działa tak jakby WHERE id=$a1 nie działało tak jak powinno.

  1. for ($i = 1; $i <= $ile; $i++)
  2. {
  3.  
  4. $row = mysqli_fetch_assoc($rezultat);
  5. $a1 = $row['id'];
  6. $a2 = $row['nick'];
  7. $a3 = $row['datar'];
  8. $a4 = $row['ranga'];
  9. $a5 = $row['spr1'];
  10.  
  11. if(isset($_GET['awansset']))
  12. {
  13. $zapytanieawans = "UPDATE `administratorzy` SET `ranga`='t50est' WHERE id=$a1";
  14. $rezultat2 = mysqli_query($polaczenie, $zapytanieawans);
  15.  
  16. }
  17.  
  18.  
  19. echo<<<END
  20. <td width="50" align="center">
  21.  
  22. <button class="awans">A</button>
  23.  
  24. </td>
  25. <td width="100" align="center">$a2</td>
  26. <td width="100" align="center">$a3</td>
  27. <td width="100" align="center">$a4</td>
  28. <td width="100" align="center">$a5</td>
  29. </tr><tr>
  30. END;
  31.  
  32.  
  33. }

Co bym tu musiał jeszcze zmienić by to działało >??
Go to the top of the page
+Quote Post
nospor
post 18.12.2017, 22:06:36
Post #10





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




Cytat
No dobra ale gdy zmienię zmienna $rezultat na jakaś inna to wtedy każdy rekord się zmienia a oto mi też nie chodzi.

Dokladnie to przeciez ci napisalem wczesniej, ze to wlasnie twoj kod bedzie robil - bedzie zamienial wszystko - a co jest do bani.

Napisalem ci tez, ze masz zamieniac dla wybranego wcisnietego ID a nie dla wszystkich. Zrob wiec to. Przesylaja AJAXem wcisniete ID i tylko dla tego ID zamieniaj a nie dla wszystkich


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Sokusters
post 22.12.2017, 00:31:04
Post #11





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 17.12.2017

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


Poczytałem trochę i napisałem coś takiego, ale też nie działa jak powinno...
  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3. $(".awans").click(function(){
  4. $.get("ListaAdministracji.php?awansset&id="+$(this).data('id'));
  5. });
  6. });

If jest przed $zapytanietxt
  1. if(isset($_GET['awansset']))
  2. {
  3. $zapytanieawans = "UPDATE `administratorzy` SET `ranga`='testy' WHERE id=".intval($_GET['id']);
  4. $rezultat = mysqli_query($polaczenie, $zapytanieawans);
  5.  
  6. }


  1. <button class="awans" data-id="<?php echo $a1; ?>">A</button>


Go to the top of the page
+Quote Post
viking
post 22.12.2017, 05:57:39
Post #12





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Otwórz narzędzia deweloperskie przeglądarki i zobacz błędy oraz w zakładce sieć co wysyłasz.


--------------------
Go to the top of the page
+Quote Post
Sokusters
post 22.12.2017, 10:37:26
Post #13





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 17.12.2017

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


Działa!!

Dziękuję wszystkim za pomoc.

Wystarczyło zmienić tą linijkę kodu:

  1. <button class="awans" data-id="$a1">A</button>
Go to the top of the page
+Quote Post

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: 19.07.2025 - 12:57