Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: edycja formularza
Forum PHP.pl > Forum > Przedszkole
peklo
mam pytanie odnośnie edycji formularza.
Gdy chcę wyświetlić dane które zostały wprowadzone do formularza to grupuje wyniki i jest wszystko ok. Wyświetla się jak trzeba. Mam problem z edycją pól formularza. i tu pytanie czy też musze grupować wyniki?
Teraz mam zgrupowane i jak zrobię echo wyświetla wszystko dobrze, natomiast jak chcę edytować pola checkbox to mi je dubluje. Przykładowy kod-powinno się zazanczyć A,B,C

  1. <?php
  2. foreach ($ogloszenia['pjk'] as $pj){
  3. ?>
  4. <input name='id_prawo_jazdy[]' type='checkbox' value='1' <?php if ($pj['id_prawo_jazdy'] == 1) {echo 'checked';} ?>> a
  5. <input name='id_prawo_jazdy[]' type='checkbox' value='2' <?php if ($pj['id_prawo_jazdy'] == 2) {echo 'checked';} ?>> b
  6. <input name='id_prawo_jazdy[]' type='checkbox' value='3' <?php if ($pj['id_prawo_jazdy'] == 3) {echo 'checked';} ?>> c
  7. <?php
  8. }
  9. ?>


i się zaznacza ale dubluje wszystko x 3. I mam tak
w pierwszym zaznacza a, w drugim b,w trzecim c. Co ribię nie tak?
nospor
Przeciez $ogloszenia['pjk'] zawiera dane do generowania checkboxow wiec masz w tej petli generowac jeden chceclbox z wartosciami z tej tablicy anie trzy... nic dziwnego ze ci duplikuje
peklo
aaaaaa widzisz wiedziałem że coś skopałem smile.gif
Jeszcze będe mieć do Ciebie pytanko odnośnie pobrania do select ale to pewnie póxniej.dzieki

a zaraz zaraz coś sobie przypomniałem. Pętla pobiera mi 3 pola. Ale w trakcie wypełniania formularza mam tych powiedzmy pól 15. I teraz chcę sobie dołożyć lub odjąć te checkbox. Jak sobie z tym poradzić?
nospor
No to masz iterowac po tej petli, ktora ma wszystko. A to co masz teraz $ogloszenia['pjk'] pewnie zawiera tylko info o zaznaczonych
peklo
no ta pętla dokładnie zawieera tylko te zaznaczone. To jak teraz zrobić żeby pobrało mi wszystkie checbox ale nie dublowało mi tych z petli które są zaznaczone. nie wiem czy wiesz o co mi chodzi
nospor
Juz ci mowilem: iterowac masz po glownej petli. To ona bedzie generowac checkbox. Zas czy checkbox jest zaznaczyny czy nie to masz sprawdzac w tej malej tablicy. Ale tytlko sprawdzac a nie generowac caly checkbox
peklo
a czy selecta mam zrobic takiego samego do wyswietlania podgladu jak i do edycji?
nospor
PObierajacego wszytkie prawa jazdy dostepne? No raczej tak
peklo
zmieniłem na coś takiego ale wciąż dubluje mi checkboxy

  1. <?php
  2. try
  3. {
  4. $con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
  5. $con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
  6. $sql = 'SELECT o.id oid,p.id pid,p.id_ogloszenia pid_ogloszenia,p.id_prawo_jazdy pid_prawo_jazdy from ogloszenia o LEFT OUTER JOIN pj p on o.id=p.id_ogloszenia WHERE o.id=:id';
  7. $stmt = $con->prepare( $sql );
  8. $stmt -> bindValue(':id', $_GET['id'], PDO::PARAM_INT);
  9. $stmt -> execute();
  10. $ogloszenia = array();
  11. while($row = $stmt -> fetch())
  12. {
  13. if (!isset($ogloszenia[$oid]))
  14. $ogloszenia[$oid] = array(
  15. 'id' => $row['oid'],'pjk' => array());
  16. if (!empty($row['pid_prawo_jazdy']))
  17. $ogloszenia[$oid]['pjk'][$row['pid']]= array('id_prawo_jazdy' => $row['pid_prawo_jazdy']
  18. );
  19.  
  20. }
  21. foreach ($ogloszenia as $id_og => $ogloszenia)
  22. {
  23. echo $ogloszenia['id']
  24. foreach ($ogloszenia['pjk'] as $pj){
  25. ?>
  26. <input name='id_prawo_jazdy[]' id='id_prawo_jazdy[]' type='checkbox' class='style7a' value='1' <?php if ($pj['id_prawo_jazdy'] == 1) {echo 'checked';} ?>> AM
  27. <input name='id_prawo_jazdy[]' id='id_prawo_jazdy[]' type='checkbox' class='style7a' value='2' <?php if ($pj['id_prawo_jazdy'] ==2) {echo 'checked';} ?>> A1
  28. <input name='id_prawo_jazdy[]' id='id_prawo_jazdy[]' type='checkbox' class='style7a' value='3' <?php if ($pj['id_prawo_jazdy'] == 3) {echo 'checked';} ?>> A2
  29. <?php
  30. }
  31. }
  32. $stmt -> closeCursor();
  33. }
  34. catch(PDOException $e)
  35. {
  36. echo 'Wystapił błąd.u.';
  37. }
  38.  
  39. ?>
