29. juli 2009 - 21:55
Der er
10 kommentarer
Gemme checkbox indhold i mysql med php
Hej Eksperter, Jeg får på en side udskrevet et variabelt antal checkboxe, svarende til et antal emner i min mysql database. Jeg har brug for at oprette en formel, som gemmer værdien (kryds, eller ej) i databasen. Hvordan kunne denne kode se ud ?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
Det afhænger jo af hvordan du skriver dine variabelt antal checkboxe ud? Vi gider ikke sidde og gætte.
Sådan skrives de ud: $query = mysql_query("SELECT * FROM products_description WHERE language_id='5' order by products_id DESC") or print mysql_error(); while($r = mysql_fetch_array($query)) { $navn = $r["products_name"]; $levering = $r["levering"]; $id = $r["products_id"]; if ($levering=="1"){ $levering_output=" checked='checked' "; } else{ $levering_output=""; } echo "<tr>"; echo "<td>".$navn."</td>"; echo "<td width='50' align='center'><input name='tool[".$id."]' type='".checkbox."'".$levering_output." value=".$id."></td>"; echo "</tr>"; }
$tool = $_POST["tool"]; if(count($tool) > 0) { foreach($tool as $key => $value) { $key = (int)$key; $sql = "UPDATE tabel SET checkboxStatus='checked' WHERE checkboxId = ".$key; mysql_query($sql); } }
<ole> Det er nok ikke hensigtsmæssigt at spilde 7 tegn, hvergang man vil angive en checked kontrol. Det må kunne klares med et enkelt ;o) Derudover kunne det lyde, som om bitshifting ville være en brugbar metode, men det kommer an på, hvordan det skal anvendes /mvh </bole>
#4 Hvilke syv tegn mener du der spilde? Jeg kunne godt tænke mig at høre mere om hvordan du vil benytte bitshifting til at løse dette; gerne med et eksempel på hvordan du vil gøre det (også selvom det måske ikke er relevant for løsningen), så kunne jeg jo muligvis lære noget nyt :)
De 7 tegn er "checked" - og de kan f.eks. erstattes af "1" eller "0" for "checked" og "unchecked" - eller informationen kan gemmes i et boolean felt. Det giver så godt nok kun et 'spild' på 6 tegn ... men alligevel ;o) Du kan bruge bitshifting på forskellig måde. Én af dem er: <form action="" method="post"> <input type="hidden" name="contxt" value="testBitShift"> <p> <input type="checkbox" name="check[]" value="0"> <input type="checkbox" name="check[]" value="1"> <input type="checkbox" name="check[]" value="2"> <input type="checkbox" name="check[]" value="3"> <input type="checkbox" name="check[]" value="4"> <input type="checkbox" name="check[]" value="5"> </p> <p><button type="submit">TEST</button></p> </form> - med tilhørende PHP: <?php if (isset($_POST["contxt"]) && $_POST["contxt"]=="testBitShift") { $num = 1; foreach ($_POST["check"] as $val) { $num += 1<<$val; } // Indsæt $num i DB her } ?> Når du så hiver tallet $num ud af databasen og vil tjekke, om den checkbox med værdien 4 var sat, skriver du: if ($num & (1<<4)) print "Checkbox'en 4 var sat";
Ups ... $num skal naturligvis starte med at være 0 : <?php if (isset($_POST["contxt"]) && $_POST["contxt"]=="testBitShift") { $num = 0; foreach ($_POST["check"] as $val) { $num += 1<<$val; } // Indsæt $num i DB her } ?>
Ahh, ja, okay... på den måde. :) Ganske interessant læsning; jeg takker :)
30. juli 2009 - 14:14
#10
Selvtak. På denne måde kan du faktisk gemme omkring 30 checkbox'e i ét felt (af typen unsigned Integer) ;o)
Vi tilbyder markedets bedste kurser inden for webudvikling