webForumDet fria alternativet

Formulär - Checkbox

PHP

5 svar · 336 visningar · startad av lillebror

Medlem sedan apr. 20041 597 inlägg
Frågan#1

Jag håller på och skapar ett formulär i PHP. Nu har jag en liten fråga anggående hanteringen av s.k. checkbox.

I ett fält i databasen lagrar jag antingen en 1 eller en 0. För att att läsa in denna information genom en SQL-sats till formuläret har jag efter ett visst tags funderande gjort på följande sätt:

<?php $RSobjMetarTaf = showMetarTafSetting($_SESSION["uid"]); ?>
<td width="75%" style="background-color: #fff; padding: 5px 0 5px 15px">
		<?php if($RSobjMetarTaf['showmetartaf'] == 1) { ?>
		<input type="checkbox" name="metartaf_activated" value="1" checked>
		<?php } else { ?>
		<input type="checkbox" name="metartaf_activated" value="0">
		<?php } ?>
		</td>

Är detta rätt sätt för att avgöra huruvida en checkbox skall vara checked (1) eller unchecked (0)?

Vidare när man skickar informationen med ett formulär, är det bästa sättet att göra det genom POST? Har läst att GET är mindre säkert då man skickar det genom en s.k. querystring?

Slutligen, läser man av checkboxvariabeln genom detta sätt?

$metartaf['metartaf_activated'] = trim($_POST['metartaf_activated']);

:)

Medlem sedan apr. 20041 597 inlägg
#2
<input type="checkbox" name="metartaf_activated" value="1" <?php if($RSobjMetarTaf['showmetartaf'] == "1"){echo " CHECKED";}?>>

Detta lite nerkortade kodstycke lyckades jag knåpa ihop efter att ha sökt runt lite. Det kan vara ett alternativ...

Medlem sedan apr. 20041 597 inlägg
#3

Först hade jag en tanke om att man kunde ange att när en checkbox är checked så har den värdet 1 och vid unchecked en 0. Nu gjorde jag iaf på följande sätt för att läsa av den när den inte är ikryssad:

if($metartaf['metartaf_activated'] == '') {$metartaf['metartaf_activated'] = 0;}

Är det rätt sätt?

Medlem sedan mars 20034 471 inlägg
#4

Så här skulle jag göra:

if ($RSobjMetarTaf['showmetartaf'] == "1")
   $checked = "checked";
else $checked = "";

//i formuläret
<input type="checkbox" name="metartaf_activated" value="1" $checked>

Om du inte är i php-mode i formuläret blir det:

<?php 

if ($RSobjMetarTaf['showmetartaf'] == "1")
   $checked = "checked";
else $checked = "";
?>

//i formuläret
<input type="checkbox" name="metartaf_activated" value="1" <?php echo $checked; ?>>

Red: Med anledning av nedanstående kommentar. Naturligtvis är det så. :r

Medlem sedan mars 20032 667 inlägg
#5

$checked = "\"checked\"";

bör väl vara

$checked = "checked";

Medlem sedan mars 20034 471 inlägg
#6

Re: Formulär - Checkbox

Dubbelpostning därför att jag ville kolla hur kodblocket såg ut för sig.

lillebror skrev:

...Slutligen, läser man av checkboxvariabeln genom detta sätt?

$metartaf['metartaf_activated'] = trim($_POST['metartaf_activated']);

Om du har skickat formuläret mha POST, så finns värdet i
$_POST['metartaf_activated']. Om du använt GET, hittar du värdet i
$_GET['metartaf_activated']. MEN! Eftersom PHP "snällt" låter dig använda icke-satta variabler är det säkrast att först kolla att variabeln ÄR satt, generellt sätt. I det speciella fallet där man har bara en checkbox (per namn) och något händer om den är ikryssad, dvs värdet är eg ointressant, det intressanta är om den är satt eller ej, kan detta kollas med:

if (isSet($_POST['metartaf_activated']))
//resp $_GET om get-metoden använts.

lillebror skrev:

...Vidare när man skickar informationen med ett formulär, är det bästa sättet att göra det genom POST? Har läst att GET är mindre säkert då man skickar det genom en s.k. querystring?

Kolla upp detta inlägg (och resten i den tråden) tillsammans med de inlägg som länkas ifrån den, så kommer begreppen säkert att klarna. :)

268 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)