webForumDet fria alternativet

Ja/Nej fråga

30 svar · 3 236 visningar · startad av Jester73

Jester73Medlem sedan mars 2012121 inlägg
#1

Hej

En nybörjarfråga

Jag har precis börjat leka med JQuery på mina PHP produktioner tänkte bygga en Ja/Nej knapp/länk för ett forumlär.

Den bakomliggande databasegenskapen är boolean och jag tänkte med ett hidden formfield ändra värdet till True/False med hjälp av JQuery.
Du klickar på det synliga "JA" för att ändra till "NEJ" och reverserat.

Är det ens möjligt? Någon som har en bra ide om hur det skulle se ut eller kan peka mig på en bra tutorial motsv. :)

Tack på förhand!

/J

l-boyMedlem sedan juli 2003221 inlägg
#2

<input type="button" data-value="true" value="Ja" />
<input type="button" data-value="false" value="Nej" />    
<input type="hidden" id="result" />

$(function() {    
    $('button').on('click', function() {        
        $('result').val( $(this).attr('data-value') );
    });    
});

Nåt sånt kanske?

voigtann1Medlem sedan juni 20019 519 inlägg
#3
<button name="ditt_namn" value="true">Ja</button>
<button name="ditt_namn" value="false">Nej</button>

Om du vill slippa HTML5 data attribut på knapparna.

och köra en toggle på om det skall visa ja eller nej knappen, annars kan du ju kolla på PHP om värdet på form datan är "Ja" så är det True annars alltid false.

Jester73Medlem sedan mars 2012121 inlägg
#4

Jag tänkte mig en lösning med bara 1 knapp som byter värde och value när den trycks in.
och ja, hämta aktuellt värde från databasen alt. defaultvärde behöver den också göra.

Jester73Medlem sedan mars 2012121 inlägg
#5

När jag provade denna

Kod:
<button name="ditt_namn" value="true">Ja</button>
<button name="ditt_namn" value="false">Nej</button>
Om du vill slippa HTML5 data attribut på knapparna.

och köra en toggle på om det skall visa ja eller nej knappen, annars kan du ju kolla på PHP om värdet på form datan är "Ja" så är det True annars alltid false.

så körde den submit på hela formuläret istället.
Testade i chrome

voigtann1Medlem sedan juni 20019 519 inlägg
#6

fungera inte i alla versioner av IE den kommer inte snappa upp name på button elemenetet

Jester73Medlem sedan mars 2012121 inlägg
#7

Fan :) Måste testa lite mer innan jag skriver något.
Sätta in type="button" löste ju det problemet.

Jester73Medlem sedan mars 2012121 inlägg
#8

voigtann1 skrev:

<button name="ditt_namn" value="true">Ja</button>
<button name="ditt_namn" value="false">Nej</button>

Om du vill slippa HTML5 data attribut på knapparna.

och köra en toggle på om det skall visa ja eller nej knappen, annars kan du ju kolla på PHP om värdet på form datan är "Ja" så är det True annars alltid false.

och för att få till toggle så måste jag använda jQuery antar jag?
Kan jag inte bara ha en knapp som jag kan ändra attribut på om ex. värdet är true tillbaka till false osv.?

voigtann1Medlem sedan juni 20019 519 inlägg
#9

du kan skriva det i ren JS om du vill det, men jag kan tycka detta låter/känns som en radio-knapp hade passat rätt bra in i detta läget (eller bara en checkbox)?

Jester73Medlem sedan mars 2012121 inlägg
#10

Skulle gärna bara köra med en checkbox men när checkboxen är tom så kommer den inte med i $_POST från vilket jag bygger INSERT och UPDATE :)

voigtann1Medlem sedan juni 20019 519 inlägg
#11

fast det löser du ju på backend, om inte $_POST värdet finns så är värdet 'false' annars är $_POST värdet vad checkboxen är för värde ('true')

voigtann1Medlem sedan juni 20019 519 inlägg
#12

http://php.voigt.se/sandbox/wf/Jester73/

och källkoden är:

<form method="post" action="index.php">
	<input type="checkbox" value="true" name="ditt_namn">
	<button type="submit">Skicka</button>
</form>

<?
echo "värdet är: " . ($_POST["ditt_namn"] == "true" ? "true" : "false");
?>
Jester73Medlem sedan mars 2012121 inlägg
#13

Varför funkar det för dig och inte för mig :)

Problemet jag stötte på var att var checkboxen tom så fanns inte ens nyckeln till checkboxen i $_POST. Dvs hade jag klickat i den, uppdaterat databasen, och sedan klickat ur så hade värdet inte uppdaterats i databasen.

