![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 57 Pomógł: 0 Dołączył: 23.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Przeglądałem forum i nie znalazłem odpowiedzi na mój problem więc zadam tutaj moje pytanie. Wprowadzam do bazy dane z selecta multiple: [php:1:58597ab14a]<?php echo "<select name="dzial[]" size=10 multiple> <option value=1> Sport </option> <option value=2> Turystyka </option> <option value=3> Medycyna </option> </select>"; ?>[/php:1:58597ab14a] Do bazy zapisuje za pomocą: [php:1:58597ab14a]<?php $sql="update news set temat='$temat', tresc='$tresc', dzial="". implode(", ", $dzial) ."" where id='$artykul'"; ?>[/php:1:58597ab14a] W bazie wpis z tablicy ma postac: 1, 2, 5, 8 - w zaleznosci co sie zaznaczy oczywiście Problem pojawia się gdy chcę wyświelić w odpowiednim dziale newsa na podstawie tablicy dzial np. 1 - sport 2 - turystyka 3 - medycyna Gdy zaznacze w select te trzy działy to news powinien wyświetlić się w tych działach. Zrobiłem takie zapytanie aby pobrać dane do pierwszego działu ale nie działa: [php:1:58597ab14a]<?php $wynik = mysql_query ("SELECT * FROM news where implode(', ', $dzial)='1'"); ?>[/php:1:58597ab14a] natomiast to działa: [php:1:58597ab14a]<?php $wynik = mysql_query ("SELECT * FROM news where dzial='1'"; ?>[/php:1:58597ab14a] ale tylko wtedy gdy w bazie jest dodany jeden dział, przy dwóch i więcej już niestety skrypt się wywala. Proszę o pomoc |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zablokowani Postów: 655 Pomógł: 0 Dołączył: 28.11.2003 Skąd: Zagórz Ostrzeżenie: (80%) ![]() ![]() |
nie rozumie za bardzo. Ale sprubuj najpierw IF sprawdzic kture selecty sa zaznaczone i jesli kturys jest zaznaczony to przypisz zmiennej wartosc 1, reszcie zero i potem pododawaj wszytski do bazy.
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 57 Pomógł: 0 Dołączył: 23.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat nie rozumie za bardzo. Ale sprubuj najpierw IF sprawdzic kture selecty sa zaznaczone i jesli kturys jest zaznaczony to przypisz zmiennej wartosc 1, reszcie zero i potem pododawaj wszytski do bazy.
Do bazy dodaje wszystko jak trzeba, Problem mam z odczytywaniem danych z bazy, nie potrafię rozbić tego na częsci i porownac z ID działu. Gdy zaznacze tylko jeden dział to wstawia do bazy jedna cyferke wiec nie ma problemu z wyswietleniem danych na stronie, ale gdy zaznacze wiecej to wstawia do bazy w np. takiej postaci: 1, 2 Jak mam teraz sformułowac zapytanie aby w dziale zarówno 1 jak i 2 wyswietliło dane? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zablokowani Postów: 655 Pomógł: 0 Dołączył: 28.11.2003 Skąd: Zagórz Ostrzeżenie: (80%) ![]() ![]() |
Cytat Gdy zaznacze tylko jeden dział to wstawia do bazy jedna cyferke wiec nie ma problemu z wyswietleniem danych na stronie,
ale gdy zaznacze wiecej to wstawia do bazy w np. takiej postaci: 1, 2 czyli jednak cos dodajesz do bazy 8O -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 57 Pomógł: 0 Dołączył: 23.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat czyli jednak cos dodajesz do bazy 8O
napiszę inaczej: [php:1:a395d67d28]<?php echo "<form action="select.php?page=abc" method=post> <select name="liczba[]" size=10 multiple> <option value="1" SELECTED>1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit" value="send"> </form>"; if ($page==abc) { $luzik = implode(', ', $liczba); echo $luzik."<br>"; if ($luzik=="1") { echo "Pozycja 1<br>"; } if ($luzik=="2") { echo "Pozycja 2<br>"; } if ($luzik=="2") { echo "Pozycja 3<br>"; } if ($luzik=="2") { echo "Pozycja 4<br>"; } if ($luzik=="2") { echo "Pozycja 5<br>"; } } ?>[/php:1:a395d67d28] To skrypt który pozawala zaznaczyć kilka wartosci a po kliknieciu send wyswietla je. Nie działa ta dalsza czesc kodu z instrukcjami if - po prostu gdy się zaznaczy więcej opcji to nic nie wyswietla. Sprawdzcie sobie. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zablokowani Postów: 655 Pomógł: 0 Dołączył: 28.11.2003 Skąd: Zagórz Ostrzeżenie: (80%) ![]() ![]() |
dane z formularza musisz odebrac, jeli wysylasz POST to $_POST[]
sprubuj normalnie sprawdzic czy select jest ON czy nie [php:1:b1b755904a]<?php if ($_POST[sel1] == ON) { jest zaznaczony } ?>[/php:1:b1b755904a] -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 57 Pomógł: 0 Dołączył: 23.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat dane z formularza musisz odebrac, jeli wysylasz POST to $_POST[]
sprubuj normalnie sprawdzic czy select jest ON czy nie [php:1:1fd45e96c4]<?php if ($_POST[sel1] == ON) { jest zaznaczony } ?>[/php:1:1fd45e96c4] Kurde nie bardzo rozumiem |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 445 Pomógł: 0 Dołączył: 21.12.2003 Skąd: Tomaszów Lubelski Ostrzeżenie: (10%) ![]() ![]() |
Cytat dane z formularza musisz odebrac, jeli wysylasz POST to $_POST[]
sprubuj normalnie sprawdzic czy select jest ON czy nie [php:1:93c4bd9057]<?php if ($_POST[sel1] == ON) { jest zaznaczony } ?>[/php:1:93c4bd9057] [xml:1:93c4bd9057]<input type="hidden" name="sell" value="ON"> [/xml:1:93c4bd9057] [php:1:93c4bd9057]<?php if (isset($_POST['sell'] == "ON")) { echo "OK"; } else { echo "NIE"; } ?>[/php:1:93c4bd9057] EDIT: A co do problemu, to tkwi on w tym, że najpierw łączysz tablicę implode'm, a potem porównujesz uzyskany ciąg z jednym z możliwych (jeżeli tablica została połączona separatorem, to warunek nigdy nie będzie spełniony). Rozwiązaniem jest "przelecenie" całej tablicy przez jakąś pętlę, np.: [php:1:93c4bd9057]<?php foreach ($liczba as $zaw) { echo "Pozycja ".$zaw."<br />"; } ?>[/php:1:93c4bd9057] -------------------- Don't worry, be happy!
Gadu-Gadu: 1687784 Darmowe komponenty na stronę WWW - licznik księga gości shoutbox chat kalendarz data godzina imieniny IP host przeglądarka odwiedzającego ankieta sonda |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 57 Pomógł: 0 Dołączył: 23.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Rozwiązaniem jest "przelecenie" całej tablicy przez jakąś pętlę, np.:
[php:1:d81ee99561]<?php foreach ($liczba as $zaw) { echo "Pozycja ".$zaw."<br />"; } ?>[/php:1:d81ee99561] No i super, już jest nieżle, a może wiesz jak teraz porównać te wyniki "zaznaczenia" z np. danymi w innej tabelce ? |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 445 Pomógł: 0 Dołączył: 21.12.2003 Skąd: Tomaszów Lubelski Ostrzeżenie: (10%) ![]() ![]() |
Poprawiłem mój kod uwzględniając problemy jakie mogą wyniknąć z register_globals:
[php:1:716e88f5dc]<?php foreach ($_GET['liczba'] as $zaw) { echo "Pozycja ".$zaw."<br />"; // tu możesz dać jakiś warunek } ?>[/php:1:716e88f5dc] Przykład warunku: [php:1:716e88f5dc]<?php if ($jakas == $zaw) echo "costam"; ?>[/php:1:716e88f5dc] $jakas ma zawierać gotowy string do porównania. Możesz go wcześniej pobrać z bazy, albo jak tam chcesz. -------------------- Don't worry, be happy!
Gadu-Gadu: 1687784 Darmowe komponenty na stronę WWW - licznik księga gości shoutbox chat kalendarz data godzina imieniny IP host przeglądarka odwiedzającego ankieta sonda |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 57 Pomógł: 0 Dołączył: 23.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
Dzieki wielkie wsjo juz działa
![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 07:41 |