Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Jak w jednym polu tabeli zapisać wiele wartości z pól checkbox?
Forum PHP.pl > Forum > Przedszkole
fasolka
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
MaestroS
tablice w nazwach pól po stronie formularza, tablica POST i funkcja implode().
fasolka
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. ?>
Ociu
  1. <?php
  2. $wyposazenie .= $_POST["dodaj"][$i];
  3. ?>
fasolka
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
isso
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
fasolka
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
netmare
a po co chcesz zapisać wartości checkoboxów w jednym polu?
fasolka
po co?

nie chce miec w jednym rekordzie 21 mozliwych albo nie wpisow

a nie widze innego rozwiazania

pozdrawiam
Pilsener
  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.
specialplan
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?
fasolka
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;
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.