webForumDet fria alternativet

Spara Checkbox resultat

9 svar · 886 visningar · startad av soggy

soggyMedlem sedan nov. 200617 inlägg
#1

Hallå alla!
Jag undrar om nån kan hjälpa mig med att få detta att funka. Det som jag vill få fram är att jag har en sida med ett antal checkboxes där jag vill att resultatet ska sparas på hemsida. Om man tex har 100 checkboxes och så har man kryssat i 50 st så vill jag att nästa gång man kommer till sidan så är det 50 ikryssade fortfarande ikryssade och så att man kan fortsätta att kryssa i rutorna så att man kan fortsätta från den siffran man var på sist.
Kan man typ köra en nån cookie som sprarar resultatet eller?

Tacksam för all hjälp då jag är rätt kass på detta!!!

Mvh
Matte

The_HulkMedlem sedan juni 20031 837 inlägg
#2

hej igen!

här kommer en version som gör det du vill.
den bygger på Cookie-klassen som fanns i tråden http://www.webforum.nu/showthread.php?t=37492 som jag visade dig i din förra tråd :)

Jag bytte från radio-knappar till checkboxar, tyckte det såg bättre ut.

<html>

<head>
<title>Fågel</title>
<SCRIPT LANGUAGE="JavaScript">
<!--

/*
 * Detta script skrivet av Gustaf Cele är fritt för användning, spridning och modifiering.
 */

// Cookieklassen

function Cookie(name, value, expires, domain, path, secure){
	this.name    = name;
	this.value   = value;
	this.expires = expires;
	this.domain  = domain;
	this.path    = path;
	this.secure  = secure;
	
	}

// Metoder för cookieklassen

function set(){
	var cookiestr = escape(new String(this.name)) + "=" + escape(new String(this.value));
	if(this.expires) cookiestr += "; Expires=" + this.expirationString();
	if(this.domain)  cookiestr += "; Domain=" + this.domain;
	if(this.path)    cookiestr += "; Path=" + this.path;
	if(this.secure)  cookiestr += "; Secure";
	document.cookie = cookiestr;
	}

function expirationString(){
	var ex = this.expires;
	if(typeof ex == typeof "string") return ex;
	if(typeof ex == typeof 1){
		var msPerDag = 1000 * 60 * 60 * 24;
		ex = new Date();
		ex.setTime(ex.getTime() + (msPerDag * this.expires));
		}
	return ex.toUTCString ? ex.toUTCString() : ex.toGMTString();
	}

function setDomainToCurrent(){
	this.domain = self.location.host;
	}

function setPathToCurrent(){
	var pth = self.location.pathname.substr(self.location.pathname.indexOf  ("/"));
	if(!pth) pth = "/";
	else pth = pth.substring(0, pth.lastIndexOf("/") + 1);
	this.path = pth;
	}

// Allmäna funktioner

function getCookie(name, alt){
	if(!alt) alt = "";
	name = escape(name) + "=";
	if(document.cookie.indexOf(name) == -1) return alt;
	
	var kaka = document.cookie.substr(document.cookie.lastIndexOf(name));
	kaka = kaka.substr(name.length);
	var slut = (kaka.indexOf(';') == -1) ? kaka.length : kaka.indexOf(';');
	kaka = kaka.substring(0, slut);
	
	return unescape(kaka);
	}

function deleteCookie(name, path){
	var cookiestr = escape(name) + "=_; Expires=Thursday, 01-Jan-1970 00:00:00 GMT";
	if(path) cookiestr += "; Path=" + path;
	document.cookie = cookiestr;
	}

function getAllCookieNames(){
	var ac = document.cookie.split(" ");
	var allCookies = new Array();
	for(var i = 0; i < ac.length; i++){
		var tmp = ac[ i].split("=");
		allCookies[ i] = unescape(tmp[0]);
		}
	return allCookies;
	}

// Lägg till metoder

Cookie.prototype.set                = set;
Cookie.prototype.expirationString   = expirationString;
Cookie.prototype.setDomainToCurrent = setDomainToCurrent;
Cookie.prototype.setPathToCurrent   = setPathToCurrent;

// Statiska metoder

Cookie.get         = getCookie;
Cookie.remove      = deleteCookie;
Cookie.getAllNames = getAllCookieNames;

var iNumBirds = 5;
var iCountNum = 0;

function fn_save()
{
	var chk = "";
	iCountYes = 0;
	
	for(i=1; i<=iNumBirds; i++)
	{
		id = "Ja" + i;
		objYes = document.getElementById(id);
		
		if(objYes != null && objYes.checked == true)
		{
			iCountYes++;
			chk += i + "|";
		}
	}
	
	var kaka = new Cookie("BIRDS", chk, 365);
	kaka.set();
	
	fn_update_sum();
}

function fn_load()
{
	var chk = Cookie.get("BIRDS", "");
	var idx = chk.split("|");
	var id;
	var obj;
	iCountYes = 0;
	
	for(var i=0; i<idx.length; i++)
	{
		if(parseInt(idx[i]) > 0)
		{
			id = "Ja" + idx[i];
			obj = document.getElementById(id);
			
			if(obj != null)
			{
				obj.checked = true;
				iCountYes++;
			}
		}
	}
	
	fn_update_sum();
}

function fn_checkbox_changed(oChkBox)
{
	if(oChkBox.checked)
	{
		iCountYes++;
	}
	else
  {
  	iCountYes--;
	}
	
	fn_update_sum();
}

function fn_update_sum()
{
	objSum = document.getElementById('sum');
	
	if(objSum != null)
	{
		objSum.value = iCountYes + " av " + iNumBirds;
	}
}

</SCRIPT>

</head>
<body onLoad="fn_load()">

