Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] 1. przekazanie danych w sesji z checkbox, 2. baza-relacja?
lnn
post
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 11
Dołączył: 17.12.2008
Skąd: LU

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


Witam
Mam 2 pytania.

Pierwsze z nich to w jaki sposob przekazywac w sesji dane np z checkboxów?
Czy za pomoca $_POST do ukrytego <input name="costam" type="hidden" /> ?

Drugie pytanie to jesli chce utworzyc jakis rekord w tabeli i pozniej zeby uzytkownik mial mozliwosc edycji tylko tego wpisu to czy musze stworzyc jakas relacje usera z tabela z tymi danymi?

Bo w przypadku administratora jest mniejszy problem bo po prostu wyciagam cala tabele i robie z nia co zechce.. a w przypadku okreslonego wpisu i zarejestrowanego do niego usera?

Z gory dzieki za pomoc smile.gif i rozwianie watpliwosci!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Cytat
Pierwsze z nich to w jaki sposob przekazywac w sesji dane np z checkboxów?
Czy za pomoca $_POST do ukrytego <input name="costam" type="hidden" /> ?


Sesje są m.in. po to, żeby nie trzeba było niczego przekazywać pomiędzy kolejnymi podstronami w ukrytych polach formularzy.

Drugie pytanie - najlepiej było by posiadać relację wiele (rekordów) - do jednego usera, tak aby każdy user mógł edytować ileś tam, ale tylko swoich rekordów.

czyli np.

tabela_rekord_usera:
id_tabela_rekord_usera (PK)
id_usera (FK)
jakis_wpis_do_edycji_1
jakis_wpis_do_edycji_2
jakis_wpis_do_edycji_3
(...)
jakis_wpis_do_edycji_n


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
lnn
post
Post #3





Grupa: Zarejestrowani
Postów: 361
Pomógł: 11
Dołączył: 17.12.2008
Skąd: LU

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


ok dzieki troche mi rozjasnilo sie smile.gif poczytam w ksiazce o tym,
a co jesli mam np cos takiego, mam jakies opcje do wyboru poprzez checkbox i jest np 10 checkboxow i user wybierze dajmy na to 5 z nich, czy da rade to zapisac do jednej komorki w tabeli i potem rozdzielic np funkcja foreach() czy kazda z tych opcji musze zapisac oddzielnie i potem wywolac te co maja flage true ?

Ten post edytował lnn 25.11.2009, 01:31:57
Go to the top of the page
+Quote Post
darko
post
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Cytat
czy da rade to zapisac do jednej komorki w tabeli i potem rozdzielic


Masz na myśli zapis do bazy?

Jeśli tak, to możesz zrobić zrobić coś takiego, formularz html:

  1. <form action="NAZWA_SKRYPTU.php" method="post">
  2. <input type="checkbox" name="chk-1" /><br />
  3. <input type="checkbox" name="chk-2" /><br />
  4. <input type="checkbox" name="chk-3" /><br />
  5. <input type="checkbox" name="chk-4" /><br />
  6. <input type="checkbox" name="chk-5" /><br />
  7. <input type="checkbox" name="chk-6" /><br />
  8. <input type="checkbox" name="chk-7" /><br />
  9. <input type="checkbox" name="chk-8" /><br />
  10. <input type="checkbox" name="chk-9" /><br />
  11. <input type="checkbox" name="chk-10" /><br />
  12.  
  13.  
  14. <input type="submit" value="zapisz" />
  15. </form>


i teraz niezależnie, co zaznaczy user, możesz "ściągnąć" numery zaznaczeń w php np. tak:
  1. $selected = array();
  2. foreach($_REQUEST as $k =>$v) {
  3. if(preg_match("/chk-/",$k) != 0) {
  4. $temp = explode("chk-",$k);
  5. $selected[]=$temp[1];
  6. }
  7. }
  8. if(count($selected) != 0) {
  9. // i teraz tablica $selected przechowuje numery zaznaczonych checkboxów, sprawdźmy:
  10. foreach($selected as $hit) {
  11. echo $hit."<br />";
  12. }
  13. }


Teraz możesz zapisać wszystkie elementy tablicy $selected do jednego wiersza w bazie, oddzielając je przecinkami, najpierw dodajemy przecinki:
  1. $saveme = "";
  2. if(count($selected) != 0) {
  3. foreach($selected as $h) {
  4. $saveme.=$h.",";
  5. }
  6. }
  7. if(strlen($saveme) != 0) {
  8. // usuwamy ostatni przecinek dla porządku:
  9. $saveme = substr($saveme, 0, strlen($saveme)-1);
  10. }
  11. // sprawdźmy:
  12. echo $saveme;
  13. // działa, teraz tylko insert do bazy, ale to zostawiam już Tobie


