Skocz do zawartości

radio value


motorider

Rekomendowane odpowiedzi

Mam pole opcji typu radio, nazwy pól tworzę dynamicznie nadając im id pobierane z bazy. Wartość pola chciałbym zapisać do sesji, ale zapisuje się tam wartość id, a nie "zatwierdz" lub "odrzuc". Czy da się zrobić coś tego typu $_SESSION['id']=id.value ?

echo <input type="radio" name='; echo "$id"; echo ' value="zatwierdz"/>zatwierdz';
echo <input type="radio" name='; echo "$id"; echo ' value="odrzuc"/>odrzuc';

$_SESSION['id']=$id;

Odnośnik do komentarza
Udostępnij na innych stronach

Po wybraniu opcji dane mają być zapisywane do nowej tabeli

ale po wysłaniu POST'a (zatwierdzeniu formularza), tak? Jeśli tak, to trzeba po prostu odczytać tablicę _POST.

PS. Taki rzeczy, jeśli oczywiście dobrze zrozumiałem, robi się raczej przyciskami <input type="submit" value="Zatwierdz ...

Odnośnik do komentarza
Udostępnij na innych stronach

W każdym wierszu są dwa pola radio i jeden button submit, po wybraniu opcji i kliknieciu w button dane są zapisywane do tabeli (pole opcji i button zostają ustawione na disabled) i robię to samo z kolejnymi wierszami. Ewentualnie mogę mieć jeden submit na caly formularz ale i tak w każdym wierszu muszę mieć dwa pola radio dla każdego wiersza.

Odnośnik do komentarza
Udostępnij na innych stronach

Żeby odczytać z tablicy post każde radio musi mieć inną nazwę, nigdy nie wiem ile wierszy zwróci select więc pod nazwy przypisywałem wartości id z selecta.

Ogólne założenie jest takie: select zwraca ileś wierszy spełniających jakiś warunek, dane w jakiś uporządkowany sposób trzeba zaprezentować użytkownikowi (do tej pory wypisywałem je w tabeli) i dać mu możliwość dopisania nowych wartości do każdego wiersza a następnie wszystko zapisać do nowej tabeli.

Odnośnik do komentarza
Udostępnij na innych stronach

Ideą radio butonów jest przecież, to że w grupie każdy ma taką samą nazwę "name"

a więc jeśli będziesz miał

<input type="radio" name="id1" value="Zatwierdz">

<input type="radio" name="id1" value="Odrzuc">

<input type="radio" name="id2" value="Zatwierdz">

<input type="radio" name="id2" value="Odrzuc">

... itd

to POST['id1'] zwroci wcisniete radio value Zatwierdz albo Odrzuc, podobnie reszta POSTów

Jeśli nie wiesz ile masz id, to możesz przelecieci całą tablicę _POST foreachem albo whilem i 'wydłubać' odpowiednie (w moim przykladnie zaczynajace sie od stringu 'id').

np: foreach( $_POST as $k => $v ){ if( stricmpn($k, "id", 2)===0 ) ... }

Odnośnik do komentarza
Udostępnij na innych stronach

Problem w tym, że stosując moja pętlę do wypisywania nie mogę wypisać przy każdym wierszu opcji radio z inna nazwą więc jako nazwę stosuję id, ale wtedy nie zapisuje wartości z radio do sesji.

while ($rekord = mysql_fetch_assoc($wynik))
{
echo "<tr>";
echo "<td>";echo $rekord['id_kandydata']; echo "</td>";
echo "<td>";echo $rekord['imie']; echo "</td>";
echo "<td>";echo $rekord['nazwisko']; echo "</td>";
echo "<td>";
    echo '<input type="radio" name='; echo "$id_kandydata"; echo ' value="zatwierdz"/>zatwierdz';
    echo '<input type="radio" name='; echo "$id_kandydata"; echo ' value="odrzuc"/>odrzuc';
    $_SESSION['radio']=$id_kandydata;
echo "</td>";
echo "<td>";
    $wyslij="wyslij_";
    $w=$wyslij.$id_kandydata;
    $_SESSION['w']=$w;
    echo '<input type="submit" name="'; echo "$w"; echo '" value="Wyślij" '; echo '/>';
echo "</td>";
echo "</tr>";
}

Odnośnik do komentarza
Udostępnij na innych stronach

Ja cały czas nie 'czuję' Twojego problemu ale może pomoże Ci takie spostrzeżenie.,