<form>
<table border="0" width="300">
<tr>
<td colspan="2"><u><b><font face="Verdana" size="2">Fågelart</font></b></u> </td>
<td colspan="2" width="55">
<p align="left"><u><b><font face="Verdana" size="2">Kryssad</font></b></u></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td width="25">&nbsp;</td>
</tr>

<tr>
<td width="35"><font face="Verdana" size="2">1</font></td>
<td><font face="Verdana" size="2">Aftonfalk</font></td>
<td width="25"><font face="Verdana"><input type=checkbox name="Bird1" value="Ja" id="Ja1" onClick="fn_checkbox_changed(this);"></font></td>
</tr>

<tr>
<td width="35"><font size="2" face="Verdana">2</font></td>
<td><font face="Verdana" size="2">Aftonfalk</font></td>
<td width="25"><font face="Verdana"><input type=checkbox name="Bird2" value="Ja2" id="Ja2" onClick="fn_checkbox_changed(this);"></font></td>
</tr>

<tr>
<td width="35"><font face="Verdana" size="2">3</font></td>
<td><font face="Verdana" size="2">Aftonfalk</font></td>
<td width="25"><font face="Verdana"><input type=checkbox name="Bird3" value="Ja3" id="Ja3" onClick="fn_checkbox_changed(this);"></font></td>
</tr>

<tr>
<td width="35"><font size="2" face="Verdana">4</font></td>
<td><font face="Verdana" size="2">Aftonfalk</font></td>
<td width="25"><font face="Verdana"><input type=checkbox name="Bird4" value="Ja4" id="Ja4" onClick="fn_checkbox_changed(this);"></font></td>
</tr>

<tr>
<td width="35"><font face="Verdana" size="2">5</font></td>
<td><font face="Verdana" size="2">Aftonfalk</font></td>
<td width="25"><font face="Verdana"><input type=checkbox name="Bird5" value="Ja5" id="Ja5" onClick="fn_checkbox_changed(this);"></font></td>
</tr>

<tr>
<td>&nbsp;</td>
<td align="right">Summering</td>
<td><input type="text" size="6" id="sum"></td>
</tr>

</table>
<br>
<br>
<input type="button" value="Save" onClick="fn_save();">
<input type="button" value="Load" onClick="fn_load();">

</p>

</form>
</body>
</html>
The_HulkMedlem sedan juni 20031 837 inlägg
#3

Tänk på att det sparas BARA för den datorn man sitter vid.
Byter du dator får du inte med dig dina val.
För att det ska sparas mellan datorer måste du göra det på serversidan med hjälp av PHP eller AP (eller något annat språk).

soggyMedlem sedan nov. 200617 inlägg
#4

Shit, jag är skakad och rörd :) Det är ju hur bra som helst! Du är verkligen grym på detta. Än en gång en STORT STORT tack!!!!!!

Mvh
Matte

The_HulkMedlem sedan juni 20031 837 inlägg
#5

Markera gärna svaren som lösta om du tycker att du fått svar på dina frågor för den tråden.

The_HulkMedlem sedan juni 20031 837 inlägg
#6

ok, du markerade iaf ett svar som lösning på tråden men det blev kanske inte riktigt rätt svar :)

kalle99Medlem sedan dec. 20062 inlägg
#7

Hej Hulk!
Har läst denna tråd med stort intrese då jag behöver något liknande med checkbox till en hemsida till vårat korp-innebandylag.
Behöver en sida med namnen på spelarna samt checkbox med ja/nej efter, där vem som helst i laget kan gå in och spara/se infomation om vilka som kommer på t.ex nästa träning/match. Är så trött på att ringa runt och fråga inför varje event. Om du har tips så är jag otroligt tacksam. Blir det ett stort problem att lösa att alla ska se samma information, att den ibockade boxen ska stå kvar på "namn1" även när "namn2" väljer sitt svar
Jag är en NOOB på detta.
Här är ett exempel på hur jag skulle vilja att det ser ut.
#=checkbox

namn1 #ja #nej ----> "sparaknapp"
namn2 #ja #nej ----> "sparaknapp"
namn3 #ja #nej ----> "sparaknapp"
namn4 #ja #nej ----> "sparaknapp"
namn5 #ja #nej ----> "sparaknapp"
osv, osv

Peter SMedlem sedan dec. 20025 483 inlägg
#8

Välkommen till wF!

Har du tillgång till något serverspråk (ASP, PHP, ...)? Om så är fallet - har du en inloggningsmekanism på sidan? Om inte kommer vem som helst att kunna kryssa i/ur någon annans ruta.

The_HulkMedlem sedan juni 20031 837 inlägg
#9

Precis som Peter skrev måste du ha till gång till PHP, ASP eller annat skriptspråk som körs på serversidan för att kunna lagra informationen så att alla kan se det. Utan skript som körs på serversidan kan man bara lagra informationen för varje enskild dator (sparas som cookie på den lokala datorn) då kan man inte se vad de andra ha valt.

Har du tillgång till en webbserver att köra sidan ifrån? stödjer den PHP eller ASP?

kalle99Medlem sedan dec. 20062 inlägg
#10

Pratade med min ISP (Sandnet) som sa att dom har stöd för PHP, men som jag sa tidigare så vet jag inte alls hur jag löser det praktiskt, program,mm,mm.
Finns det något bra prog som man kan släppa och dra funktionerna jag behöver? Typ som Powerpoint eller publisher. har kollat lite på Dreamweaver och frontpage, men det ser lite knöligt ut. Trodde att det skulle finnas någon bra mall som man kunde använda sig av, men jag hittade då ingen. om den enda lösningen är att knacka koder för hand är jag lurad. så om någon har något tips är jag tacksam, kanske någon som har sett eller har något liknande som jag behöver?
Tack för era svar.
// kalle

136 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)