Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Update bazy danych z pomocą checkbox
rafik73
post
Post #1





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


Temat niby oklepany,ale nie znalazłem jednoznacznej odpowiedzi. Jest formularz:



  1. mysql_query("SET NAMES 'utf8'");
  2. $wyk_query = mysql_query("SELECT * FROM nazwy_wyklady ORDER BY nr ASC") or die('Błąd zapytania');
  3. while($wyk_array=mysql_fetch_array($wyk_query)){
  4. $id_wykladu=$wyk_array['id_wykladu'] ;
  5. $nr=$wyk_array['nr'] ;
  6. $nazwa=htmlspecialchars($wyk_array['nazwa']) ;
  7.  
  8. echo '<form action="y.php" method="post"> ';
  9.  
  10. echo '<span style="padding-left:5px"><input type="text"
  11. style="text-align:left;font-size:14px;width:50px;height:29px;background-color : White ;
  12. color : black;border-width:1px;border-style:ridge;border-color:rgb(208,208,208);" name="nr[]" value="'.$nr.'"></span>';
  13.  
  14. echo '<span style="padding-left:5px"><input type="text"
  15. style="text-align:left;font-size:14px;width:500px;height:29px;background-color : White ;
  16. color : black;border-width:1px;border-style:ridge;border-color:rgb(208,208,208);" name="nazwa[]" value="'.$nazwa.'"></span>';
  17.  
  18. echo '<span style="padding-left:5px"><input type="checkbox" name="delete[]" value="'.$id_wykladu.'"> </span>';
  19.  
  20. echo '<br>';
  21.  
  22. }
  23. echo '<p style="float:left;padding-left:350px;padding-bottom:20px"><button type="submit" class="button_metro" style="float:left;width:80;height:40px;background-color:White;color:Tomato">
  24. ZMIEŃ</button></p>';
  25. echo '</form> ';



oraz plik, który odbiera i aktualizuje:




  1. //$id_wykladu=$_POST['id_wykladu'];
  2. $nr=$_POST['nr'];
  3. $nazwa=$_POST['nazwa'];
  4. $checkbox=$_POST['delete'];
  5.  
  6. //for($i=0;$i<count($checkbox);$i++){
  7. //$del_id = $checkbox[$i];
  8.  
  9. foreach($checkbox as $id)
  10. echo $id.'<br>';
  11.  
  12. foreach($nazwa as $name)
  13. //$name = $nazwa[$i];
  14. //$numer = $nr[$i];
  15.  
  16. echo $name.'<br>';
  17.  
  18. foreach($nr as $numer)
  19. echo $numer.'<br>';
  20. //echo $nr.'<br>';
  21.  
  22. /*
  23.   mysql_query("SET NAMES 'utf8'");
  24.   mysql_query("UPDATE `nazwy_wyklady` SET `nazwa`='$nazwa' WHERE `id_wykladu`='$del_id'")
  25.   or die('Błąd zapytania');
  26.   }
  27.   header( 'Location: z.php' ) ;
  28.   exit();
  29.   */
  30. // }
  31.  

efekt jest taki, że po zaznaczeniu kilku rekordów przesyła poprawnie $id_wykladu, czyli zaznaczone wartości,
zaś $nazwa oraz $nr wyświetla całą zawartość tabeli. Jak przypisać zawartość $nazwa i $nr do $id_wykladu.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Możesz jaśniej?
Go to the top of the page
+Quote Post
rafik73
post
Post #3





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


Założenie jest takie,że w formularzu mają być wyświetlane dane z tabeli, przy kazdym rekordzie ma być checkbox. Jednym wspólnym przyciskiem submit formularz ma wysyłać zaznaczone checkbox'ami rekordy do pliku,w którym za pomocą update jest aktualizowana tabela. W podanym listingu formularz wysyła poprawnie $id_wykladu, czyli to co jest przyporzadkowane do checkbox,według zaznaczenia , zaś jeśli chodzi o komórki $nr oraz $nazwa to wysyła wszystkie rekordy z tabeli,bez przyporządkowana do checkbox

