Здравствуйте дорогие друзья ! Я новичок в php. Если честно долго мучиться тоже не стал, а решил сразу спросить у вас. Есть веб приложение. На данный момент он отображает на странице весь список сотрудников с базы. А нужно чтоб отображал по нужному id. То есть org_id=8. Помогите пожалуйста. Код (Text): $empls = $db->get_empl(); if ($empls) { foreach ($empls as $empl) { $post = $db->get_post($empl['post_id']); $org = $db->get_org($empl['org_id']); $cat = $db->get_cat($empl['cat_id']); if ($empl['paydag']==='0') { $paydag = ''; } else $paydag = intval($empl['paydag']); if ($empl['payrus']==='0') { $payrus = ''; } else $payrus = intval($empl['payrus']); if ($empl['hid']) $hidcalss = 'class="hid"'; else $hidcalss = ' '; } }
этот кусок кода выводит на страницу всю таблицу с базы. "empl" это таблица сотрудников. --- Добавлено --- вот структура самой базы --- Добавлено --- вот полный код Код (Text): <?php require_once 'auth.php'; require_once 'database.php'; $auth = new auth; //Если пользователь не авторизован, то перенаправляем его внеа странизу авторизации require_once "auth_proc.php"; $db = new db; if(isset($_POST["delempl"])){ $delempl = intval($_POST["delempl"]); $db->del_empl($delempl); } $empls = $db->get_empl(); ?> <!DOCTYPE html> <html lang="ru"> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta charset="UTF-8"> <!-- <link rel="stylesheet" href="css/bootstrap.min.css"> --> <link rel="stylesheet" href="css/bootstrap4.1.1.css"> <!-- <link rel="stylesheet" href="css/dataTables.bootstrap4.min.css"> --> <link rel="stylesheet" href="css/jquery.dataTables.min.css"> <link rel="stylesheet" href="css/style.css?v=1"> <!-- <link rel="stylesheet" type="text/css" href="css/jquery.dataTables.min.css"> --> <link rel="icon" type="image/png" href="img/favicon-16x16.png" sizes="16x16"> <link rel="icon" type="image/png" href="img/favicon-32x32.png" sizes="32x32"> <link rel="icon" type="image/png" href="img/favicon-96x96.png" sizes="96x96"> <title>Tables</title> </head> <body> <script type="text/javascript" src="js/jquery-3.3.1.js"></script> <script type="text/javascript" src="js/bootstrap.min.js"></script> <!-- <div class="container"> --> <?php include_once "menu.html"; ?> <div class="main"> <div class="container-fluid"> <div class="row"> <div class="col-sm"> <div class="post"> <!-- <h2>БД табель</h2> --> </div> </div> </div> <div class="row"> <div class="col-12 tblock"> <p><a href="./addempl.php" class="addlink"><img src="img/add50x50.png" class="add" alt=""> добавить рабочего</a></p> <table id="tbl" class="dataTable"> <thead> <tr> <th> СНИЛС </th> <th> Фамилия </th> <th> Имя </th> <th> Отчество </th> <th> Оклад Д </th> <th> Оклад Р </th> <th> Р.дней </th> <th> Организация </th> <th> Должность </th> <th> категория </th> <th id="del"> </th> <th id="edit"> </th> </tr> </thead> <tbody> <?php if ($empls) { foreach ($empls as $empl) { // print_r($empl); // $dep = $db->get_dep($empl['dep_id']); $post = $db->get_post($empl['post_id']); $org = $db->get_org($empl['org_id']); $cat = $db->get_cat($empl['cat_id']); if ($empl['paydag']==='0') { $paydag = ''; } else $paydag = intval($empl['paydag']); if ($empl['payrus']==='0') { $payrus = ''; } else $payrus = intval($empl['payrus']); if ($empl['hid']) $hidcalss = 'class="hid"'; else $hidcalss = ' '; $delbut = '<form method="post" onSubmit=\'return confirm("Для удаления сотрудника «'. $empl['sname'] .' '.$empl['name'].' '.$empl['patr'].'» нажмите OK?");\'> <input name="delempl" type="hidden" value="'.$empl['id'].'" /> <input name="delemplbut" type="image" src="./img/del15x15.png"> <!--<button type="submit" class="btn btn-danger btn-sm">удал.</button>--> </form>'; $editbut = '<form method="post" action="editempl.php"> <input name="editempl" type="hidden" value="'.$empl['id'].'" /> <input name="editemplbut" type="image" src="./img/edit15x15.png"> <!--<button type="submit" class="btn btn-primary btn-sm">ред.</button>--> </form>'; echo '<tr '.$hidcalss.'> <td>'.$empl['inn'].'</td> <td>'.$empl['sname'].'</td> <td>'.$empl['name'].'</td> <td>'.$empl['patr'].'</td> <td>'.$paydag.'</td><td>'.$payrus.'</td> <td>'.$empl['sched'].'</td> <td>'.$org['name'].'</td> <td>'.$post['name'].'</td> <td>'.$cat['name'].'</td> <td> '.$delbut.' </td><td> '.$editbut.' </td></tr>'; } } ?> </tbody> </table> </div> </div> </div> </div> <!-- </div> --> <script type="text/javascript" src="./js/jquery.dataTables1.10.10.min.js"></script> <script type="text/javascript" src="./js/empllisttabset.js?v=2"></script> </body> </html>
Это называется SQL запрос. Как-то так: Код (SQL): SELECT * FROM employee WHERE id=? --- Добавлено --- Как такие штуки используются во фреймворке, который в процитированном тексте, я не в курсе. Читай доки, экспериментируй. Мы не можем и не хотим знать все чёртовы самописы.
вот полный код Код (Text): <?php require_once 'auth.php'; require_once 'database.php'; $auth = new auth; //Если пользователь не авторизован, то перенаправляем его внеа странизу авторизации require_once "auth_proc.php"; $db = new db; if(isset($_POST["delempl"])){ $delempl = intval($_POST["delempl"]); $db->del_empl($delempl); } $empls = $db->get_empl(); ?> <!DOCTYPE html> <html lang="ru"> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta charset="UTF-8"> <!-- <link rel="stylesheet" href="css/bootstrap.min.css"> --> <link rel="stylesheet" href="css/bootstrap4.1.1.css"> <!-- <link rel="stylesheet" href="css/dataTables.bootstrap4.min.css"> --> <link rel="stylesheet" href="css/jquery.dataTables.min.css"> <link rel="stylesheet" href="css/style.css?v=1"> <!-- <link rel="stylesheet" type="text/css" href="css/jquery.dataTables.min.css"> --> <link rel="icon" type="image/png" href="img/favicon-16x16.png" sizes="16x16"> <link rel="icon" type="image/png" href="img/favicon-32x32.png" sizes="32x32"> <link rel="icon" type="image/png" href="img/favicon-96x96.png" sizes="96x96"> <title>Tables</title> </head> <body> <script type="text/javascript" src="js/jquery-3.3.1.js"></script> <script type="text/javascript" src="js/bootstrap.min.js"></script> <!-- <div class="container"> --> <?php include_once "menu.html"; ?> <div class="main"> <div class="container-fluid"> <div class="row"> <div class="col-sm"> <div class="post"> <!-- <h2>БД табель</h2> --> </div> </div> </div> <div class="row"> <div class="col-12 tblock"> <p><a href="./addempl.php" class="addlink"><img src="img/add50x50.png" class="add" alt=""> добавить рабочего</a></p> <table id="tbl" class="dataTable"> <thead> <tr> <th> СНИЛС </th> <th> Фамилия </th> <th> Имя </th> <th> Отчество </th> <th> Оклад Даг </th> <th> Оклад Рос </th> <th> Р.дней </th> <th> Организация </th> <th> Должность </th> <th> категория </th> <th id="del"> </th> <th id="edit"> </th> </tr> </thead> <tbody> <?php if ($empls) { foreach ($empls as $empl) { // print_r($empl); // $dep = $db->get_dep($empl['dep_id']); $post = $db->get_post($empl['post_id']); $org = $db->get_org($empl['org_id']); $cat = $db->get_cat($empl['cat_id']); if ($empl['paydag']==='0') { $paydag = ''; } else $paydag = intval($empl['paydag']); if ($empl['payrus']==='0') { $payrus = ''; } else $payrus = intval($empl['payrus']); if ($empl['hid']) $hidcalss = 'class="hid"'; else $hidcalss = ' '; $delbut = '<form method="post" onSubmit=\'return confirm("Для удаления сотрудника «'. $empl['sname'] .' '.$empl['name'].' '.$empl['patr'].'» нажмите OK?");\'> <input name="delempl" type="hidden" value="'.$empl['id'].'" /> <input name="delemplbut" type="image" src="./img/del15x15.png"> <!--<button type="submit" class="btn btn-danger btn-sm">удал.</button>--> </form>'; $editbut = '<form method="post" action="editempl.php"> <input name="editempl" type="hidden" value="'.$empl['id'].'" /> <input name="editemplbut" type="image" src="./img/edit15x15.png"> <!--<button type="submit" class="btn btn-primary btn-sm">ред.</button>--> </form>'; echo '<tr '.$hidcalss.'> <td>'.$empl['inn'].'</td> <td>'.$empl['sname'].'</td> <td>'.$empl['name'].'</td> <td>'.$empl['patr'].'</td> <td>'.$paydag.'</td><td>'.$payrus.'</td> <td>'.$empl['sched'].'</td> <td>'.$org['name'].'</td> <td>'.$post['name'].'</td> <td>'.$cat['name'].'</td> <td> '.$delbut.' </td><td> '.$editbut.' </td></tr>'; } } ?> </tbody> </table> </div> </div> </div> </div> <!-- </div> --> <script type="text/javascript" src="./js/jquery.dataTables1.10.10.min.js"></script> <script type="text/javascript" src="./js/empllisttabset.js?v=2"></script> </body> </html> --- Добавлено --- не подскажите как мне применить этот запрос в данном коде ?
Так, вали ка ты в раздел "Сделайте за меня"! --- Добавлено --- "Вот весь код" — это ты типа помог нам разрулить твою проблему )))) Смешной ты.
@ara05ru покажи ка структуру вот этих вот функций, очень любопытно - get_dep (), get_post (), get_org (), get_cat (). Чую они полностью одинаковые, но все же хотя бы одну из них.
в этот стрёмный раздел переносятся авторы, которые не показали признаков самостоятельной работы. ты даже не пытаешься понять почему в ответ на "весь твой код" тебя таки спрашивают. значит того что надо здесь нет, логично?
@ara05ru у тебя просто написано $post = $db->get_post($empl['post_id']); А где сама функция get_post()? Она должна быть примерно такой: PHP: public function get_post($id){ // тут запрос, вот она и нужна } а скорее всего у тебя таблица называется post, это так? и empl, org, cat это тоже название таблиц? --- Добавлено --- Если ответ утвердительный тогда то как ты вытягиваешь данные, не верно. --- Добавлено --- И получается ты в цикле тянешь из таблицы данные --- Добавлено --- Просто ответь на мои вопросы и я смогу тебе помочь =)
@ara05ru теперь объясняю что ты делаешь на самом деле. Чтобы ты понял. шаг 1. ты тянешь все данные из таблицы вот этой строчкой PHP: $empls = $db->get_empl(); В реалиях у тебя происходит такой код: PHP: SELECT * //вытянуть все FROM empl // из таблицы empl Ты получаешь данные, по твоему скрину это три строчки данных. шаг 2. ты вставляешь свой массив $empls в цикл: PHP: foreach ($empls as $empl) { $post = $db->get_post($empl['post_id']); $org = $db->get_org($empl['org_id']); $cat = $db->get_cat($empl['cat_id']); } Ты опять обращаешься к базе данных но передаешь уже id того что ты взял из первой таблицы: PHP: SELECT * //вытянуть все FROM post // из таблицы post WHERE id = $post_id // ищешь по вытянутому тобой id PHP: SELECT * //вытянуть все FROM org // из таблицы org WHERE id = $org_id // ищешь по вытянутому тобой id PHP: SELECT * //вытянуть все FROM cat // из таблицы cat WHERE id = $cat_id // ищешь по вытянутому тобой id И так ты делаешь 3 раза на три таблицы. Итого за одну секунду ты своим кодом обращаешься к своей таблице 10 раз. --- Добавлено --- Напиши что нибудь, чтоб разделить мой ответ, напишу тебе запрос, попробуешь его на новом php файле.
... а это чертовски неправильно. теперь покажи файл где у тебя описаны функции работы с БД. наверное это файл database.php возможно кто-то более умный уже написал нужную функцию. надо убедиться.
@Artur_hopf я думаю ты вываливаешь на него слишком много инфы сразу. надо инкрементально, раз уж у тебя есть терпение...
как вы и написали в database.php лежат эти функции. Код (Text): //получить должность/и public function get_post($id=''){ if($id!='' and is_numeric($id)){ $post = R::load('post', $id); $return['id'] = $post->id; $return['name'] = $post->name; $return['org_id'] = $post->org_id; return $return; } else{ $post = R::findAll('post'); $i=0; foreach ($post as $key => $value) { $return[$i] = array('id'=>$value{'id'}, 'name'=>$value{'name'}, 'org_id'=>$value{'org_id'},); $i++; } return $return; } } //получить сотрудника/ов public function get_empl($id=''){ if($id!='' and is_numeric($id)){ $empl = R::load('empl', $id); $return['id'] = $empl->id; $return['inn'] = $empl->inn; $return['sname'] = $empl->sname; $return['name'] = $empl->name; $return['patr'] = $empl->patr; $return['org_id'] = $empl->org_id; $return['post_id'] = $empl->post_id; $return['paydag'] = $empl->paydag; $return['payrus'] = $empl->payrus; $return['sched'] = $empl->sched; $return['cat_id'] = $empl->cat_id; $return['grade'] = $empl->grade; $return['comm'] = $empl->comm; $return['hid'] = $empl->hid; return $return; } else{ $org = R::findAll('empl'); $i=0; foreach ($org as $key => $value) { $return[$i] = array('id'=>$value{'id'}, 'inn'=>$value{'inn'}, 'sname'=>$value{'sname'}, 'name'=>$value{'name'}, 'patr'=>$value{'patr'}, 'org_id'=>$value{'org_id'}, 'post_id'=>$value{'post_id'}, 'paydag'=>$value{'paydag'}, 'payrus'=>$value{'payrus'}, 'sched'=>$value{'sched'}, 'cat_id'=>$value{'cat_id'}, 'grade'=>$value{'grade'} , 'comm'=>$value{'comm'} , 'hid'=>$value{'hid'}); $i++; } return $return; } }
Блин ребята если б я знал. Нам написал один прогер это и ушел. теперь мелкие задачки появились которые нужно решать.
public function get_empl($id=''){ ну вот же, есть аргумент $id, надо его использовать --- Добавлено --- я ушел
@ara05ru в общем парень, учи с нуля php. У тебя тут ужас. И ты это поймешь через пол годика наверное. А чтобы вытянуть только нужный тебе id исправь вот это строчку у себя: PHP: $empls = $db->get_empl(); исправь на: PHP: $empls = $db->get_empl('1'); // 1 это id из базы empl --- Добавлено --- @ara05ru тебе придется изучить там все, эти функции очень узконаправленны, писать придется новые. Создавай новый php фаил и учись вытягивать данные из своей таблички по старинке. Думаю начать тебе можно отсюда https://www.php.net/manual/ru/book.mysqli.php