Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Formularze $_POST
faleth
post
Post #1





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

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


Witam,

mam problem z formularzem. Z listy wyboru chcę usunąć rekord z Bazy danych. Chąc ułatwić sobie zadanie w liscie wpisałem kilka zmiennych i nie wiem jak to poźniej wstawić do zapytanie MySql. Oto moj select z formularza.

  1. echo '<select class="form-control" name = "usun">';
  2. echo '<option value="">Wybierz zabieg z listy który chcesz usunąć</option>';
  3. while($opcje = mysqli_fetch_assoc($rezultat))
  4. {
  5. echo '<option value="'.$opcje['data'].$opcje['numer_pola'].$opcje['roslina'].$opcje['nazwa_handlowa'].'">'."Data: ".$opcje['data']." Numer: ".$opcje['numer_pola'].' '
  6. ." Uprawa: ".$opcje['roslina']." Środek: ".$opcje['nazwa_handlowa'].'</option>';
  7. }
  8. echo '</select><br>';


po przesłaniu formularza $_POST przesyła mi

  1. usun 2016-05-25291pszenicaBoogie


można to jakoś rozdzielić?

Ten post edytował faleth 25.05.2016, 20:44:52
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


json_encode(['id'=>10]); zwróci {"id"=>"10"}, innymi słowy option będzie wyglądał tak <option value="{"id":"10"}">, i dlatego nie zadziała.

Najprostszym rozwiązaniem jest dodanie _ (lub innego znaku) do stringa np
  1. echo '<option value="'. $opcje['data'] . '_' . $opcje['numer_pola'] . '_' . $opcje['roslina'] . '_' . $opcje['nazwa_handlowa']'">'; //....
  2.  
  3. // a w pliku, w którym odbierasz rządanie
  4. $value = explode('_', $_POST['usun']);
  5. var_dump($value);


lub bardziej poprawnie, użycie unikalnego identyfikatora z bazy danych (IMG:style_emoticons/default/smile.gif)

Ten post edytował CuteOne 26.05.2016, 09:01:21
Go to the top of the page
+Quote Post
Szymciosek
post
Post #3





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


Cytat(CuteOne @ 26.05.2016, 09:59:23 ) *
json_encode(['id'=>10]); zwróci {"id"=>"10"}, innymi słowy option będzie wyglądał tak <option value="{"id":"10"}">, i dlatego nie zadziała.

Najprostszym rozwiązaniem jest dodanie _ (lub innego znaku) do stringa np
  1. echo '<option value="'. $opcje['data'] . '_' . $opcje['numer_pola'] . '_' . $opcje['roslina'] . '_' . $opcje['nazwa_handlowa']'">'; //....
  2.  
  3. // a w pliku, w którym odbierasz rządanie
  4. $value = explode('_', $_POST['usun']);
  5. var_dump($value);


lub bardziej poprawnie, użycie unikalnego identyfikatora z bazy danych (IMG:style_emoticons/default/smile.gif)


albo skorzystanie z htmlspecialchars i wrzucenie do niego JSONa i sądzę że bardziej czytelne niż klejenie stringa. Do tego dodając jakiś "znak specjalny" do tekstu uniemożliwiamy sobie użycie takiego znaku w wartościach w bazie

  1. $arr = [
  2. 'test' => 12,
  3. 'plant' => 'some plant'
  4. ];
  5.  
  6. $json = htmlspecialchars(json_encode($arr));
  7.  
  8. echo "<option value='" . $json . "'>test</option>";


Ten post edytował Szymciosek 29.05.2016, 10:48:01
Go to the top of the page
+Quote Post

Posty w temacie


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: 4.10.2025 - 15:58