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 fra DE-CIX
Edge computing: behandling ved kilden
Edge computing revolutionerer den måde, data behandles på, ved at bringe kapacitet og ydeevne tættere på dér, hvor der er behov for det.
15. april 2025
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