Avatar billede hrole Mester
06. juli 2019 - 15:06 Der er 3 kommentarer

Problemer med array_key exists

Hej,

Jeg har en form med en række checkboxes, hvor der kan tilføjes eller fjernes krydser. Scriptet fungerer når der tilføjes nye afkrydsning, men når de fjernes bliver de ikke fjernet i databasen:

Afkrydsningsfelterne med varrierende values:
if (isset($shift[$row['db_date']]) && $shift[$row['db_date']] == 9) {
    echo '<input type="checkbox" name="date_v['.$row['db_date'].']" value="9" checked="checked">Vagt -';
    echo '<input type="hidden" name="counter['.$row['db_date'].']" value="9">';
} else {
    echo '<input type="checkbox" name="date_v['.$row['db_date'].']" value="9">Vagt -';
    echo '<input type="hidden" name="counter['.$row['db_date'].']" value="9">';
}

Til sidste køres:

if (isset($_POST['submit'])) {
        $date_v2 = $_POST['date_v'];
    $counter_2 = $_POST['counter'];

    foreach ($counter_2 as $d => $s) {
        if (array_key_exists($d, $date_v2)) {
            $sql_check = "SELECT * FROM requests_2019 WHERE user_id = $user_id_login AND date = '$d' AND shift_type_id = $date_v2[$d]";
            $result_check = mysqli_query($dbc, $sql_check);
            $number = mysqli_num_rows($result_check);
               
            if ($number == 0) {
                $sql_add = "INSERT INTO requests_2019 (user_id, shift_type_id, date) VALUES ($user_id_login, $date_v2[$d], '$d')";
                $res_add = mysqli_query($dbc, $sql_add);
            }
        } else {
            $sql_check = "SELECT * FROM requests_2019 WHERE user_id = $user_id_login AND date = $d";
            $result_check = mysqli_query($dbc, $sql_check);
            $number = mysqli_num_rows($result_check);

            if ($number == 1) {
                $sql_add = "DELETE FROM requests_2019 WHERE user_id = $user_id_login AND date = '$d'";
                $res_add = mysqli_query($dbc, $sql_add);
            }
        }
    }
    echo '<p>Modtaget!</p>';
}
Avatar billede olsensweb.dk Ekspert
07. juli 2019 - 15:34 #1
jeg ville bruge array_diff
http://docs.php.net/manual/de/function.array-diff.php

til at finde dem der skal tilføjes
til af finde dem der skal fjernes
Avatar billede hrole Mester
07. juli 2019 - 16:10 #2
Tak. Det kunne være en mulighed. Jeg kikker på det.
Avatar billede acore Ekspert
08. juli 2019 - 08:23 #3
Jeg har lidt svært ved at gennemskue præcis hvad du vil og hvad du gør, men...

Hvorfor tror du, at problemet ligger i array_key_exists? Kunne det ikke være et sted i delete delen af koden. Fx $d der skal rettes til ‘$d’ i SELECT?
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