scorpion10
3.12.2021, 09:13:40
Pobrane dane z bazy MySQL, wyświetlają się jako lista wyboru formularza i są pobierane w pętli while do pola <select><option>.
Chciałbym, w przypadku błędnego wpisu w formularzu, gdzie użytkownik wówczas musi poprawić wprowadzone dane, aby nie wprowadzać
tych samych danych ponownie, a tylko uzupełnić wymagane do poprawki.
Jak w takim przypadku zapamiętać stan wybranego pola <select> który dostał dane z pętli while.
Próbowałem zapamiętać w zmiennej SESSION i udało sie częściowo, ale przy kolejnym błędzie w tej samej sesji i poprawce
to zmienna SESSION również traciła wartość.
Czy ktoś mógł by podać jakiś przykład jak to należało by wykonać ?
aras785
5.12.2021, 12:12:21
dla 1 dodałem wartość domyślną.
<select name="example">
<option value="1"
<?= 1
=== (int
) $_POST['example'] ?
'selected' : (!isset($_POST['example']) ?
'selected' : ''); ?>>1</option>
<option value="2" <?= 2 === (int) $_POST['example'] ? 'selected' : ''; ?>>2</option>
<option value="3" <?= 3 === (int) $_POST['example'] ? 'selected' : ''; ?>>3</option>
<option value="4" <?= 4 === (int) $_POST['example'] ? 'selected' : ''; ?>>4</option>
</select>
scorpion10
6.12.2021, 07:42:22
No niestety, ale mi chodzi o dynamiczne pobranie wartości z bazy MySQL w pętli While, a nie przygotowanej listy w formularzu. Więc to trochę zmienia sposób rozwiązania problemu.
viking
6.12.2021, 07:54:36
W jaki sposób zmienia? Po wysłaniu formularza albo masz je gdzieś już zapisane, albo ponownie pobierasz wartość. Jeśli POST['example'] === wartość z bazy to robisz selected.
scorpion10
6.12.2021, 10:27:05
hmmm.. nie wiem , chyba mam słaby dzień, bo jakoś nie łapie jak to ma zadziałać w moim przypadku. Moj fragment który pobiera dane z bazy wyglada tak:
Kategoria:<select name="kategoria_new">
<?php
$db = db_connect();
$zapytanie_o_kategorie_sprzetu = " SELECT * FROM sl_kategoria ORDER BY nazwa_kategorii ASC ";
$wynik = $db->query($zapytanie_o_kategorie_sprzetu);
?>
<option value="
<?php $_SESSION[id_kategoria
] ?>">
<?php echo $_SESSION['kategoria'] ;?> </option>
<?php
while($rekord = $wynik->fetch_object()){
$ID_kateg=$rekord->ID_kategoria;
$kategoria= $rekord->nazwa_kategorii;
?>
<option value="
<?php echo $rekord->ID_kategoria;echo
"|".$rekord->nazwa_kategorii ?>">
<?php echo $kategoria?></option>
<?php
}
?>
</select>