Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Checkbox w mysql
Forum PHP.pl > Forum > Przedszkole
szczalpior
Witam.
Mam problem odnosnie dodania wielu checkboxow do bazy mysql. Moj kod w html wyglada nastepujaca:
HTML
  1. <p>Rodzaj kuchni:<br>
  2. <input type="checkbox" NAME="kuchnia" VALUE="bałkańska">bałkańska
  3. <input type="checkbox" NAME="kuchnia" VALUE="chińska">chińska
  4. <input type="checkbox" NAME="kuchnia" VALUE="egzotyczna">egzotyczna
  5. <input type="checkbox" NAME="kuchnia" VALUE="europejska">europejska

php
  1. <?php
  2. "INSERT INTO restauracje SET id='$id', adres='$adres',miejscowosc='$miejscowosc', wojewodztwo='$wojewodztwo', telefon='$telefon', email='$email',www='$www', nazwa='$nazwa', opis='$opis', kuchnia='$kuchnia', udogodnienia='$udogodnienia', zdjecia=".$ilzdj.";";
  3. ?>

MYSQL
  1. kuchnia|varchar(20)|atrybuty-brak|Null-tak|domyslnie-NULL|dodatkowy-brak

W bazie mysql mam utworzone pole kuchnia. Problem polege wtym, ze po zaznaczeniu kilku checkboxow dodaje mi tylko pierwszy ktory zaznacze. W jaki sposob nalezy to zrobic, aby dodawalo np 2 lub 3 ? Czy trzeba cos zmodyfikowac w bazie mysql czy w php?
Prosze o pomoc.
Probowalem, ale nie chce dzialac.
Moj kod w mysql jest:
  1. <?php
  2. $kuchnia=implode(',',$_GET['kuchnia']);
  3. $ilzdj = 0;
  4. for ($i=1; $i<=count($zdjecia); $i++) if ((isset($zdjecia[$i])) && ($zdjecia[$i] != "")) $ilzdj++;
  5. $polaczenie = mysql_connect ("127.0.0.1","etrip","szczalpi");
  6. mysql_select_db (etrip_etrip);
  7. $zapytanie = "INSERT 
  8. INTO restauracje
  9.  SET id='$id', adres='$adres',miejscowosc='$miejscowosc', wojewodztwo='$wojewodztwo', telefon='$telefon', email='$email',www='$www', nazwa='$nazwa', opis='$opis', kuchnia='$kuchnia', udogodnienia='$udogodnienia', zdjecia=".$ilzdj.";";
  10. $wykonaj = mysql_query ($zapytanie);
  11. $id = mysql_insert_id($polaczenie);
  12. ?>



poprawiam
---
nospor


Moze w zlym miejscu wstawiam implode questionmark.gif
nospor
musisz dla checkboxow nadac nazwe tablicową: kuchnia[]
  1. <input type="checkbox" NAME="kuchnia[]" VALUE="bałkańska">bałkańska
  2. <input type="checkbox" NAME="kuchnia[]" VALUE="chińska">chińska
  3. <input type="checkbox" NAME="kuchnia[]" VALUE="egzotyczna">egzotyczna
  4. <input type="checkbox" NAME="kuchnia[]" VALUE="europejska">europejska


potem laczysz tablice poporzez implode:

  1. <?php
  2. $kuchnia=implode(',',$_POST['kuchnia']);
  3. //tu se reszte dopisz
  4. ?>


ps: temat z mysql ma niewiele wspolnego. przenosze
szczalpior
Ale co dopisac? Taki w php, az dobry nie jestem, biggrin.gif
nospor
no przeciez ja ci napisalem. podstawiam ci pod zmienna $kuchnia juz twoej chceckoboxy. ty juz nic masz nie robic. przeciez zmienna $kuchnia juz wstawiasz do zapytania
szczalpior
zaraz sprawdze ale wydaje mi sie ze nie dzialalo
Gość_szczalpior
Wkleilem ten fragment kodu, ktory napisales ale nie chce dzialac. To pierwszego post dodalem fragment kontu mysql. Mozesz zobaczyc czy go wkleilem w dobrym miejscu?
Pozdrawiam.
nospor
ale nie widze bys zmienil kod html. miales przeciez nadac name z [] na koncu, tak jak ci podalem.
a ty formularz getem wysylasz? Bo pobierasz z geta wartosci.

ps: i uzywaj wlasciwego bbcode

ps2: nastepnym razem nie pisz posta ze zaraz sprawdzisz, bo gdy juz sprawdzisz, to musisz walic jako gosc by podbic temat
szczalpior
Tak dodalem nawiasy teraz kod wyglada tak:
  1. <input type="checkbox" NAME="kuchnia[]" VALUE="bałkańska">bałkańska
  2. <input type="checkbox" NAME="kuchnia[]" VALUE="chińska">chińska
  3. <input type="checkbox" NAME="kuchnia[]" VALUE="egzotyczna">egzotyczna
  4. <input type="checkbox" NAME="kuchnia[]" VALUE="europejska">europejska