$id_wykładu. $nr. $nazwa. Checkbox
1. 12. aaa. V
2. 13. Bbb. -
3. 14. Ccc. V
4. 15. ddd. -
5. 16. eee. V

Po submit formularz wysyła:
$id_wykladu: 1,3,5
$nr: 12,13,14,15,16
$nazwa: aaa,Bbb,Ccc,ddd,eee
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


  1. ?>
  2. <form action="y.php" method="post">
  3. <span style="padding-left:5px"><input type="text"
  4. style="text-align:left;font-size:14px;width:50px;height:29px;background-color : White ;
  5. color : black;border: 1px ridge rgb(208,208,208);" name="nr[<?=$id_wykladu?>]" value="<?=$nr?>"></span>
  6.  
  7. <span style="padding-left:5px"><input type="text"
  8. style="text-align:left;font-size:14px;width:500px;height:29px;background-color : White ;
  9. color : black;border: 1px ridge rgb(208,208,208);" name="nazwa[<?=$id_wykladu?>]" value="<?=$nazwa?>"></span>
  10.  
  11. <span style="padding-left:5px"><input type="checkbox" name="delete[<?=$id_wykladu?>]" value="<?=$id_wykladu?>"> </span>
  12. <br>
  13. <?php


Ten post edytował Pyton_000 31.08.2015, 06:50:08
Go to the top of the page
+Quote Post
rafik73
post
Post #5





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


Dziękuję, Spróbuję po powrocie do domu.

Rozważałem jeszcze:
Input type="hidden" name="x" value="'.$id_wykładu.'"
A potem
Input type="text" name="nazwa[x]" value="'.$nazwa '"
Itd.

Ten post edytował rafik73 31.08.2015, 08:23:02
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




JA tylko dodam, ze o to:
echo '<form action="y.php" method="post"> ';
ma sie znajdowac przed WHILE a nie w srodku WHILE.... takie tam podstawy HTML.
Go to the top of the page
+Quote Post
rafik73
post
Post #7





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


Coś dalej nie tak, wyświetla Array w polu $nr i $nazwa

a jak próbuje print_r() w pętli to wywala wszystkie rekordy a nie zaznaczone...

...pomysły?
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




A skad pomysl, ze nr i nazwa pojawią sie tylko zaznaczone? To są normalne inputy i one zawsze sie wysylają, To tylko checkboxy wysylają sie zaznaczone
Go to the top of the page
+Quote Post
rafik73
post
Post #9





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


Taki efekt chciałbym uzyskać, wysyłanie wartości wszystkich pól zaznaczonych rekordów.

Usuwanie to pikuś bo potrzebne tylko id zapisane w tablicy checkboxa

Mam listę powiedzmy 100 wykładów i chcę edytować 20, pojedyńczo się zajeżdże, a tak zaznaczam checkboxy przy rekordach do edycji, edytuje, klikam submit i robi się masowo
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




Toz jesli zrobiles jak kazal Pyton, to sprawe masz zalatwioną.... sla ci sie checkboxy tylko zaznaczaone, czyli masz ich ID. Majac ich ID wybierasz z post tylko te nri nazwa, ktore mają to ID. No w czym problem?
Go to the top of the page
+Quote Post
rafik73
post
Post #11





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


No tak,ale nr i nazwa i tak musze POSTować bo podlegają edycji, a jak je wyłuskać po odebraniu ?
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




Toc juz pisalem: jesli zrobiles jak napisal Pyton, to kazde z nich ma takie sam index, co wyslany checkbox. Majac indeksy masz dostep do wszystkiego
Go to the top of the page
+Quote Post
rafik73
post
Post #13





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


Załatwione. Serdeczne dzięki.

  1. $nr=$_POST['nr'];
  2. $nazwa=$_POST['nazwa'];
  3. $checkbox=$_POST['delete'];
  4.  
  5. foreach($checkbox as $id) {
  6. echo $id.'<br>';
  7. echo $nazwa[$id].'<br>';
  8. }


Po prostu uparłem się, żeby powiazać wszystko w formularzu i wysłać wyselekcjonowane. Nie ten tor i kierunek....Pozdrawiam
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: 25.08.2025 - 14:16