Avatar billede larsgrau Forsker
24. august 2020 - 18:27 Der er 2 kommentarer og
1 løsning

multi Checkbox in sql query

Hej
Jeg har følgende ph code, og den virker som den skal.
if(isset($_POST['checkbox1'])){
    $done = "AND status like 'Færdig' ";
}else{
    $done = "";
}

if(isset($_POST['checkbox2'])){
    $igang = "AND status like '%Igang%'";
}else{
    $igang = "";
}

echo $done;
echo $igang;

jeg vil gerne have den ind en sql query, jeg ved bare ikke rigtigt hvordan man skal gøre det

jeg har prøvet med følgende code:
$sql = "SELECT * FROM test where lastname like 'Larsen' $done $igang";

Query kommer til a se sådan her ud
SELECT * FROM test where lastname like 'Larsen' AND status like 'Færdig' AND status like 'Igang'

men det virker ikke, da der er ikke nogen som har både Færdig og igang i status feltet

Nogen ide til hvordan med gør dette
Avatar billede Slater Ekspert
24. august 2020 - 19:31 #1
Du mangler lidt at fortælle hvad det er du vil have.

Du designer jo netop dine to ekstra wheres så de udelukker hinanden. Hvad er det du ønsker skal ske?

- Rent bortset fra det, er det en virkelig dårlig idé at opbevare status i et tekstfelt, især et der kan indeholde flere ting, så du er nødt til at tjekke med "like". Det er ekstremt langsomt.
Avatar billede arne_v Ekspert
24. august 2020 - 19:50 #2
Du mener sikkert:

SELECT * FROM test where lastname like 'Larsen' AND (status like 'Færdig' OR status like 'Igang')

Derudover er jeg helt enig med slader omkring brugen af de tekst strenge og LIKE.

Og det ser heller ikke ud som at du bruger prepared statement.
Avatar billede larsgrau Forsker
24. august 2020 - 20:28 #3
Har fundet en løsning
<form action="search.php" method="POST">


<input type="checkbox" name="checkbox[]" id="checkbox1" value="Færdig" <?php if(in_array("Færdig", $checked)) echo "checked"; ?>    style="position:absolute;left:184px;top:16px;width:96px;height:16px;z-index:36;">
<label for="checkbox1" style="position:absolute;left:250px;top:18px;width:96px;height:25px;z-index:36;">Færdig</label>

<input type="checkbox" name="checkbox[]"id="checkbox2" value="Igang" <?php if(in_array("Igang", $checked)) echo "checked"; ?>    style="position:absolute;left:184px;top:36px;width:96px;height:16px;z-index:36;">
<label for="checkbox2" style="position:absolute;left:250px;top:38px;width:96px;height:25px;z-index:36;">Igang</label>

<input type="checkbox" name="checkbox[]" value="" <?php if(in_array("", $checked)) echo "checked"; ?>    style="position:absolute;left:184px;top:56px;width:96px;height:16px;z-index:36;">
<label for="checkbox3" style="position:absolute;left:250px;top:58px;width:96px;height:25px;z-index:36;">Ikke startet</label>

<input type="submit" id="Button1" name="btSubmit" value="Search" style="position:absolute;left:184px;top:180px;width:96px;height:25px;z-index:36;">
</form>


if(isset($_POST["btSubmit"]) and !empty($_POST['checkbox'])){

$all_ck_box = "'".implode("','",$_POST['checkbox'])."'";
           
$sql = "SELECT * FROM test where status IN (".$all_ck_box.")";
        $result = mysqli_query($db, $sql);
        $queryResult = mysqli_num_rows($result);
        if ($queryResult > 0){
        while ($row = mysqli_fetch_assoc($result))
        {
            $name = $row['name'];
            $lastname = $row['lastname'];
            $status = $row['status'];
       
    ?>
        <tr>
            <td align="center"><?php echo $name ?></td>
            <td align="center"><?php echo $lastname ?></td>
            <td align="center"><?php echo $status ?></td>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester