Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zapis/ odczyt danych do Comboboxa
Forum PHP.pl > Forum > Przedszkole
mikajlo
Witam,
Nie byłem w stanie zawrzeć wszystkiego w tytule tematu więc kilka słów odnośnie szczegółów..

Chciałbym zrobić na stronie taki 'mechanizm':


tj. po rejestracji użytkownika i np. przy pierwszym wejściu użytkownika do swojego panelu, owy user powinien mieć możliwość wybrania wartości z comboBoxa i zapisania jej lub wprowadzenia nowej wartości do textLine i zapisania jej . (na początku comboBox powinien być ustawiony na pustą wartość). Następnie użytkownik powinien wybrać sobie jakąś wartość z comboBoxa lub dodać własną o ile nie znajdzie porządanej na isniejącej juz liscie..

Akutalnie jestem na etapie, że po wprowadzeniu nowej wartości przez użytkownika jest ona zapisywana w odpowiedniej tabeli i "przypisywana" danej osobie.. Natomiast nie wiem za bardzo jak wykonać taki myk, że jak user już ustawi jakąś wartość to po wejściu do swojego panelu ma ona zostać 'automatycznie' ustawiona na comboBoxie.. (tzn. powinna być jakoś zczytywana z bazy informacja, że właśną tą wartość posiada user..)

Jak to u mnie wygląda od strony kodu:
(pewnie to dopiero zacząć całości wymaganego kodu..)

  1. <? $clubN= mysql_query("select nazwa_klubu from kluby"); ?>
  2. <form action="" method="POST">
  3. Wybierz klub z listy :
  4. <select name="club" id="club">
  5. <option value=""></option>
  6. <? while($res= mysql_fetch_assoc($clubN))
  7. {
  8. echo '<option value='.$res['nazwa_klubu'].'>'.$res['nazwa_klubu'].'</option>';
  9. }
  10. ?>
  11. </select><br />
  12. Dodaj nowy klub: <input type="text" name="club" id="club"/><br />
  13. <td><input type="submit" value="Zapisz"/></td>
  14. <td><input type="hidden" name="submitClub" value="1"/></td>
  15. </form>


  1. <?php
  2. if (!isset($_POST['submitClub']))
  3. {
  4. $GLOBALS['TEMPLATE']['content'] = $form;
  5. }
  6. else
  7. {
  8. $user->clubName = $_POST['club'];
  9. $user->insertClub();
  10. }
  11. ?>


Z góry dzięki a każde wskazówki (dotyczące temtu).. wink.gif
nospor
Wskazówka (pseudokod):

If ($res['nazwa_klubu'] == wartosc usera z bazy ktora już ma) wowczas do option dopisz selected="selected"
mikajlo
@nospor - ok, w sumie fajnie mnie naprowadziłeś.. jeszcze delikatnie doszukałem klika rzeczy odnośnie zasotoswania możliwej składni php (bo tutaj mocno kuleje moja wiedza) i ten mechanizm działa smile.gif

Ciągnąc jednak temat dalej chciałbym uzyskać następujący efekt.. Poprzednio pisałem, że na razie (na stałe) mam oprogramowany textLine, który dodaje nowy klub do bazy.. Teraz np. po ponownym wejściu do panelu w comboBoxie jest ustawiany odpowiedni item..

Natomaist brakuje mi następującej funkcjonalności
- jeżeli textLine jest pusty i z comboBoxa został wybrany pusty (domyślny) item to należy wyświetlić komunikat, że operacja zapisu jest niemożliwa
- jeżeli textLine jest pusty i z comboBoxa wybrano wartość należy tą wartość uaktualnić w bazie
- jeżeli textLine jest zapisany i comboBox ma inną wartość niż pusty to również powinien jakoś poinformować o takiej sytuacji lub jakoś tej sytuacji inaczej zaradzić (np. jesli jest jakaś wartość wybrana w comboBox to czyść textLine.. tylko nie wiem czy to jest możliwie łatwe do osiągnięcia..)

Dla przypomnienia mój kod na tę chwile wygląda tak:

  1. <?php
  2. if (!isset($_POST['submitClub']))
  3. {
  4. $GLOBALS['TEMPLATE']['content'] = $form;
  5. }
  6. else #jeśli wcisnięto przycisk zapisz..
  7. {
  8. $user->clubName = $_POST['club'];
  9. $user->insertClub();
  10. }
  11. ?>