ps. jak wyciągniesz z bazy wartości pooddzielane przecinkami, to analogicznie usuwasz je explode
ps2. Acha! jak chcesz zapisać to w sesji to dajesz poprostu
  1. $_SESSION["selected"] = $saveme;
a jak odczytać, np. mieć z powrotem w tablicy, to
  1. foreach(explode(",",$_SESSION["selected"]) as $v) {
  2. $resaveme[]=$v;
  3. }
  4. // i tyle, $resaveme jest tablicą zawierającą wyciągnięte z sesji wartości zaznaczonych kiedyś tam (w momencie zapisania do sesji) checkboxów


Pozdrawiam!

Ten post edytował darko 25.11.2009, 02:32:11


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
lnn
post
Post #5





Grupa: Zarejestrowani
Postów: 361
Pomógł: 11
Dołączył: 17.12.2008
Skąd: LU

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


dzieki wielkie! smile.gif
a jeszcze gdybym chcial text pozamieniac na obrazki to jest jakis w miare szybki sposob np instrukcja warunkowa if z jakas dolaczona tablica wszystkich checkboxow?
cos pokombinuje moze sie uda, jak nie to bede pisal juz z gotowym kodem..
Go to the top of the page
+Quote Post
darko
post
Post #6





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Cytat
a jeszcze gdybym chcial text pozamieniac na obrazki to jest jakis w miare szybki sposob np instrukcja warunkowa if z jakas dolaczona tablica wszystkich checkboxow?


Sorry, późno już i wolno myślę, o co chodzi? Możesz rozwinąć myśl?


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
lnn
post
Post #7





Grupa: Zarejestrowani
Postów: 361
Pomógł: 11
Dołączył: 17.12.2008
Skąd: LU

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


Cytat(darko @ 26.11.2009, 00:26:43 ) *
Sorry, późno już i wolno myślę, o co chodzi? Możesz rozwinąć myśl?

chodzi mi o to, ze przy wypelnianiu formularza ktos zaznacza odpowiednie checkboxy, a pozniej na własciwej stronie przy wyciaganiu ich z bazy zeby pojawialy sie w postaci obrazow smile.gif (tzn zamiana textu na obraz)

a co do bazy to jesli np chce rozrozniac rekordy po id to lepiej stworzyc kilka tabel i polaczyc je relacjami czy stworzyc jedna z powiedzmy 20 kolumnami?
Go to the top of the page
+Quote Post
darko
post
Post #8





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Relacje zwłaszcza 1 do wielu są jak najbardziej pożądane, np.

tabela województwo
id_wojewodzwto
nazwa

tabela szkola
id_szkola
id_wojewodztwo
nazwa

tabela uczen
id_uczen
id_szkola
imie
nazwisko

Chcemy wyciągnąć nazwiska wszystkich uczniów, którzy chodzą do szkoły X o id = 2

  1. SELECT u.nazwisko FROM szkola sz, uczen u WHERE sz.id_szkola=2 AND u.id_szkola=sz.id_szkola


Chcemy wyciągnąć nazwę szkoly, znając id ucznia:

  1. SELECT sz.nazwa FROM szkola sz, uczen u WHERE u.id_uczen=5 AND u.id_szkola=sz.id_szkola


Teraz wyobraź sobie, że do tych tabel dojdzie jeszcze mnóstwo danych, np. wiek ucznia, informacja do której uczęszcza klasy, nazwisko patrona szkoły, rok budowy szkoły itd. itp. Wyobrażasz sobie trzymać to w jednej tabeli? Masakra. I właśnie tu wkraczają relacje smile.gif

Ad.1

  1. // $tab jest tablicą z numerami wyciągniętymi z bazy
  2. // magiczna zamiana tekstu na obraz może następować na wiele sposobów, oto jeden z nich (zakładam, że masz stałą liczbę obrazków przyporządkowaną do każdego numerka):
  3. // dla przykładu nadaję tablice $tab poniższe wartości:
  4. $tab = array(4,1,7,2,8);
  5. $images = array("text1.png","text2.png","text3.png","text4.png","text5.png","text6.png","text6.png","text8.png","text9.png","text10.png",);
  6. $max = count($tab);
  7. for($o=0;$o<$max;$o++) {
  8. echo "<img src=\"obrazki/".$images[$tab[$o]]."\" ><br />";
  9. }


ps. wciąż nie mam pewności czy dobrze Cię zrozumiałem dry.gif

Ten post edytował darko 26.11.2009, 01:17:26


--------------------
Nie pomagam na pw, tylko forum.
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 Aktualny czas: 22.08.2025 - 01:38