|
Viser styring af 'hvem kan hvad'. |
Ved at vende felt- og tabelnavne kan stort set samme kode anvendes til 'hvad kan hvem'. |
![]() |
Koden, der skal bruges til at bygge en 2-tabels multiple select, skønnes at være så ens fra gang til gang, at det næsten vil være nok at lave 'søg-og-erstat' på de enkelte variabler, databasefelter etc.
Koden kan se sådan ud:
<h2><i class="fa fa-html5"></i> Redaktør Administration</h2> <div class="panel panel-info"> <div class="panel-body"> <div id="catvalg"> <!-- udtræk data fra tabel 1 og indsæt i drop down menu --> <?php $category_title = ""; $category_id = ""; if (isset ($_POST['category_id'])) //start POST { $category_id = $_POST['category_id']; // Data til drop-down menu $sek2_query = "SELECT * FROM categories where category_id = $category_id"; $sek2_result = mysqli_query($database_link, $sek2_query) or die(mysqli_error($database_link)); $sek2_antal = mysqli_num_rows ($sek2_result); if($sek2_antal == 1) $sek2_row = mysqli_fetch_assoc ($sek2_result); $category_title = $sek2_row['category_title']; } ?> <?php // Data til drop-down menu $sek_query = "SELECT * FROM categories"; $sek_result = mysqli_query($database_link, $sek_query) or die(mysqli_error($database_link)); $sek_antal = mysqli_num_rows ($sek_result); ?> <!-- form til valg fra tabel 1 --> <form method='post' action='index.php?page=editors#'> <table> <?php if ($category_id != "") { echo '<tr><td>'; echo '<select name="$category_id">'; echo '<option value="'. $category_id . ' " > '. $category_title . ' </option> ' ; } else { echo '<tr><td><select class="hei35 borderrad04" name="category_id"><option value="0">Vælg fra menuen</option>'; } //Drop-down menu while ($sek_row = mysqli_fetch_assoc ($sek_result)) { echo '<option value=" '. $sek_row['category_id'] .' "> '. $sek_row['category_title'] .' </option>';} echo '</select></td>'; echo "<td> </td><td><input class='btn btn-default' type='submit' name='category' value='Vælg' /></td><td></td></tr>"; ?> </table> </form> <!-- tabel-1 form slut --> </div> <!-- udtræk af data fra tabel-1slut--> <?php // vedligehold mange-til-mange tabel start // tilføj records til mange-til-mange tabel fra 'not' if (isset($_POST['not_editor']) && is_array($_POST['not_editor'])) { foreach ($_POST['not_editor'] as $user) { $user = ($user * 1); // quick int convertion $query = "INSERT INTO category_editors VALUES($user, $category_id )"; mysqli_query($database_link, $query) or die(mysqli_error($database_link)); } } // slet records i mange-til-mange tabel fra 'is' if (isset($_POST['is_editor']) && is_array($_POST['is_editor'])) { foreach ($_POST['is_editor'] as $user) { $user = ($user * 1); // quick int convertion $query = " DELETE FROM category_editors WHERE fk_users_id = $user AND fk_categories_id = $category_id"; mysqli_query($database_link, $query) or die(mysqli_error($database_link)); } } // vedligehold mange-til-mange tabel slut if (isset($category_id) && $category_id!="") { ?> <!-- Start forms til 'tabel-2' --> <form method='post' name="not_editor" multiple="multiple" action='index.php?page=editors#' > <form method='post' name="is_editor" multiple="multiple" action='index.php?page=editors#' > <!-- venstre skærmdel med indsættelse og valg af data fra tabel2 i venstre multiple-felt. Knyttet til form 'not --> <div id="redaktorer"> <div id="redaktorer-left"> <h3>Ikke Redaktører</h3> <select class="form-control" name="not_editor[]" multiple="multiple" size="20"> <?php $query = " SELECT user_id, user_name FROM users WHERE user_id NOT IN ( SELECT fk_users_id FROM category_editors WHERE fk_categories_id = $category_id ) AND fk_roles_id = 3";// 3 == redaktør $result = mysqli_query($database_link, $query) or die(mysqli_error($database_link)); while ($row = mysqli_fetch_assoc($result)) { echo '<option value="'.$row['user_id'].'">'.$row['user_name'].'</option>'; } ?> </select> </div> <!-- redaktorer-left slut --> <!-- højre skærmdel med indsættelse og valg af data fratabel2 i hæjre multiple-felt. Knyttet til form 'is --> <div id="redaktorer-right"> <h3>Redaktører</h3> <select class="form-control" name="is_editor[]" multiple="multiple" size="20"> <?php $query = " SELECT user_id, user_name FROM users INNER JOIN category_editors ON fk_users_id = user_id WHERE fk_categories_id = $category_id AND fk_roles_id = 3";// 3 == redaktør $result = mysqli_query($database_link, $query) or die(mysqli_error($database_link)); while ($row = mysqli_fetch_assoc($result)) { echo '<option value="'.$row['user_id'].'">'.$row['user_name'].'</option>'; } ?> </select> </div> <!-- redaktorer-right slut --> <!-- midterste skærmdel med knapper til 'not' og 'is' --> <div id="redaktorer-center"> <style> .btn-success { font-family: FontAwesome, verdana; } </style> <div class="mar01"> <table><tr><td> <input type="hidden" name="category_id" value="<?php echo $category_id ?>"> <input class="btn btn-success" type="submit" name="is_editor" value=" Vælg til "/> </form> </td></tr><tr><td> <input type="hidden" name="category_id" value="<?php echo $category_id ?>"> <input class="btn btn-success" type="submit" name="not_editor" value=" Vælg fra" /> </form> <!-- Slut forms til 'tabel-2' --> </td></tr></table> </div> </div> <!-- redaktorer-center slut --> <div class="clearboth"></div> </div> <!-- redaktorer slut --> <?php } // isset category slut ?> </div> <!-- panel-body slut --> </div> |