nospor
Przeciez ci pisalem, ze masz iterowac tylko i wylacznie po glownej petli i to ona w sobie ma generowac JEDEN checkbox. Druga tablica miala tylko i WYLACZNIE sluzyc do sprawdzenie czy dana wartosc juz w niej jest i na tej podstawie dodawach "zaznaczenie" checkboxa.
peklo
mam coś takiego ale teraz zaznacza mi 1 selecta a nie 3. juz nie wiem o co kaman
  1. <?php
  2. try
  3. {
  4.  
  5. $sql = 'SELECT o.id oid,p.id pid,p.id_ogloszenia pid_ogloszenia,p.id_prawo_jazdy pid_prawo_jazdy from ogloszenia o LEFT OUTER JOIN pj p on o.id=p.id_ogloszenia WHERE o.id=:id';
  6. $stmt = $con->prepare( $sql );
  7. $stmt -> bindValue(':id', $_GET['id'], PDO::PARAM_INT);
  8. $stmt -> execute();
  9. $ogloszenia = array();
  10. while($row = $stmt -> fetch())
  11. {
  12. if (!isset($ogloszenia[$oid]))
  13. $ogloszenia[$oid] = array('id' => $row['oid'],'pjk' => array());
  14.  
  15. if (!empty($row['pid_prawo_jazdy']))
  16. $ogloszenia[$oid]['pjk'][$row['pid']]= array('id_prawo_jazdy' => $row['pid_prawo_jazdy']
  17. );
  18.  
  19. }
  20. foreach ($ogloszenia as $id_og => $ogloszenia)
  21. {
  22. echo $ogloszenia['id']
  23. ?>
  24. <input name='id_prawo_jazdy[]' type='checkbox' value='1'<?php if ($ogloszenia['id_prawo_jazdy'] == 1) {echo 'checked';} ?>>AM
  25. <input name='id_prawo_jazdy[]' type='checkbox' value='2'<?php if ($ogloszenia['id_prawo_jazdy'] ==2) {echo 'checked';} ?>>A1
  26. <input name='id_prawo_jazdy[]' type='checkbox' value='3'<?php if ($ogloszenia['id_prawo_jazdy'] == 3) {echo 'checked';} ?>>A2
  27. <?php
  28. }
  29. $stmt -> closeCursor();
  30. }
  31. catch(PDOException $e)
  32. {
  33. echo 'Wystapił bł&plusmn;d.u.';
  34. }
  35.  
  36. ?>
trueblue
Selecta czy checkboxa(?)
$ogloszenia['id_prawo_jazdy'] jak rozumiem nie jest tablicą, lecz pojedynczą wartością, więc zaznacza jeden checkbox.

peklo
oj checkboxa oczywiscie.
generalnie chodzi o to że tutaj jest grupowanie wyników. Mam tabele1 z id=powiedzmy 1 i tabele2 z kilkoma id=1.

Czyli tabela1.id=tabele2.id gdzie w tabeli2 id o nr 1 jest powiedzmy 3 sztuki lub więcej. i teraz chcę to edytować i te wartości które są prawdziwe maja się zaznaczyć. Ale nie wiem jak to pogrupować
trueblue
  1. foreach ($ogloszenia as $id_og => $ogloszenie)
  2. {
  3. ?>
  4. <input name='id_prawo_jazdy[<?php echo $id_og;?>]' type='checkbox' value='1'<?php if ($ogloszenie['id_prawo_jazdy'] == 1) {echo 'checked="checked"';} ?>>AM
  5. <input name='id_prawo_jazdy[<?php echo $id_og;?>]' type='checkbox' value='2'<?php if ($ogloszenie['id_prawo_jazdy'] ==2) {echo 'checked="checked"';} ?>>A1
  6. <input name='id_prawo_jazdy[<?php echo $id_og;?>]' type='checkbox' value='3'<?php if ($ogloszenie['id_prawo_jazdy'] == 3) {echo 'checked="checked"';} ?>>A2
  7. <?php
  8. }
peklo
coś mi to nie działa sad.gif
trueblue
Pokaż kawałek tablicy $ogloszenia.
peklo
muszę teraz iśc po dziecko jak przyjde to wkleje tablice ogloszenia

Array ( [id] => 26 [nazwa_firmy] => [id_prawo_jazdy] => 1 [telefon] => [wyb_kategorii1] => Array ( ) [pjk] => Array ( [49] => Array ( [id_prawo_jazdy] => 1 ) [50] => Array ( [id_prawo_jazdy] => 2 ) [51] => Array ( [id_prawo_jazdy] => 3 ) ) [wyposazeniew] => Array ( ) )
trueblue
  1. foreach ($ogloszenia as $ogloszenie)
  2. {
  3. $pj=array();
  4. foreach($ogloszenie['pjk'] as $id=>$arr){
  5. $pj[]=$arr['id_prawo_jazdy'];
  6. }
  7. ?>
  8. <input name='id_prawo_jazdy[<?php echo $ogloszenie['id'];?>]' type='checkbox' value='1'<?php if(in_array(1,$pj)) {echo 'checked="checked"';} ?>>AM
  9. <input name='id_prawo_jazdy[<?php echo $ogloszenie['id'];?>]' type='checkbox' value='2'<?php if(in_array(2,$pj)) {echo 'checked="checked"';} ?>>A1
  10. <input name='id_prawo_jazdy[<?php echo $ogloszenie['id'];?>]' type='checkbox' value='3'<?php if(in_array(3,$pj)) {echo 'checked="checked"';} ?>>A2
  11. <?php
  12. }
peklo
dzięki za pomoc - punkt dla Ciebie. walczyłem z tym chyba ze 3 dni i nic nie wskorałem. Jeszcze raz dzięki
trueblue
Nie wiem czy się nie wkradł błąd w nazwie checkboxa.
Bo albo będzie tak jak podałem, albo:
  1. <input name='id_prawo_jazdy[<?php echo $id;?>]'

Czyli id_ogloszenie lub id_prawo_jazdy, ale to już bardziej zależy od Ciebie.
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.