Pewnie trzeba dodać jakieś if i warunki ale nie mogę znaleźć jakieś konkretnej wizji..
Proszę o podpowiedzi (wzorując się na odpowiedzi nospor'a) (bądź jeszcze dokładniej opisując jaki kod powinien zostać użyty.. smile.gif )
nospor
Cytat
Natomaist brakuje mi następującej funkcjonalności
- jeżeli textLine jest pusty i z comboBoxa został wybrany pusty (domyślny) item to należy wyświetlić komunikat, że operacja zapisu jest niemożliwa
- jeżeli textLine jest pusty i z comboBoxa wybrano wartość należy tą wartość uaktualnić w bazie
- jeżeli textLine jest zapisany i comboBox ma inną wartość niż pusty to również powinien jakoś poinformować o takiej sytuacji lub jakoś tej sytuacji inaczej zaradzić (np. jesli jest jakaś wartość wybrana w comboBox to czyść textLine.. tylko nie wiem czy to jest możliwie łatwe do osiągnięcia..)

Sam właśnie tu napisałeś nam pseudokod. Czemu więc poprostu tego pseudokodu nie zamienisz na normalny kod jak zrobiłeś to z moim pseudokodem? Skoro za pierwszym razem poszło ci tak dobrze to i teraz nie powinno być większych problemów smile.gif
mikajlo
heh.. pewnie masz racje.. z tym, że jednak trochę "części" kodu by się przydały.. bo np. jak sprawdza się czy textLine jest pusty i czy został wybrany jakiś element z comboBoxa? A informacje przy zapisanie to ma się pojawiać w tzw. messageBoxie czy jakoś inaczej ? (jeśli tak, to jaką funkcje (kod) można zastosować?)

ps. dzisiaj dzień zleciał i praktycznie do tego nie usiadłem, ale już czuje że w/w przeze mnie informacje byłyby bardzo pomocne.. smile.gif
nospor
Cytat
. bo np. jak sprawdza się czy textLine jest pusty i czy został wybrany jakiś element z comboBoxa?
No ale to są podstawy formularzy.
google-> php + formularz
mikajlo
@nospor - dzięk! W sumie nie pomyślałem wtedy, żeby szukać rozwiązania po wyszukiwaniu informacji o formularzach... facepalmxd.gif
Poza tym przez dwa dni męczyłem się z głupim błędem przy wstawianiu value do option.. No ale w końcu sobie poradziłem..

Teraz miałbym kolejne dwa pytania.. Dla przypomnienia podam screen:


1) W sytuacji, że użytkownik chce zmienić klub i wybiera sobie nową wartość z comboBoxa, po przyciśnięciu zapisz wartość jest uaktualniana, ale w comboBoxie jest jeszcze stara wartość.. dopiero po odświeżeniu strony zostaje ustawiona nowa (właściwa) wartość.. (normalnie właściwą wartość na liście ustalam za pomocą funkcji która robi to co otrzymałem w ramach wskazówki: If ($res['nazwa_klubu'] == wartosc usera z bazy ktora już ma) wowczas do option dopisz selected="selected" ).
Próbowałem tą funkcję (jeszcze raz) wywołać bezpośrednio po uaktualnieniu informacji w bazie (czyli po przyciśnięciu zapisz) ale to nie chcę wtedy działać... Co można zrobić, aby bez odświeżania całej strony akutalna wartość została zaznaczona w ComboBoxie?

2) Odnosi się to do problemu o który pisałem wyżej a mianowicie o wyświetlaniu odpowiedniej informacji przy wypełnaniu danych na w/w screenie.. (if (coś) else (coś) ... ). Akutalnie działa to tak, że wyświetla się jakaś informacja w znacznikach <p> </p> i jest ona na "stałe" pokazywana na stronie.. Ja chciałbym uzyskać taki efekt, aby ta informacja po pojawieniu, znikała np. za 5 sekund.. Jak takie coś osiągnąć? (widziałem takie mechanizmy na różnych stronach.. ale może to działa na JavaScripcie, którego niestety też nie znam tongue.gif Dlatego proszę o jakieś przykłady, z którymi ewentualnie mógbym powaliczyć o modyfikacje wink.gif )

nospor
ad1) Aktualizacja bazy ma się odbywać przed pobieraniem danych a nie po. Wówczas dane pobrane będą aktualne od razu a nie dopiero po odświeżeniu
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.