Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wybranie danych do edycji za pomaca checkbox-a PROBLEM
niebieszki
post
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 30.09.2010

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


Witam

Mam bardzo specyficzny problem. Postaram się to wyjaśnić w jak najbardziej przyjazny sposób.

Chciałbym aby po zaznaczenie jakiegoś chackboxa były dostępne dla niego opcje jak edytuj czy usuń (ie chodzi mi o to aby się nagle te opcje pojawiły tylko aby po zaznaczeniu 3 wiersza wyświetlić się widok z edycja danych 3 wiersza). Jak przechwycić tą dana aby np. doczepić jej id z polu value do paska adresu albo zmiennej POST - może tego w ogóle tak się nie robi proszę o nakierowanie mnie na odpowiednie rozwiązanie.

Poniżej schematyczny rysunek jak by to miało wyglądać: Rożne opcje które miały by być dostosowane do konkretnego wiersza z tabeli (rozpoznamy go po zaznaczeniu checkboxa

(IMG:http://img201.imageshack.us/img201/5734/przechwytywanied.png)

Może moje rozumowanie jest zupełnie blednę i trzeba to robić jakimiś innymi technikami. Proszę o poradę jak do takiego czegoś się zabrać

edit:

tu jest drugi przykład bardziej ilustrujący co chce zrobić:
(IMG:http://img255.imageshack.us/img255/4475/przechwytywaniel.png)
gdy zaznaczymy pole przy pierwszej i klikniemy drukuj to wydrukuje się dane z pierwszej zaś gdy zaznaczymy druga to wydrukuje się dane z drugiej

Ten post edytował niebieszki 30.09.2010, 09:14:49
Go to the top of the page
+Quote Post
fander
post
Post #2





Grupa: Zarejestrowani
Postów: 231
Pomógł: 22
Dołączył: 6.10.2008

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


Witam

Rozwiązanie nie jest błędne ale dość specyficzne a jak to ugryźć?

plik lista.php

  1. // skrypt pobierania rekordów z bazy
  2.  
  3. $lista //rekordy pobrane z bazy
  4.  
  5. echo '<form action="" method="">
  6. <table>
  7. <tr>
  8. <th></ht>
  9. <th>nazwa</th>
  10. <th>kolumna_x</th>
  11. </tr>';
  12. foreath($lista as $key => $val){
  13. echo '
  14. <tr>
  15. <td>
  16. <input type="cheackbox" name="element[]" value="'.$val["id"].'" />
  17. </td>
  18. <td>'.$val["nazwa"].'</td>
  19. <td>'.$val["kolumna_x"].'</td>
  20. </tr>';
  21. }
  22.  
  23. </table>
  24. <input type="submit" name="akcja" value="edytuj" />
  25. <input type="submit" name="akcja" value="usuń" />
  26. </form>';


Poz zaznaczeniu paru elementów i kliknięciu na edytuj, zostaną do skryptu dane w jako tablica POST.
Przykładowa tablica POST będzie wyglądała następująco :
Kod
  array(
      element => array(
          0 => 1,
          1 => 2,
          2 => 5
   ),
  "akcja" => "edytuj"
  )
  
  Wartości odpowiednich kluczy w tabli odpowiadają kluczom głównym w tabeli (bazie danych) poszczególnych elementów.


Teraz aby wyświetlić okienko z edycją tworzysz następujący kod:

  1.  
  2. switch($_POST['akcja']){
  3. case "edycja":
  4. echo '<form action="" metchod="POST">';
  5. foreatch($_POST['element'] as $key => $v){
  6. $el = $connection->query("SELECT * FROM tabela WHERE id=".$v->fetchAll(PDO::FETCH_ASSOC); // ja tutaj pobieram z tabelki odpowiednie rekordy używając PDO ale tobie zostawiam wybranie sposobu pobierania danych z bazy
  7. if(isset($el[0])){
  8. $el = $el[0];
  9. echo '
  10. <table>
  11. <tr>
  12. <td>
  13. <input type="hidden" name="elemnt['.$key.'][id]" value="'.$el["id"].'" /><br />
  14. <input type="text" name="nazwa" value="'.$el['nazwa'].'" /><br />
  15. <input type="typjakiś" name="kolumnax" value="'.$el["kolumnax"].'"
  16. </td>
  17. </tr>
  18. </table>
  19. ';
  20. }
  21. <input type="submit" name="akcja" value="zapisz" />';
  22. </form>';
  23. break;
  24. }


Po kliknięciu zapisz zostaną wysłane dane do skryptu. Tablica POST będzie wyglądała następująco

Kod
   array(
       element => array(
          0 => array(
                     id => 1,
                     nazwa => {wartość}
                     kolumnax => {vartość}
                  )
          1 => array(
                     id => 3,
                     nazwa => {wartość}
                     kolumnax => {vartość}
                  )
          2 => array(
                     id => 5,
                     nazwa => {wartość}
                     kolumnax => {vartość}
                  )
       ),
       akcja => zapisz
   )


Aby zapisać dane robisz foreach to tablicy $_POST['element'] i dla każdego elementu wykonujesz update na tabeli w bazie danych. Ale to już sobie sam dopiszesz (IMG:style_emoticons/default/smile.gif)


Pozdrawiam

Ten post edytował fander 30.09.2010, 09:49:29
Go to the top of the page
+Quote Post
niebieszki
post
Post #3





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 30.09.2010

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


super odpowiedz dziękuje bardzo.

Mam tylko mały problem przy stworzeniu tej drugiej tablicy ze zmiennej post.

Jak zrobiłeś (od jakiego kawałka kodu zależy) to iż w tablicy post mamy tablice element na którą składają się zmienne id nazwa itp. U mnie po wyswitleniu tablicy element znajduje się tylko id.
Go to the top of the page
+Quote Post
lord2105
post
Post #4





Grupa: Zarejestrowani
Postów: 380
Pomógł: 59
Dołączył: 24.04.2010
Skąd: London

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


tak?

  1.  
  2. <input type="hidden" name="elemnt['.$key.'][id]" value="'.$el["id"].'" /><br />
  3.  
  4. <input type="text" name="nazwa" value="'.$el['nazwa'].'" /><br />
  5.  
  6. <input type="typjakiś" name="kolumnax" value="'.$el["kolumnax"].'" />


Ten post edytował lord2105 1.10.2010, 10:06:59
Go to the top of the page
+Quote Post
niebieszki
post
Post #5





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 30.09.2010

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


Tak wiem dokładnie ta cześć kodu odpowiada za to ale czy nie bedzie tak ze w zmiennej globoalnej Post bedzie tablica element przechowujaca tylko id

A dodatkowo bedzie trzeba sie osobno odwoływać do zmiennej post i wnej bedzie zapisana zmianna o nazwie nazwa i zmienna kolumnax - ale tylko wartosci z ostatniej petli.
Czy ja coś zle rozumiem?
Go to the top of the page
+Quote Post
lord2105
post
Post #6





Grupa: Zarejestrowani
Postów: 380
Pomógł: 59
Dołączył: 24.04.2010
Skąd: London

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


będzie to tablica wielowymiarowa tzn $_POST[0]['kolumna'],$_POST[0]['nazwa'],$_POST[0]['id']

Ten post edytował lord2105 1.10.2010, 10:26:39
Go to the top of the page
+Quote Post
niebieszki
post
Post #7





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 30.09.2010

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


tak wiem i do tego chhce dazyc....

ale czy pole typu hidden powinno miec nazwe: name="elemnt[ a inne pola juz nie musza?

Wiec prosze wytłumacz mi bo ja chyba troche nie kapuje jak one moge wyladować w 2 wymiarze tablicy post element skoro one nie maja nazw tablicowych tak jak np. kolumnax : name="kolumnax"

po prostu czy nie powinno byc tak aby stworzyc taka tablice?:


  1. <input type="hidden" name="elemnt['.$key.'][id]" value="'.$el["id"].'" /><br />
  2.  
  3. <input type="text" name="elemnt['.$key.'][nazwa]" value="'.$el['nazwa'].'" /><br />
  4.  
  5. <input type="typjakiś" name="elemnt['.$key.'][kolumnax]" value="'.$el["kolumnax"].'"


Ten post edytował niebieszki 1.10.2010, 11:09:24
Go to the top of the page
+Quote Post
lord2105
post
Post #8





Grupa: Zarejestrowani
Postów: 380
Pomógł: 59
Dołączył: 24.04.2010
Skąd: London

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


a powinno ;P gratuluję spostrzegawczości :)nie zauważyłem (IMG:style_emoticons/default/tongue.gif)
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: 21.12.2025 - 19:54