Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] 1. przekazanie danych w sesji z checkbox, 2. baza-relacja?
Forum PHP.pl > Forum > Przedszkole
lnn
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!
darko
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
lnn
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 ?
darko
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!
lnn
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..
darko
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?
lnn
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?
darko
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
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.