Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 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
 
Start new topic
Odpowiedzi (1 - 15)
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?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 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 :/


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 10:31