Avatar billede mesteren_selv Nybegynder
14. maj 2005 - 12:58 Der er 27 kommentarer og
2 løsninger

Variable radiobuttons

Hej folk...

Jag har nogle hjemmelavede radiobuttons hvis antal defineres af antallet af poster i en databasetabel(php og mysql), men jeg ved ikke rigtig hvad jeg skal stille op med navne og så videre for at få dem til at fungere....

Nogen der har et forslag?

På forhånd tak, Mesteren
Avatar billede barklund Nybegynder
14. maj 2005 - 13:03 #1
"Hjemmelavede"? Og hvad mener du med navne? Altså alle radiobuttons, som er i samme group (som skal vælges fra unikt) skal have samme navn. Og hvis de ikke er i samme group, skal de have forskellige navne.

Men du skal have en dynamisk navngivning ind over - eller? Har du flere (dynamisk antal) grupper eller kun en gruppe med dynamisk antal muligheder?

Og hvad har det egentlig med javascript at gøre? Det lyder som ren HTML-generering fra PHP.

--
Morten Barklund
Avatar billede roenving Novice
14. maj 2005 - 13:05 #2
Hvis du giver dem et id, som f.eks. har en gennemgående start-streng, kan du genkende dem ved at afslutte med et tal !-)

F.eks.

function changeRadio(elm){
  imgs = document.getElementsByTagName("IMG");
  for(i=1; i < imgs.length; i++){
    if(imgs[i].id.indexOf('radio') == 0)
      imgs[i].src = 'radioOff.gif';
  }
  elm.src = "radioOn.gif";
}

-- og dine radio-billeder sådan:

<img id="radio1" src="radioOff.gif" onclick="changeRadio(this);">
Avatar billede barklund Nybegynder
14. maj 2005 - 13:08 #3
(roenving svarede vist på et par af mine spørgsmål)
Avatar billede mesteren_selv Nybegynder
14. maj 2005 - 13:08 #4
Jeg må indrømme at jeg ikke rigtig forstår scriptet... Jeg er ikke så ferm i javascript... Men jeg tror det er noget af det rigtige du har fat i...
Avatar billede mesteren_selv Nybegynder
14. maj 2005 - 13:17 #5
Jeg fik implanteret scriptet, men nu kan de allesammen kun slåes til og ikke fra... Hvor kommer det der elm fra, er det ikke en variabel den burde modtage et-eller-andet sted fra?
Avatar billede roenving Novice
14. maj 2005 - 13:18 #6
Da vi jo ikke kender antallet på nuværende tidspunkt valgte jeg en metode, hvor det er ligemeget (jeg går ud fra, at det er img-elementer, du bruger til dine 'kunstige' radiobuttons !-)

Vi vælger på forhånd, at alle 'radiobuttons' skal have et id, som starter med 'radio', altså radio1, radio2 osv.

Scriptet tager så fat i samtlige img-elementer i dokumentet, undersøger om id'et starter med 'radio', og hvis det gør sætter billedets src til at være det uvalgte billede.

Til sidste sættes det element, der er klikket på til at være den valgte udgave !-)
Avatar billede roenving Novice
14. maj 2005 - 13:18 #7
-- bemærk (this) på img-tagget !-)
Avatar billede mesteren_selv Nybegynder
14. maj 2005 - 13:23 #8
Hmmm... Ja, nu begynder det at dæmre lidt... Men jeg kan stadig ikke få den til at fjerne de andre... Mine data ser således ud:

function changeRadio(elm) {
  imgs = document.getElementsByTagName("IMG");
  for(i=1; i < imgs.length; i++){
    if(imgs[i].id.indexOf('radio') == 0)
      imgs[i].src = '../grafik/image_notselected.jpg';
  }
  elm.src = "../grafik/image_selected.jpg";
}

og

<img src="../grafik/image_notselected.jpg" id="picbutton" width="14" height="14" onclick="changeRadio(this);">
Avatar billede thesurfer Nybegynder
14. maj 2005 - 13:25 #9
fejl: id="picbutton"
Ifølge scriptet, skal dine id'er starte med "radio" (små bogstaver)..
Avatar billede mesteren_selv Nybegynder
14. maj 2005 - 13:26 #10
Min fejl... Id skulle naturligvis være radio1... Sorry... Point?
Avatar billede roenving Novice
14. maj 2005 - 13:26 #11
-- og da et id skal være unikt, skal de have forskellige id'er, altså f.eks. radio1, radio2, radio3 osv.
Avatar billede roenving Novice
14. maj 2005 - 13:27 #12
200 er alt for mange, så behold selv langt de fleste !-)

Velbekomme '-)
Avatar billede mesteren_selv Nybegynder
14. maj 2005 - 13:31 #13
Hvordan beholder jeg dele af det?
Avatar billede roenving Novice
14. maj 2005 - 13:33 #14
Lægger selv et svar og fordeler pointene med Avanceret !-)
Avatar billede mesteren_selv Nybegynder
14. maj 2005 - 13:44 #15
Nåjah... Slet ikke dumt... 1000 tak
Avatar billede roenving Novice
14. maj 2005 - 13:47 #16
Tak for point ;~}
Avatar billede mesteren_selv Nybegynder
14. maj 2005 - 14:59 #17
Hmm... Du kan vel ikke også lige hjælpe mig med hvordan jeg får den første knap til at være valgt fra start?
Avatar billede roenving Novice
14. maj 2005 - 15:08 #18
Du sætter vel bare "../grafik/image_selected.jpg" som src fra starten på lige den ?-)
Avatar billede mesteren_selv Nybegynder
14. maj 2005 - 15:11 #19
Super... tak
Avatar billede mesteren_selv Nybegynder
14. maj 2005 - 15:12 #20
Ups... Den går ikke... Så bliver de allesammen valgt fra starten...
Avatar billede roenving Novice
14. maj 2005 - 15:16 #21
Kun den ene !-)
Avatar billede mesteren_selv Nybegynder
14. maj 2005 - 15:18 #22
Jamen der jo kun en linie kode der beskriver knapperne, og hvis den står til "../grafik/image_selected.jpg" kommer de allesammen til det.. Det er jo den samme linie der bliver gentaget af en while-løkke...
Avatar billede roenving Novice
14. maj 2005 - 15:24 #23
Men der er vel altid mindst een, så du kan vel sætte den ind først eller lave en betingelse, f.eks.

$i = 0;
while(et eller andet){
  print "<img src=\"" . ($i++==0)?"../grafik/image_selected.jpg":"../grafik/image_notselected.jpg" . "\" osv.";

  movenext (eller hvad det hedder !-);
}
Avatar billede roenving Novice
14. maj 2005 - 15:25 #24
-- og så skal hele betingelsen nok i en parantes:

print "<img src=\"" . ($i++==0?"../grafik/image_selected.jpg":"../grafik/image_notselected.jpg") . "\" osv.";
Avatar billede mesteren_selv Nybegynder
14. maj 2005 - 15:27 #25
Koden er php og hedder

<?php

$pic = mysql_query("SELECT * FROM `".$id."-pic`") or die(mysql_error());

while ($row = mysql_fetch_array($pic)) {
?>
      <td width="16"><div align="right"><a href="pic_0<?php echo $row['id']; ?>.htm" target="picframe">
      <img src="../grafik/image_notselected.jpg" id="radio1" width="14" height="14" onclick="changeRadio(this);" border="0"></a></div></td>
<?php
}
?>
Avatar billede mesteren_selv Nybegynder
14. maj 2005 - 15:33 #26
Jeg klarede den med nederst i html'en at indsætte:

<script>
changeRadio(radio1);
</script>

Tak for hjælpen
Hyggeligt at arbejde med dig
Avatar billede roenving Novice
14. maj 2005 - 15:33 #27
Jamen, så laver du jo også ulovlige id'er ?-)

Det er _ikke_ tilladt at give flere elementer det samme id !-)

<?php

$pic = mysql_query("SELECT * FROM `".$id."-pic`") or die(mysql_error());

$i = 0;
while ($row = mysql_fetch_array($pic)) {
?>
<td width="16"><div align="right"><a href="pic_0<?php echo $row['id']; ?>.htm" target="picframe">
<?php
print "<img id=\"radio" . $i++ . " src=' . ($i==1?"../grafik/image_selected.jpg":"../grafik/image_notselected.jpg") . "'  width='14' height='14' onclick='changeRadio(this);' border='0'></a></div></td>";
}
?>
Avatar billede mesteren_selv Nybegynder
14. maj 2005 - 16:01 #28
Det forstår jeg intet af... det fungerer ganske fint som det er nu
Avatar billede roenving Novice
14. maj 2005 - 16:03 #29
Det er forbudt at tildele flere elementer det samme id, ganske som det er forbudt for flere mennesker at have det samme cpr-nummer ...
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