![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 21.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
robię prosty formularz w którym oprócz pól INPUT mam SELECT (multiple) z inputa wszystko się ładnie zapisuje do bazy, z SELECT-a tylko ostatnia wartość. Wyczytałem że muszę wysyłać dane jako tablice i tak też robię, niestety dalej coś jest nie tak w pliku wysyłającym dane: Kod <FORM ACTION='firma_dodana.php?id=dodaj' METHOD='POST'> <SELECT name='branza[]' size='4' multiple='multiple' > <optgroup label='Sprzęt'> <OPTION value='AGD'> AGD </OPTION> <OPTION value='RTV'> RTV </OPTION> </optgroup> </SELECT> <INPUT TYPE='submit' VALUE='Dodaj artykuł'> </form> w pliku odbierającym dane: Kod <? if ( $_GET[id] == dodaj ) { if (!empty($_POST['firma']) && !empty($_POST['branza']) && !empty($_POST['region']) && !empty($_POST['notatka'])) { require "connection.php"; connection(); } foreach ($_POST['branza'] as $branza_ => $wybrano ) { echo "$wybrano "; // tu wyświetla prawidłowo, ale jak zrobić żeby wpisywało to do bazy?? } /* próbowałem tak ale nic to nie daje $wybrane = foreach ($_POST['branza'] as $branza_ => $wybrano ) { echo $wybrano; }; */ mysql_query ("INSERT INTO firmy SET id='', firma='$_POST[firma]' , [b]branza='$wybrane',[/b] region='$_POST[region]', notatka='$_POST[notatka]'") or die(mysql_error()); echo "Firma została pomylnie dodana! <a href=spis_firm.php>Powrót do bazy firm</a>"; } else { echo "Wypełnij wszystkie pola formularza... <A HREF='javascript:history.back();'>wstecz</A>"; } ?> bardzo proszę o pomoc w rozwiązaniu tego problemu -------------------- Pozdrawiam,
Piotr |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 63 Pomógł: 0 Dołączył: 29.03.2005 Ostrzeżenie: (10%) ![]() ![]() |
spróbuj zapisać to tak:
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 28 Dołączył: 7.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Z tego co widze w Twojej petli foreach wykonuje się tylko echo $wybrano; bo tylko to masz w bloku, wykonuje sie to tyle razy ile masz elementów iza każdym razem zapisuje się do $wybrane i po wykonaniu wszystkich obrotów raz wykonuje sie mysql_query z obecnie przypisana wartościa czyli ostatnią. Spróbuj mysql_query równieź umieścić w bloku {} aby wykonywało sie za kazdym razem
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 21.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
spróbuj zapisać to tak:
Niestety nic to nie dało. W tym miejscu wcześniej zapomniałem zmienić $wybrane na $wybrano po moich testach. Z tego co widze w Twojej petli foreach wykonuje się tylko echo $wybrano; bo tylko to masz w bloku, wykonuje sie to tyle razy ile masz elementów iza każdym razem zapisuje się do $wybrane i po wykonaniu wszystkich obrotów raz wykonuje sie mysql_query z obecnie przypisana wartościa czyli ostatnią. Spróbuj mysql_query równieź umieścić w bloku {} aby wykonywało sie za kazdym razem Dzięki za sugestię, niestety nie działa to do końca prawidłowo bo dane zapisywane są wtedy do kolejnych komórek w bazie a nie do jednej komórki. PS. nie poddaje się, eksperymentuję dalej. -------------------- Pozdrawiam,
Piotr |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 63 Pomógł: 0 Dołączył: 29.03.2005 Ostrzeżenie: (10%) ![]() ![]() |
tutaj mam taki przykład, spróbuj go przerobić
if(isset($_POST['product_id'])) { $checkboxes = $_POST['product_id']; $string = implode($checkboxes,","); echo $string; } // SEND DATA $sql = "INSERT news_testimonial VALUES ('', '$customer_id', '$string', '$testimonial_title', '$testimonial_hyperlink', '$testimonial_rank')"; |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 21.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Niestety dalej nie działa.
Myślałem że uda mi się całą pętle przypisać do zmiennej i tą zmienną wstawić do SQLa ale się nie udało, nawet nie wiem czy tak się da. $petla = foreach ($_POST['branza'] as $branza_ ) { echo branza_ ; }; echo "petla"; -------------------- Pozdrawiam,
Piotr |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 28 Dołączył: 7.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli ma to być zapisane jako jeden rekord to zrób tak:
$wybrane .= foreach ($_POST['branza'] as $branza_ => $wybrano ) { echo $wybrano; }; Poprostu dodaj ta kropkę przed znakiem = a będzie dodawało na koncu ciągu. Wcześniej przed petlą ustaw $wybrane = '' aby było pustym ciągiem. Dodatkowo mozesz dodać echo $wybrano.' '; aby mieć spację między kolejnymi elementami. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 21.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za podpowiedź, ale dalej coś nie tak ...
zwraca Parse error: syntax error, unexpected T_FOREACH in /home/test/ftp/wiz/include/firma_dodana.php on line 14 -------------------- Pozdrawiam,
Piotr |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 419 Pomógł: 42 Dołączył: 12.08.2008 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
A mogę wiedzieć czemu nie zrobisz tego w ten sposób ?:
A przede wszystkim to bym sprawdził, czy jak rzeczywiście wybierze parę opcji to czy one się znajdą w zmiennej $_POST['branza'] (zrób np. za pomocą print_r($zmienna)) Ten post edytował golaod 29.08.2008, 14:47:09 |
|
|
![]() ![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 21.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Działa, jedynie zrobiłeś błąd
branza='".implode(' ',$_POST['branza')."' powinno być branza='".implode(' ',$_POST['branza'])."' cały kod, gdyby kiedyś miało się przydać to wstawiam go tu ![]()
-------------------- Pozdrawiam,
Piotr |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 28 Dołączył: 7.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
To co opisywałem wcześniej miało wyglądać
foreach ($_POST['branza'] as $branza_ => $wybrano ) $wybrane .= $wybrano.' '; Ten post edytował tomm 29.08.2008, 15:01:31 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 419 Pomógł: 42 Dołączył: 12.08.2008 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Mała literówka.
Gratulujemy rozwiązania problemu i wstawienia kodu by ktoś w przyszłości mógł z niego skorzystać. Mod: Zamykamy zamykamy ![]() @edit tomm: Jaki sens jest korzystanie z echo podczas przypisywania do zmiennej ? Ten post edytował golaod 29.08.2008, 15:00:52 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 28 Dołączył: 7.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Mój błąd - poprawiony w poscie powyżej ( a właściwie 2 wyżej)
|
|
|
![]() ![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 21.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Bardzo proszę o niezamykanie tego tematu, bo jeszcze będę miał zapewne pytania odnośnie odczytu tych danych i ich modyfikacji w bazie. Jak modyfikować i kasować pojedyncze dane wprowadzane przez INPUT to wiem, ale z multiple będę musiał pokombinować i zapewne zadam tu jeszcze jakieś pytania w tej sprawie.
-------------------- Pozdrawiam,
Piotr |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 10:08 |