Skrev själv ut SQL satsen och då fanns inte den med i UPDATE strängen.

voigtann1Medlem sedan juni 20019 519 inlägg
#14

Jester73 skrev:

Problemet jag stötte på var att var checkboxen tom så fanns inte ens nyckeln till checkboxen i $_POST. Dvs hade jag klickat i den, uppdaterat databasen, och sedan klickat ur så hade värdet inte uppdaterats i databasen.

Nej, precis om men om den inte finns så vet du ju att värdet skall vara false (eller vilket värde du vill) i-boys exempel gör det du vill om du skall lösa det med Jquery.

Jester73Medlem sedan mars 2012121 inlägg
#15

Problemet är att SQL frågan byggs upp av de nycklar som skickas in

function rensaFormular($addons){
	//Rensar bort formulärdata som inte skall läggas till databasen
	foreach($_POST as $key=>$value){
		if (substr_count($key, "exc_",0)==0) {
   			$cvalues[$key]=$value;
		}  
	}
	//Lägger till manuella värden från en array. array("Nyckel"=>Värde)
	If (!empty($addons)){
		foreach ($addons as $key1=>$value1){
			$cvalues[$key1]=$value1;
		}	
	}
	return $cvalues;
}
	
//Skapa en INSERT från formulär
function buildSQLInsert($tabell,$adds){
	$temp=rensaFormular($adds);
	$n=array_keys($temp);
	$v=array_values($temp);
	$nyckel=implode(", ",$n);
	$varde=implode("', '",$v);
	
	$sqlQ="INSERT INTO $tabell ($nyckel) VALUES ('$varde')";
	return $sqlQ;
}

//Skapa en UPDATE från formulär
function buildSQLUpdate($tabell, $urval){
	$temp=rensaFormular("");
	while (list($key, $val)=each($temp)){
		$tmpvalues=$tmpvalues." ".$key."='".$val."', ";
	}
	$tmpvalues=trim($tmpvalues);
	$tmpvalues=substr($tmpvalues,0,strlen($tmpvalues)-1);
	$sqlQ="UPDATE $tabell SET $tmpvalues $urval";
	return $sqlQ;
}

Men I-boys lösning borde kunna funka så här

<input type="button" name="mittnamn" data-value="true" value="Ja" />

$(function() {    
    $('button').on('click', function() {
      TESTA HÄR VILKET VÄRDE KNAPPEN HAR VID TRYCKNING. 
        $('mittnamn').val( $(this).attr('data-value') ); 
         $('mittnamn').val( $(Nej).attr('value') ); 
    });    
});

Märks hur bra jag är på jQuery va ;)

voigtann1Medlem sedan juni 20019 519 inlägg
#16

känns som det är mer en PHP problem än ett Javascript problem, men "mittnamn" i din $("mittnamn") försöker hitta <mittnamn> element, vilket inte alls finns. hur ser din HTML markup ut som "fungera"?

Jester73Medlem sedan mars 2012121 inlägg
#17

Den sista kodbiten var bara ett exempel.
I teorin borde jag med ett tryck på knappen, via jQuery, kunna ändra från exempelvis

<button id="YN" name="StortB" value="true">Ja</button>

till

<button id="YN" name="StortB" value="false">Nej</button>

Det vore sexigt att få till det, kort sagt :e

voigtann1Medlem sedan juni 20019 519 inlägg
#18

Jester73 skrev:

Den sista kodbiten var bara ett exempel.
I teorin borde jag med ett tryck på knappen, via jQuery, kunna ändra från exempelvis

<button id="YN" name="StortB" value="true">Ja</button>

till

<button id="YN" name="StortB" value="false">Nej</button>

Det vore sexigt att få till det, kort sagt :e

Om du struntar i ie stöd så bind:

$('button[name="StortB"]').on('click', function(e) {
	var value = this.value;
	this.value = value === "true" ? "false" : "true";
});
Jester73Medlem sedan mars 2012121 inlägg
#19

voigtann1 skrev:

http://php.voigt.se/sandbox/wf/Jester73/

och källkoden är:

<form method="post" action="index.php">
	<input type="checkbox" value="true" name="ditt_namn">
	<button type="submit">Skicka</button>
</form>

<?
echo "värdet är: " . ($_POST["ditt_namn"] == "true" ? "true" : "false");
?>

Hur kommer det sig att din $_POST innehåller "ditt_namn" som nyckel men inte min?

voigtann1Medlem sedan juni 20019 519 inlägg
#20

Jester73 skrev:

Hur kommer det sig att din $_POST innehåller "ditt_namn" som nyckel men inte min?

För att jag har ett name på min input element?

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