Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie danych z pola select
Forum PHP.pl > Forum > Przedszkole
Werno
Witam, od jakiegoś czasu zmagam się z następującym tematem:

1. Pobieramy dane z bazy danych
2. Wstawiamy dane do pola formularza (select)
3. Odczytujemy tą wartość
4. Zapisujemy odczytaną wartość w bazie danych

Aktualnie zatrzymałem się na pkt. 3. Skrypt nie odczytuje wartości pola formularza przez co nie mogę dodać rekordu w bazie danych. Proszę o podpowiedź jak odczytać pole select (name=prze) i zapisać
wartość w zmiennej $PRZ.


POBRANIE DANYCH Z BAZY I WSTAWIENIE ICH DO POLA SELECT:
  1. <select name="prze" class="rejprawa"><option></option>
  2. <?php // Pobiera wszystkich możliwych przewodniczących.
  3. $q = "SELECT Przewodniczacy_id, Osoba FROM przewodniczacy ORDER BY Osoba ASC";
  4. $r = mysqli_query ($dbc, $q);
  5. if (mysqli_num_rows($r) > 0) {
  6. while ($row = mysqli_fetch_array ($r, MYSQLI_NUM)) {
  7. echo "<option value=\"$row[0]\"";
  8. // Sprawdza czy zapamiętać wybraną pozycję menu.
  9. if (isset($_POST['prze']) && ($_POST['prze'] == $row[0]) ) echo ' selected="selected"';
  10. echo ">$row[1]</option>\n";
  11. }
  12. } else {
  13. echo '<option>Dodaj nowego przewodniczącego.</option>';
  14. }
  15. ?>
  16. </select>

  1. SPRAWDZENIE POLA SELECT:
  2. // Sprawdza przewodniczącego.
  3. if (preg_match ('/^[0-9\/\a-zęółśążźćńA-ZĘÓŁŚĄŻŹĆŃ\']{2,50}$/', $_POST['prze'])) {
  4. $PRZ = mysqli_real_escape_string ($dbc, $_POST['prze']);
  5. } else {
  6. echo '<div class="error">Proszę podać przewodniczącego odbioru !</div>';
  7. }
nospor
A cos takiego jak <FORM> to jest?
Werno
Tak, ten te elementy należą do form:
  1. <form action="dodaj.php" method="post">
  2. </form>

wstawiłem tylko część skryptu
nospor
No to zrob:
print_r($_POST);
i zobacz czy do skryptu po wyslaniu forma idzie to co ma isc czy nie.
Werno
Sprawdziłem. Wyświetla 'Wykonawca_id' zamiast 'Osoba' ...
nospor
No bo jako wartosc ustawiasz ID a nie tekst.... Formularz wysyla wartosci pol a nie ich etykiety. Przenosze na przedszkole.
Werno
Rozumiem, poprawiłem to aktualnie skrypt wywala wiadomość:

"Proszę podać przewodniczącego odbioru !"

Czyli nic nie odczytuje gdzie jest błąd w tym przypadku.
nospor
A skad ja mam wiedziec co ty tam poprawiles?

Poza tym, ze ci to ID sie wysylalo a nie nazwa to wlasnie tak mialo byc. Po grzyba ci tam nazwa? To ID identyfikuje rekord a nie nazwa
patwoj98
Ja bym na pewno zmienił i zrobił selecta tylko jeżeli num_rows >0, a else wstawił
  1. <input type="text" name="przewodniczacy" placeholder="Wprowadź nowego przewodniczącego" />


Drugie - warunki w ifie są bez sensu. Wystarczy drugi tylko. Pierwszy nic nie zmieni bo cały if opiera się na tym czy istnieje ta zmienna w poście.

Przeglądnąłem cały temat i nie widzę, aby nospor lub ktoś inny pytał co zmienna $_POST przynosi i skąd.
nospor
Cytat
ktoś inny pytał co zmienna $_POST przynosi i skąd.
To przejrzyj temat jeszcze raz... przeciez to jest wyjasnione, a o tym ze w kodzie widac juz nie wspomne.
Werno
Znalazłem przyczynę. Do zmiennej $PRZ nie przypisywała się żadna wartość ponieważ źle napisałem ograniczenie

  1. if (preg_match ('/^[0-9\/\a-zęółśążźćńA-ZĘÓŁŚĄŻŹĆŃ\']{2,50}$/', $_POST['prze'])) {
  2. $PRZ = mysqli_real_escape_string ($dbc, $_POST['prze']);
  3. else {
  4. echo '<div class="error">Proszę podać przewodniczącego odbioru !</div>';
  5. }


powinno być:

  1. if (preg_match ('/^[0-9\/\a-zęółśążźćńA-ZĘÓŁŚĄŻŹĆŃ\']{1,50}$/', $_POST['prze'])) {


Wartość nie przypisywała się do zmiennej $PRZ ponieważ 'Wykonawca_id' jest liczbą jednocyfrową. Teraz już jest OK. Dzięki za pomoc smile.gif Mam nadzieje, że kolega nospor nie jest już na mnie obrażony (przynajmniej tak to odebrałem czytając twoje posty). Pozdro
nospor
Kurcze, co jest? Ktory moj post wskazuje, ze jestem na Ciebie obrażony? Ludzie kochani, nie mam co robić tylko sie obrażać na Was, normalnie to jest sens mojego życia*





*wole wyjasnic, to była ironia, bo zaraz znowu napiszesz, ze sie obrazilem do kwadratu :/
Werno
Ok, możesz zamknąć temat.
nospor
Cytat
Wartość nie przypisywała się do zmiennej $PRZ ponieważ 'Wykonawca_id' jest liczbą jednocyfrową.

Skoro to jest liczba, to po co w ogole tam uzywasz wyrażenia regularnego i to na dodatek sprawdzajacego wystepowanie liter? *



*I nie, pisząc tego posta rownież nie jestem obrażony.
Werno
Bo we wcześniejszej wersji skryptu te pole można było wypełnić "z palca".
nospor
Tak też sie domyslilem, wolalem miec jednak pewnosc.
Skoro zmienila sie wartosc, to wypadaloby zrobic tez i sprawdzanie normalne. Ale to Twoja sprawa. Boje sie wtrącac bo znowu ocos mnie oskarżysz wink.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.