Może nie trzeba zapisywać id_kandydata w sesji, może można przesłać go POST'em w <input name="jakis_name" type="hidden" value="<? echo $id_kandydata; ?>">

PS. Ja się wystrzegam sesji (nie stosuje ich od dawien dawna) a nie zdażyła mi się formatka, żeby sobie z nią nie poradzić POST'ami

, a trochę niebanalnych ich już zrobiłem. Sesje może i są pewnym ułatwieniem ale wszystko można zrobić odpowiednim POST'em

Odnośnik do komentarza
Udostępnij na innych stronach

Żeby odczytać z tablicy post każde radio musi mieć inną nazwę, nigdy nie wiem ile wierszy zwróci select

Robiąc to jako tablica

<input type="radio" name="radio[1]" value="Zatwierdz" />
<input type="radio" name="radio[1]" value="Odrzuc" />

<input type="radio" name="radio[2]" value="Zatwierdz" />
<input type="radio" name="radio[2]" value="Odrzuc" />
...
itd

Mozesz potem to odczytać np w foreach($_POST['radio'] as $a => $;)

I nie musisz znać ilości.

ps

ale przyznam sie że podchodze do tego postu juz trzeci raz i dalej nie wiem o co chodzi.

Nie rozumiem dlaczego sesje chcesz zapisać w momencie budowania formularza - czyli jeszcze przed czynnościami ktore ma wykonać user? Bardziej logiczne mi sie wydaje zapisywanie czegokolwiek do sesji dopiero wtedy gdy user wyśle formularz i przekaże jakieś dane.

.

Odnośnik do komentarza
Udostępnij na innych stronach

Mam świadomość, że mocno kombinuje i mieszam, ale to dlatego, że muszę zrobić coś właściwie nie znając PHP. Może zapomnijmy o moich dotychczasowych pomysłach i zacznijmy od początku.

Wypisuje dane z tabeli, nie wiem ile wierszy zostanie wypisanych.

while ($rekord = mysql_fetch_assoc($wynik))
{
echo "<tr>";
echo "<td>";echo $rekord['id_kandydata']; echo "</td>";
echo "<td>";echo $rekord['imie']; echo "</td>";
echo "<td>";echo $rekord['nazwisko']; echo "</td>";
echo "<td>";
echo '<input type="radio" name="status" value="zatwierdz"/>zatwierdz';
echo '<input type="radio" name="status" value="odrzuc"/>odrzuc';
echo "</td>";
echo "<td>";
echo '<input type="submit" name="wyslij" value="Wyślij"/>';
echo "</td>";
echo "</tr>";
}

Po wykonaniu pętli w każdym wierszu mam: id, imie, nazwisko, (pole opcji) zatwierdz i odzuc, przycisk wyslij

W jaki sposób teraz pobrać z każdego wiersza wartość z radio po kliknieciu wyslij? Użytkownik wybiera opcję, klika wyślij, opcja i przycisk zostają ustawione na disabled i może robić dalej to samo z kolejnymi wierszami.

Odnośnik do komentarza
Udostępnij na innych stronach

Użytkownik wybiera opcję, klika wyślij, (i w tym miejscu zostaje odświerzona strona ?) opcja i przycisk zostają ustawione na disabled i może robić dalej to samo z kolejnymi wierszami.

Jeżeli ma zaznaczyć wszystkie opcje to po co submit przy każdej opcji i przeładowania strony?

Ja znowu proponuje identyczne rozwiazanie jak w poprzednim poście

while ($rekord = mysql_fetch_assoc($wynik))
{
echo "<tr>";
echo "<td>";echo $rekord['id_kandydata']; echo "</td>";
echo "<td>";echo $rekord['imie']; echo "</td>";
echo "<td>";echo $rekord['nazwisko']; echo "</td>";
echo "<td>";
echo '<input type="radio" name="status['.$rekord['id_kandydata'].']" value="zatwierdz"/>zatwierdz';
echo '<input type="radio" name="status['.$rekord['id_kandydata'].']" value="odrzuc"/>odrzuc';
echo "</td>";
echo "</tr>";
}
echo '<input type="submit" name="wyslij" value="Wyślij"/>';

Jeżeli submit ma być przy kazdej opcji jak w Twoim przykladzie to też możesz go dać jako tablica

echo '<input type="submit" name="wyslij['.$rekord['id_kandydata'].']" value="Wyślij"/>';

.

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności