Avatar billede jackass- Nybegynder
28. juni 2006 - 13:56 Der er 18 kommentarer og
2 løsninger

Radiobuttons problemer?!

Ok nu er jeg ved at blive sindsyg...

Jeg har en side med en formular og X antal brugere i en liste med hver sin radiobutton.

Formularen:
$out .= "<form action=\"user_del.php?action=del\" method=\"post\" name=\"formUsers\" id=\"formUsers\">\n";

Radiobutton (bliver skrevet X antal ud gennem en while løkke samme med andet data):
$out .= "    <td width=\"50\"><input name=\"radiobutton\" type=\"radio\" value=\"".$row['id']."\"></td>\n"; // row['id'] = brugerens id i databasen.


I actionscriptet har jeg så følgende:

if ($_GET['action'] == "del") {
    require_once("inc/db.php");
    if ($_POST['radiobutton'] == "") { echo "skod"; }
    else { echo "skod2"; }
    $user = $_POST['radiobutton'];
}

Og den echo'er "skod" ud.. Hvorfor (undskyld sproget) er $_POST['radiobutton'] == "" selvom jeg har checked radiobutton for en bruger?

/jack
Avatar billede jaw Nybegynder
28. juni 2006 - 14:00 #1
Har du tjekket i din kildekode, om de overhovedet får den value du tror?
Avatar billede mclemens Nybegynder
28. juni 2006 - 14:07 #2
<form action=\"user_del.php?action=del\" method=\"post\ <- Formen sendes som post...
if ($_GET['action'] == "del") { <- Du checker med GET ...
Prøv: if ($_POSY['action'] == "del") {

kaster lige svar ... afvis hvis det ikke hjælper ... er først tilbage iaften :o)
Avatar billede mclemens Nybegynder
28. juni 2006 - 14:07 #3
Prøv: if ($_POST['action'] == "del") {
Avatar billede mclemens Nybegynder
28. juni 2006 - 14:08 #4
- ellers kan du istedet rette formen method=\"post\" <- til -> method=\"get\"
Avatar billede jackass- Nybegynder
28. juni 2006 - 14:15 #5
Altså... Når form action=\"user_del.php?action=del\" skal den også tjekkes med $_GET['action']

Men da formens method="POST" skal radiobuttons tjekkes med $_POST['radiobutton'].

Enige?

Og mht kildekoden, så får de den korrekte value:
    <td width="50"><input name="radiobutton" type="radio" value="19"></td>
...osv
Avatar billede jaw Nybegynder
28. juni 2006 - 14:20 #6
Ja, mht. post/get er jeg enig med dig, jackass.

Hvad så angår dit andet (rigtige) problem, så kan jeg ikke lige umiddelbart spotte en fejl, men synes du bør lave nogle debug'er. Altså indsætte nogle echo'er rundt omkring, så du kan se om dataene er dem du tror de er.

Eksempel:
if ($_GET['action'] == "del") {
    require_once("inc/db.php");
    echo "Debug: ".$_POST['radiobutton']."<br />";
    if ($_POST['radiobutton'] == "") { echo "skod"; }
    else { echo "skod2"; }
    $user = $_POST['radiobutton'];
}

Så kan du jo se, om $_POST['radiobutton'] har det korrekte indhold, og så måske forstå, hvorfor din if/else gør som den gør.
Avatar billede mclemens Nybegynder
28. juni 2006 - 14:35 #7
Testet og enig ... afvis lige mit svar :o)
Avatar billede jackass- Nybegynder
28. juni 2006 - 14:38 #8
Nemlig jaw, men det er det der er hele problemet - at $_POST['radiobutton'] ikke har det korrekte indhold.

Hvis jeg fx debugger med:

if ($_GET['action'] == "del") {
    require_once("inc/db.php");
    echo "Debug: ".$_POST['radiobutton']."<br />";
    if ($_POST['radiobutton'] == "") { echo "skod"; }
    else { echo "skod2"; }
}

..får jeg bare følgende output:

----
Debug:
skod
----

Altså er $_POST['radiobutton'] tom... og det er det jeg ikke fatter hvorfor den er? :-/
Avatar billede jackass- Nybegynder
28. juni 2006 - 14:41 #9
Det skal måske nævnes, at jeg ikke har en almindelig submit button, men derimod et billede, som jeg submitter med:

echo "<a class=\"toolbar\" href=\"java script:if (document.formUsers.radiobutton.value == 0){ alert('Please make a selection from the list to delete'); } else if (confirm('Are you sure you want to delete selected items? ')){ document.formUsers.submit();}\">";
echo "<img src=\"gfx/delete.png\" alt=\"Delete\" align=\"middle\" name=\"remove\" border=\"0\" /><br />Delete</a>";
Avatar billede jaw Nybegynder
28. juni 2006 - 14:47 #10
Hm, jeg kan ikke lige umiddelbart få den popup-warning frem, men for mig at se sender den da dataene fint. Men prøv da bare lige at indsætte en almindelig knap.
Avatar billede jackass- Nybegynder
28. juni 2006 - 14:50 #11
Har fundet fejlen.. Jeg har jo en liste af brugere hvor man kan vælge en bruger og trykke Delete..

Men udover kan man "folde en bruger ud" via noget <div> halløj, og deri også rette i brugerens adgang ..

Dvs der faktisk er 1 stor form.. og indeni den er der så ligeså mange mindre forms som der er antal brugere. Og den kan vist ikke finde ud af det med forms indeni en anden form :-/

Er der en måde at løse DET issue på?
Avatar billede mclemens Nybegynder
28. juni 2006 - 14:50 #12
Virker fint her :o)
Avatar billede mclemens Nybegynder
28. juni 2006 - 14:51 #13
Lidt OT for at jeg fik alerten i javascripten skulle jeg checke på if (document.formUsers.radiobutton.value == false) ...
Avatar billede mclemens Nybegynder
28. juni 2006 - 14:53 #14
[ Er der en måde at løse DET issue på? ]
... Med javascript kan man nok ... men form's inde i form's
er vist ikke helt gyldigt? ... men prøver lige at lege lidt ...
Avatar billede mclemens Nybegynder
28. juni 2006 - 14:56 #15
Uhm, nitte det forms inden i forms duer ikke så godt da:
1. Man kan vælge flere inputs
2. Da man skal gennemløbe alle inputs inden til formen
3... Kan måske men - ikke optimalt - men leger som sagt lidt...
Avatar billede mclemens Nybegynder
28. juni 2006 - 14:56 #16
1. Man kan vælge flere inputs -> 1. Man kan vælge flere radio'er
Avatar billede jackass- Nybegynder
28. juni 2006 - 15:20 #17
True.. jeg laver det lige på en anden måde så.. altså så der er 1 form til radio'er.. og vil man ændre en brugers rettigheder, må man gå ind i en "edit user" ny side/form.

Havde blot håbet på at kunne samle en masse funktionalitet på 1 side fremfor 3-4 sider :)

Men tak for indsatsen begge to.

jaw: vil du smide svar, så deler jeg points'ene :)
Avatar billede jaw Nybegynder
28. juni 2006 - 15:24 #18
Det vil jeg da gerne, takker :)
Avatar billede mclemens Nybegynder
28. juni 2006 - 17:04 #19
Kaster lige eksemplet på hvorfor det forms i forms ikke duede ... ydre form blev afsluttet straks første indre </form> kom selvom der er åbnet en anden form inden i formen ... har lige sat den til get - læg mærke til at den ikke kan snuppe andet end den første radio afkrydsning med ... jeg har dog lagt lidt javascript på der hiver værdien med op til et skjult felt man så kan validere på istedet...


<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da"><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /><meta http-equiv="Content-Style-Type" content="text/css" /><title>Ingen titel</title>

<script type="text/javascript">
function chkf(){
f=document.formUsers;
fs=document.getElementsByName("radiobutton");

fsn=document.getElementsByName("radiobutton2")[0];fs2=-1;


for(i=0;i<fs.length;i++)if((fs[i].type=="radio")&&(fs[i].name=="radiobutton")&&(fs[i].checked)){
  if(fsn.value==""){fsn.value=fs[i].value;}
  fs2++;
}

if(fs2>0)alert("Du havde valgt for mange radio knapper\nKun denne knap kom med: "+fsn.value);
else if(fs2<0)alert("Vælg en knap");
else document.formUsers.submit();

}

</script>

</head><body>

<form action="?action=del" method="get" name="formUsers" id="formUsers">
<input type="hidden" name="radiobutton2" value="" />

<form>Thomas:<input name="radiobutton" type="radio" value="Thomas" /></form><br />
<form>Kim:<input name="radiobutton" type="radio" value="Kim" /></form><br />
<form>Niels:<input name="radiobutton" type="radio" value="Niels" /></form><br />
<form>Louise:<input name="radiobutton" type="radio" value="Louise" /></form><br />
<form>Kristina:<input name="radiobutton" type="radio" value="Kristina" /></form><br />


<img src="gfx/delete.png" alt="Delete" name="remove" onclick="chkf();" />

</form>

</body></html>

[True.. jeg laver det lige på en anden måde så.. ]
... men omkonfigurering er bedre :o)
Avatar billede mclemens Nybegynder
28. juni 2006 - 17:09 #20
(det javascript fusk jeg lavede er ikke optimalt)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester