Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Jak w jednym polu tabeli zapisać wiele wartości z pól checkbox?
fasolka
post 7.04.2008, 21:45:17
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 7.04.2008

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


witam

zaczynam raczkowac w tematyce php/mysql i napotkalem na problem
z checkbox-ami.
mam ich np 10 które sa listowane z tabeli
zaznaczam np.3 sztuki i chce zeby zapisaly mi sie do jednego pola w jednym rekordzie w tabeli 2
pojecia nie mam jak to zrobic więc proszę o pomoc

pozdro

Ten post edytował fasolka 8.04.2008, 13:52:11
Go to the top of the page
+Quote Post
MaestroS
post 7.04.2008, 21:50:06
Post #2





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 8.11.2006
Skąd: Kanagawa-ken, Japonia

Ostrzeżenie: (10%)
X----


tablice w nazwach pól po stronie formularza, tablica POST i funkcja implode().
Go to the top of the page
+Quote Post
fasolka
post 7.04.2008, 21:55:07
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 7.04.2008

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


jak to rowiązac jak mam cos takiego?

  1. <?
  2. if ($baza = mysql_connect("localhost","root","")) {
  3. if (mysql_select_db("test")) {
  4.  
  5. if (isset($_POST["dodaj"])) {
  6. for ($i=0;$i<count($_POST["dodaj"]);$i++) {
  7. $wyposazenie= $_POST["dodaj"][$i];
  8. mysql_query("INSERT INTO obrazki set wyposazenie='$wyposazenie'");
  9.  
  10.  
  11. }
  12. }
  13.  
  14. $wynik = mysql_query("SELECT * FROM wyposazenie");
  15. $wierszy = mysql_num_rows($wynik);
  16.  
  17.  
  18.  
  19. echo "<form action=\"wyposazenie.php\" method=\"post\">";
  20. for ($i=0;$i<$wierszy;$i++) {
  21. $wiersz = mysql_fetch_array($wynik);
  22. echo "<input type=\"checkbox\" name=\"dodaj[]\"
  23. value=\"{$wiersz["id"]}\" />{$wiersz["wyp"]}<br />";
  24. }
  25. echo "<input type=\"submit\" value=\" dodaj \" /></form>";
  26.  
  27.  
  28. } else echo "Nie można połączyć się z bazą";
  29. mysql_close($baza);
  30. } else echo "Nie można połączyć się z serwerem MySQL";
  31. ?>
Go to the top of the page
+Quote Post
Ociu
post 8.04.2008, 06:55:25
Post #4





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




  1. <?php
  2. $wyposazenie .= $_POST["dodaj"][$i];
  3. ?>
Go to the top of the page
+Quote Post
fasolka
post 8.04.2008, 07:33:20
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 7.04.2008

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


czesc ale
$wyposazenie .= $_POST["dodaj"][$i];


ta zmienna juz jest i wpisuje mi to jako nowy rekord

do bazy , mi chodzi zeby z kilku wybranych checkboxow wpisac to co zaznaczone do jednego pola (wyposazenie)w tym samym rekordzie.

pozdrawiam
Go to the top of the page
+Quote Post
isso
post 8.04.2008, 08:40:07
Post #6





Grupa: Zarejestrowani
Postów: 296
Pomógł: 32
Dołączył: 3.01.2005

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


jak dla mnie to można to zrobic na kilka sposobów smile.gif

Najlepszym jak dla mnie bedzie cos takiego...

Powiedzmy, że masz 5 checkboxów o jakiś tam nazwach kolejno a1, a2, a3, a4, a5, poprzez formularz wysyłasz je do pliku gdzie ma nastąpić zapis do bazy i wpisujesz je w taki sposób:

  1. <?php
  2. $wynik = $_POST['a1'].";".$_POST['a2'].";".$_POST['a3'].";".$_POST['a4'].";".$_POST['a5'];
  3. ?>

i wykonujesz zapytanie
  1. INSERT INTO...

Zakładając, że wszystkie checkboxy były zaznaczone masz więc w Tabeli X w Rekordzie Y na Polu Z takie cos: a1;a2;a3;a4;a5

A przypuśmy że zaznaczone są checkboxy a1,a3,a4 - to wtedy na Polu Z masz: a1;;a3;a4;

Jak wyciągać z bazy?
bardzo prosto... Bierzesz cały rekord poprzez
  1. SELECT Pole Z FROM Tabela X WHERE Rekord = Rekord Y;

a następnie używasz funkcji explode()" title="Zobacz w manualu PHP" target="_manual względem znaku ; i w ten sposób sprawa jest załatwiona smile.gif prosto i przyjaźnie smile.gif


--------------------
Go to the top of the page
+Quote Post
fasolka
post 8.04.2008, 09:09:55
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 7.04.2008

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


dzieki

rozumie ale nie moge jakos tego dopisac do tego co mam
jezusie nazarenski przeroslo chyba mnie to

