Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pobieranie danych z pola select
Werno
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 15.06.2015

Ostrzeżenie: (0%)
-----


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. }


Ten post edytował Werno 15.06.2015, 13:28:16
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A cos takiego jak <FORM> to jest?
Go to the top of the page
+Quote Post
Werno
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 15.06.2015

Ostrzeżenie: (0%)
-----


Tak, ten te elementy należą do form:
  1. <form action="dodaj.php" method="post">
  2. </form>

wstawiłem tylko część skryptu
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No to zrob:
print_r($_POST);
i zobacz czy do skryptu po wyslaniu forma idzie to co ma isc czy nie.
Go to the top of the page
+Quote Post
Werno
post
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 15.06.2015

Ostrzeżenie: (0%)
-----


Sprawdziłem. Wyświetla 'Wykonawca_id' zamiast 'Osoba' ...
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No bo jako wartosc ustawiasz ID a nie tekst.... Formularz wysyla wartosci pol a nie ich etykiety. Przenosze na przedszkole.
Go to the top of the page
+Quote Post
Werno
post
Post #7





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 15.06.2015

Ostrzeżenie: (0%)
-----


Rozumiem, poprawiłem to aktualnie skrypt wywala wiadomość:

"Proszę podać przewodniczącego odbioru !"

Czyli nic nie odczytuje gdzie jest błąd w tym przypadku.
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
patwoj98
post
Post #9





Grupa: Zarejestrowani
Postów: 218
Pomógł: 16
Dołączył: 6.06.2014
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.
Go to the top of the page
+Quote Post
Werno
post
Post #11





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 15.06.2015

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/smile.gif) Mam nadzieje, że kolega nospor nie jest już na mnie obrażony (przynajmniej tak to odebrałem czytając twoje posty). Pozdro

Ten post edytował Werno 16.06.2015, 06:32:58
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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 :/
Go to the top of the page
+Quote Post
Werno
post
Post #13





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 15.06.2015

Ostrzeżenie: (0%)
-----


Ok, możesz zamknąć temat.
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.
Go to the top of the page
+Quote Post
Werno
post
Post #15





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 15.06.2015

Ostrzeżenie: (0%)
-----


Bo we wcześniejszej wersji skryptu te pole można było wypełnić "z palca".
Go to the top of the page
+Quote Post
nospor
post
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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 (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 10:30