KOD DODAJACY:
  1. <?php
  2. $kuchnia=implode(',',$_GET['kuchnia']);
  3. $ilzdj = 0;
  4. for ($i=1; $i<=count($zdjecia); $i++) if ((isset($zdjecia[$i])) && ($zdjecia[$i] != "")) $ilzdj++;
  5. $polaczenie = mysql_connect ("127.0.0.1","etrip","szczalpi");
  6. mysql_select_db (etrip_etrip);
  7. $zapytanie = "INSERT INTO restauracje SET id='$id', adres='$adres',miejscowosc='$miejscowosc', wojewodztwo='$wojewodztwo', telefon='$telefon', email='$email',www='$www', nazwa='$nazwa', opis='$opis', udogodnienia='$udogodnienia', zdjecia=".$ilzdj.";";
  8. $wykonaj = mysql_query ($zapytanie);
  9. $id = mysql_insert_id($polaczenie);
  10. mkdir("zdjecia/".$id, 0777);
  11. for ($i=1, $j=1; $i<=$ilzdj; $i++, $j++)
  12. {
  13. while ((!isset($zdjecia[$j])) || ($zdjecia[$j] == "")) $j++;
  14. copy("$zdjecia[$j]", "zdjecia/".$id."/".$i.".jpg");
  15. }
  16. mysql_close($polaczenie);
  17. echo "<BR>Dane dodane prawidłowo ! Dziękujemy za wypełnienie formularza !";
  18.  
  19. ?>
  20. <form method="get" action="dodaj.php">

Ja wysylam get - form method. Wstawiajac twoj kod wywala mi blad, ze sa zle argumenty w implode. Nie wiem gdzie lezy problem.
nospor
ja w twoim html'u nigdzie nie widze formularza. cos schrzaniles. masz tu prosty kod, ktory dziala. porownaj se ze swoim kodem:
  1. <form method="get">
  2. <input type="checkbox" NAME="kuchnia[]" VALUE="bałkańska">bałkańska
  3. <input type="checkbox" NAME="kuchnia[]" VALUE="chińska">chińska
  4. <input type="checkbox" NAME="kuchnia[]" VALUE="egzotyczna">egzotyczna
  5. <input type="checkbox" NAME="kuchnia[]" VALUE="europejska">europejska <input type="submit" />
  6. </form>
  7. <?
  8.  
  9. $kuchnia=implode(',',$_GET['kuchnia']);
  10. print_r($kuchnia);
  11. ?>
szczalpior
Moze troszke sie nie rozumiemy. Otoz to, ten kod jest zapisany w pliku formularz.php

  1. <input type="checkbox" NAME="kuchnia[]" VALUE="bałkańska">bałkańska
  2. <input type="checkbox" NAME="kuchnia[]" VALUE="chińska">chińska
  3. <input type="checkbox" NAME="kuchnia[]" VALUE="egzotyczna">egzotyczna
  4. <input type="checkbox" NAME="kuchnia[]" VALUE="europejska">europejska
  5. <form method="get" action="dodaj.php">

w drugim pliku o nazwie dodaj.php mam :
  1. <?php
  2. $kuchnia=implode(',',$_GET['kuchnia']);
  3. $ilzdj = 0;
  4. for ($i=1; $i<=count($zdjecia); $i++) if ((isset($zdjecia[$i])) && ($zdjecia[$i] != "")) $ilzdj++;
  5. $polaczenie = mysql_connect ("127.0.0.1","etrip","szczalpi");
  6. mysql_select_db (etrip_etrip);
  7. $zapytanie = "INSERT INTO restauracje SET id='$id', adres='$adres',miejscowosc='$miejscowosc', wojewodztwo='$wojewodztwo', telefon='$telefon', email='$email',www='$www', nazwa='$nazwa', opis='$opis', udogodnienia='$udogodnienia', zdjecia=".$ilzdj.";";
  8. $wykonaj = mysql_query ($zapytanie);
  9. $id = mysql_insert_id($polaczenie);
  10.  
  11. ?>
juz nie bede podawal calego kodu, kazdy wie o co chodzi.
Otoz to. Ja chcialbym, aby po wybraniu rodzaju kuchni np: chinska i egzotyczna bylaby dodana do bazy mysql. Wczesniej jak sam robilem to dodaje mi tylko pierwszego checkboxa, ktorego zaznacze, ale juz nastepnego nie chce wgrac do bazy danych. Glownie chodzi mi, aby bylaby mozliwosc dodania dwoch lub wiecej rodzaji kuchni np: po przecinku. Chyba tyle juz starczy tego opisywania.
nospor
no i przeciez ja ci taki kod podaje,co pobiera kilka checkboxow, a ty uparcie swoje. ty masz tylko go wsadzic do swiebie. a ze go źle wsadzasz to nie moja wina.

w twoim kodzie html formualrza zaczyna sie po checkboxach. przeciez to totalna bzdura.

Podalem ci przyklad takiego formualrza, podalem ci jak odebrac dane. ty musisz tylko dopisac na koncu mojego skryptu swoje wstawianie do bazy. Czemu tego nie kumasz?
szczalpior
Wejdz na strone restauracje.e-trip.pl/formularz.php i zobacz jak to wyglada. Sadze, ze teraz w koncu sie zrozumiemy.
nospor
no i super. zmieniles forma na posta. ale nie zamykasz formularza. nigdzie nie ma </form>

teraz implode musisz robic na $_POST a nie na $_GET. Nie rozumiem czemu ma ci to teraz nie dzialac?
szczalpior
Tak wiem. Juz do tego doszedlem troszke wczesniej, ale dzieki za okazala pomoc.
Pozdrawiam
GET a POST - a tyle zamieszania z mojej strony... winksmiley.jpg
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.