jezeli moge cie prosic to jak dopisac to do tej tabeli :
  1. mysql_query("INSERT INTO obrazki set wyposazenie='$wyposazenie'");

bo checkboxy mam z pobierane z innej tabeli :
  1. $wynik = mysql_query("SELECT * FROM wyposazenie");
  2. $wierszy = mysql_num_rows($wynik);

  1. <?php
  2. echo "<form action=\"wyposazenie.php\" method=\"post\">";
  3. for ($i=0;$i<$wierszy;$i++) {
  4. $wiersz = mysql_fetch_array($wynik);
  5. echo "<input type=\"checkbox\" name=\"dodaj[]\"
  6. value=\"{$wiersz["id"]}\" />{$wiersz["wyp"]}<br />";
  7. }
  8. echo "<input type=\"submit\" value=\" dodaj \" /></form>";
  9. ?>

pozdrawiam

Ten post edytował fasolka 8.04.2008, 14:03:45
Go to the top of the page
+Quote Post
netmare
post 8.04.2008, 13:12:12
Post #8





Grupa: Zarejestrowani
Postów: 285
Pomógł: 37
Dołączył: 18.12.2007
Skąd: Łódź

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


a po co chcesz zapisać wartości checkoboxów w jednym polu?
Go to the top of the page
+Quote Post
fasolka
post 8.04.2008, 14:32:24
Post #9





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 7.04.2008

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


po co?

nie chce miec w jednym rekordzie 21 mozliwych albo nie wpisow

a nie widze innego rozwiazania

pozdrawiam
Go to the top of the page
+Quote Post
Pilsener
post 8.04.2008, 14:38:05
Post #10





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


  1. <input type="checkbox" name="dane[]" />
  2. <input type="checkbox" name="dane[]" />
- wrzucasz wszystko do tablicy "dane". Potem używasz serialize($dane) i zapisujesz w bazie (potem wystarczy unserialize i masz znowu tablicę). Jeśli jesteś wrogiem serializacji możesz użyć join (czy jak kto woli implode, ja wolę join, bo się dobrze kojarzy i jest krótsza) i explode.

  1. <?php
  2. echo "<input type=\"checkbox\" name=\"dodaj[]\"
  3. ?>
- nie prościej tak:

  1. <?php
  2. echo '<input type="checkbox" name="dodaj[]" '
  3. ?>
?

Wyświetl sobie tablicę post, żeby zobaczyć czy jest ok. Korzystaj z jakiegoś programu do bazy (Front, Navicat, czy choćby nieśmiertelnego PHPmyAdmin), wtedy szybciej się nauczysz.
Go to the top of the page
+Quote Post
specialplan
post 8.04.2008, 15:05:45
Post #11





Grupa: Zarejestrowani
Postów: 206
Pomógł: 21
Dołączył: 1.09.2006
Skąd: Edinburgh

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


Cytat(isso @ 8.04.2008, 08:40:07 ) *
jak dla mnie to można to zrobic na kilka sposobów smile.gif

Najlepszym jak dla mnie bedzie cos takiego...

Powiedzmy, że masz 5 checkboxów o jakiś tam nazwach kolejno a1, a2, a3, a4, a5, poprzez formularz wysyłasz je do pliku gdzie ma nastąpić zapis do bazy i wpisujesz je w taki sposób:

  1. <?php
  2. $wynik = $_POST['a1'].";".$_POST['a2'].";".$_POST['a3'].";".$_POST['a4'].";".$_POST['a5'];
  3. ?>

i wykonujesz zapytanie
  1. INSERT INTO...

Zakładając, że wszystkie checkboxy były zaznaczone masz więc w Tabeli X w Rekordzie Y na Polu Z takie cos: a1;a2;a3;a4;a5

A przypuśmy że zaznaczone są checkboxy a1,a3,a4 - to wtedy na Polu Z masz: a1;;a3;a4;

Jak wyciągać z bazy?
bardzo prosto... Bierzesz cały rekord poprzez
  1. SELECT Pole Z FROM Tabela X WHERE Rekord = Rekord Y;

a następnie używasz funkcji explode()" title="Zobacz w manualu PHP" target="_manual względem znaku ; i w ten sposób sprawa jest załatwiona smile.gif prosto i przyjaźnie smile.gif


A slyszales kiedys o implode?
Go to the top of the page
+Quote Post
fasolka
post 8.04.2008, 16:09:22
Post #12





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 7.04.2008

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


no nie słyszałem i z tym mam jeszcze kłopoty

po kombinowalem i wyszlo
zapisuje mi tak jak chciałem po ";"
tylko nie mam pojęcia teraz jak wyjąć za pomocą funkcji
explode()

z tego pola i z tego rekordu pojedyncze zapisy ktore sa oddzielone ";"
  1. SELECT Pole Z FROM Tabela X WHERE obrazki = questionmark.gifquestionmark.gif;
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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 05:58