За последние 24 часа нас посетили 22962 программиста и 1234 робота. Сейчас ищет 731 программист ...

Помогите пожалуйста разобраться

Тема в разделе "PHP для новичков", создана пользователем Samir1204, 9 дек 2022.

  1. Samir1204

    Samir1204 Новичок

    С нами с:
    8 дек 2022
    Сообщения:
    5
    Симпатии:
    0
    Добрый день помогите пожалуйста с кодом
    имеется страничка с товарами в админке
    Код (Text):
    1. <!-- Content Header (Page header) -->
    2. <section class="content-header">
    3.     <h1>
    4.         Список товаров
    5.     </h1>
    6.     <ol class="breadcrumb">
    7.         <li><a href="<?=ADMIN;?>"><i class="fa fa-dashboard"></i> Главная</a></li>
    8.         <li class="active">Список товаров</li>
    9.     </ol>
    10. </section>
    11.  
    12. <!-- Main content -->
    13. <section class="content">
    14.     <div class="row">
    15.         <div class="col-md-12">
    16.             <div class="box">
    17.                 <div class="box-body">
    18.                     <div class="text-center">
    19.                         <?php if($pagination->countPages > 1): ?>
    20.                         <?=$pagination;?>
    21.                         <?php endif; ?>
    22.                         <p>(<?=count($products);?> məhsul <?=$count;?>)</p>
    23.                     </div>
    24.                     <div class="table-responsive">
    25.                         <table class="table table-bordered table-hover">
    26.                             <thead>
    27.                             <tr>
    28.                                 <th><a href="<?=ADMIN;?>/product/id">ID</a><a href="<?=ADMIN;?>/product/idb">&nbsp; &nbsp;<i class="fa fa-fw fa-unsorted"></i></a></th>
    29.                                 <th><a href="<?=ADMIN;?>/product/cat">Категория</a></th>
    30.                                 <th><a href="<?=ADMIN;?>/product/index" class="active">Наименование</a></th>
    31.                                 <th><a href="<?=ADMIN;?>/product/market">Маркет</a></th>
    32.                                 <th><a href="<?=ADMIN;?>/product/aksiya">Срок Акции</a></th>
    33.                                 <th>Фото</th>
    34.                                 <th>Цена</th>
    35.                                 <th><a href="<?=ADMIN;?>/product/status">Статус</a></th>
    36.                                 <th>Действия</th>
    37.                             </tr>
    38.                             </thead>
    39.                             <tbody>
    40.                             <?php foreach($products as $product): ?>
    41.                                 <tr>
    42.                                     <td><?=$product['id'];?></td>
    43.                                     <td><?=$product['cat'];?></td>
    44.                                     <td><?=$product['title'];?></td>
    45.                                     <td><?=$product['description'];?></td>
    46.                                     <td><?=$product['keywords'];?></td>
    47.                                     <td><img class="img-responsive zoom-img" width="60px" src="/images/<?=$product['img'];?>"</td>
    48.                                     <td><?=$product['price'];?></td>
    49.                                     <td><?=$product['status'] ? 'On' : 'Off';?>&nbsp; &nbsp;<input type="checkbox" name="status"<?=$product['status'] ? ' checked' : null;?>></td>
    50.                                     <td><a href="<?=ADMIN;?>/product/edit?id=<?=$product['id'];?>" target="_blank"><i class="fa fa-fw fa-eye"></i></a> <a class="delete" href="<?=ADMIN;?>/product/delete?id=<?=$product['id'];?>"><i class="fa fa-fw fa-close text-danger"></i></a></td>
    51.                                 </tr>
    52.                             <?php endforeach; ?>
    53.                             </tbody>
    54.                         </table>
    55.                     </div>
    56.                     <div class="text-right">
    57.                         <form action="<?=ADMIN;?>/product/check?id=<?=$product['id'];?>" method="post">
    58.                         <button type="submit" class="btn btn-success">Сохранить</button>
    59.                     </div>
    60.                     <div class="text-center">
    61.                         <p>(<?=count($products);?> məhsul <?=$count;?>)</p>
    62.                         <?php if($pagination->countPages > 1): ?>
    63.                             <?=$pagination;?>
    64.                         <?php endif; ?>
    65.                     </div>
    66.                 </div>
    67.             </div>
    68.         </div>
    69.     </div>
    70.  
    71. </section>
    72. <!-- /.content -->
    я добавил туда чекбоксы и кнопку
    Код (Text):
    1. &nbsp; &nbsp;<input type="checkbox" name="status"<?=$product['status'] ? ' checked' : null;?>
    Код (Text):
    1. <form action="<?=ADMIN;?>/product/check?id=<?=$product['id'];?>" method="post">
    2.                         <button type="submit" class="btn btn-success">Сохранить</button>
    А вот как сформулировать запрос в контроллере не знаю
    код контроллера
    Код (Text):
    1. <?php
    2.  
    3. namespace app\controllers\admin;
    4.  
    5. use app\models\admin\Product;
    6. use app\models\AppModel;
    7. use ishop\App;
    8. use ishop\libs\Pagination;
    9.  
    10. class ProductController extends AppController {
    11.  
    12.     public function indexAction(){
    13.         $page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
    14.         $perpage = 1000;
    15.         $count = \R::count('product');
    16.         $pagination = new Pagination($page, $perpage, $count);
    17.         $start = $pagination->getStart();
    18.         $products = \R::getAll("SELECT product.*, category.title AS cat FROM product JOIN category ON category.id = product.category_id ORDER BY product.title LIMIT $start, $perpage");
    19.         $this->setMeta('Список товаров');
    20.         $this->set(compact('products', 'pagination', 'count'));
    21.     }
    22. public function addImageAction(){
    23.         if(isset($_GET['upload'])){
    24.             if($_POST['name'] == 'single'){
    25.                 $wmax = App::$app->getProperty('img_width');
    26.                 $hmax = App::$app->getProperty('img_height');
    27.             }else{
    28.                 $wmax = App::$app->getProperty('gallery_width');
    29.                 $hmax = App::$app->getProperty('gallery_height');
    30.             }
    31.             $name = $_POST['name'];
    32.             $product = new Product();
    33.             $product->uploadImg($name, $wmax, $hmax);
    34.         }
    35.     }
    36.  
    37.     public function editAction(){
    38.         if(!empty($_POST)){
    39.             $id = $this->getRequestID(false);
    40.             $product = new Product();
    41.             $data = $_POST;
    42.             $product->load($data);
    43.             $product->attributes['status'] = $product->attributes['status'] ? '1' : '0';
    44.             $product->attributes['hit'] = $product->attributes['hit'] ? '1' : '0';
    45.             $product->getImg();
    46.             if(!$product->validate($data)){
    47.                 $product->getErrors();
    48.                 redirect();
    49.             }
    50.             if($product->update('product', $id)){
    51.                 $product->editFilter($id, $data);
    52.                 $product->editRelatedProduct($id, $data);
    53.                 $product->saveGallery($id);
    54.                 $alias = AppModel::createAlias('product', 'alias', $data['title'], $id);
    55.                 $product = \R::load('product', $id);
    56.                 $product->alias = $alias;
    57.                 \R::store($product);
    58.                 $_SESSION['success'] = 'Изменения сохранены';
    59.                 redirect();
    60.             }
    61.         }
    62.  
    63.         $id = $this->getRequestID();
    64.         $product = \R::load('product', $id);
    65.         App::$app->setProperty('parent_id', $product->category_id);
    66.         $filter = \R::getCol('SELECT attr_id FROM attribute_product WHERE product_id = ?', [$id]);
    67.         $related_product = \R::getAll("SELECT related_product.related_id, product.title FROM related_product JOIN product ON product.id = related_product.related_id WHERE related_product.product_id = ?", [$id]);
    68.         $gallery = \R::getCol('SELECT img FROM gallery WHERE product_id = ?', [$id]);
    69.         $this->setMeta("Редактирование товара {$product->title}");
    70.         $this->set(compact('product', 'filter', 'related_product', 'gallery'));
    71.     }
    72.  
    73.     public function addAction(){
    74.         if(!empty($_POST)){
    75.             $product = new Product();
    76.             $data = $_POST;
    77.             $product->load($data);
    78.             $product->attributes['status'] = $product->attributes['status'] ? '1' : '0';
    79.             $product->attributes['hit'] = $product->attributes['hit'] ? '1' : '0';
    80.             $product->getImg();
    81.  
    82.             if(!$product->validate($data)){
    83.                 $product->getErrors();
    84.                 $_SESSION['form_data'] = $data;
    85.                 redirect();
    86.             }
    87.  
    88.             if($id = $product->save('product')){
    89.                 $product->saveGallery($id);
    90.                 $alias = AppModel::createAlias('product', 'alias', $data['title'], $id);
    91.                 $p = \R::load('product', $id);
    92.                 $p->alias = $alias;
    93.                 \R::store($p);
    94.                 $product->editFilter($id, $data);
    95.                 $product->editRelatedProduct($id, $data);
    96.                 $_SESSION['success'] = 'Товар добавлен';
    97.             }
    98.             redirect();
    99.         }
    100.  
    101.         $this->setMeta('Новый товар');
    102.     }
    103.  
    104.         public function deleteAction(){
    105.             $id = $this->getRequestID();
    106.             $product = \R::load('product', $id);
    107.             \R::trash($product);
    108.             $_SESSION['success'] = 'Товар удален';
    109.             redirect();
    110.         }
    111.      
    112.     public function relatedProductAction(){
    113.         /*$data = [
    114.             'items' => [
    115.                 [
    116.                     'id' => 1,
    117.                     'text' => 'Товар 1',
    118.                 ],
    119.                 [
    120.                     'id' => 2,
    121.                     'text' => 'Товар 2',
    122.                 ],
    123.             ]
    124.         ];*/
    125.  
    126.         $q = isset($_GET['q']) ? $_GET['q'] : '';
    127.         $data['items'] = [];
    128.         $products = \R::getAssoc('SELECT id, title FROM product WHERE title LIKE ? LIMIT 10', ["%{$q}%"]);
    129.         if($products){
    130.             $i = 0;
    131.             foreach($products as $id => $title){
    132.                 $data['items'][$i]['id'] = $id;
    133.                 $data['items'][$i]['text'] = $title;
    134.                 $i++;
    135.             }
    136.         }
    137.         echo json_encode($data);
    138.         die;
    139.     }
    140.  
    141.     public function deleteGalleryAction(){
    142.         $id = isset($_POST['id']) ? $_POST['id'] : null;
    143.         $src = isset($_POST['src']) ? $_POST['src'] : null;
    144.         if(!$id || !$src){
    145.             return;
    146.         }
    147.         if(\R::exec("DELETE FROM gallery WHERE product_id = ? AND img = ?", [$id, $src])){
    148.             @unlink(WWW . "/images/$src");
    149.             exit('1');
    150.         }
    151.         return;
    152.     }
    153.  
    154.  
    155. }
     

    Вложения:

    • Clip.jpg
      Clip.jpg
      Размер файла:
      70,4 КБ
      Просмотров:
      6
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    сформулируй вопрос так, чтобы тебе можно было помочь. что ты пытаешся сделать?
     
  3. Samir1204

    Samir1204 Новичок

    С нами с:
    8 дек 2022
    Сообщения:
    5
    Симпатии:
    0
    @artoodetoo задача такая нужно отключать по чекбоксам товары , в данный момент необходимо заходить в каждый товар и отключать по одному, я же хочу через главную страницу по чекбоксам отключать их.
    --- Добавлено ---
    @artoodetoo я добавил чекбокс и кнопку а как сформировать запрос в контроллере на отключение не знаю
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    так же как и в любом другом случае - нужна форма и кнопка отправки запроса. это не про php или js, это базовые понятия html: формы, кнопки...

    Код (Text):
    1.  
    2. <form method="post" action="/my/handler/address.php">
    3.   <input type="checkbox" name="product_ids[]" value="168">
    4.   <input type="checkbox" name="product_ids[]" value="169">
    5.   <input type="checkbox" name="product_ids[]" value="174">
    6.  
    7.   <input type="submit" name="doit" value="Disable">
    8. </form>
    если ты дашь одинаковое имя всем чекбоксам и в нем будут скобки [], то этот параметр прилетит к тебе как массив, в котором будут значения из атрибута value. логично поместить в этот атрибут ID записей, которые ты хочешь обработать.
    вот и вся наука!
    --- Добавлено ---
    ты главное не накосячь с вложенностью тегов. надо чтобы инпуты были внутри формы, а если форм на странице несколько, то они не должны пересекаться или вкладываться друг в друга.
     
  5. Samir1204

    Samir1204 Новичок

    С нами с:
    8 дек 2022
    Сообщения:
    5
    Симпатии:
    0
    @artoodetoo Для начало хочу поблагодарить тебя за то что, ты проявил внимание к моей проблеме. Дело в том что я воссоздал необходимое мне задачу на обычном PHP скрипте и все там работает. Из-за незнания MVC и redbeanPHP я не могу его туда в правильной форме трансформировать.

    Код (Text):
    1. <?php
    2.  
    3.   $conn=mysqli_connect("localhost","root","root","upd");
    4.   if(!$conn){
    5.     die("Could not connect to the database!".mysqli_connect_error());
    6.   }
    7. ?>
    8. <!DOCTYPE html>
    9. <html lang="ru">
    10. <head>
    11. <meta charset="UTF-8">
    12. <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    13. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    14. <link href="css/style.css" rel="stylesheet" type="text/css">
    15. <title>Checkbox</title>
    16.  
    17. <body>
    18.   <?php
    19.     if(isset($_POST['submit'])){
    20.         if(isset($_POST['update'])){
    21.           foreach($_POST['update'] as $updateid){
    22.             $query="UPDATE product SET status='0' WHERE id='$updateid'";
    23.             mysqli_query($conn,$query);
    24.           }
    25.  
    26.             }
    27.     }
    28.  
    29.   $sql="SELECT * FROM product";
    30.   $result=mysqli_query($conn,$sql);
    31.   ?>
    32.   <form action="" method="post">
    33.   <table>
    34.     <tr>
    35.     <th>id</th>
    36.     <th>Название</th>
    37.     <th>статус</th>
    38.     <th><input type="checkbox" id="checkAll"></th>
    39.  
    40.   </tr>
    41. <?php
    42.   while($product=mysqli_fetch_array($result)){
    43.   ?>
    44.   <tr align="center">
    45.     <td><?=$product['id']?></td>
    46.     <td><?=$product['title']?></td>
    47.     <td><?=$product['status'] ? 'On' : 'Off';?></td>
    48.     <td><input type="checkbox" name="update[]" class="checkItem" value="<?=$product['id']?>"></td>
    49.   </tr>
    50.  
    51. <?php
    52. }
    53. ?>
    54.   </table>
    55. <br><br>
    56.  
    57.      <button type="submit" name="submit">Сохранить</button>
    58.   </form>
    59. <br><br>
    60.  
    61. </body>
    62. </html>
    вот здесь в обычном php все работает
    --- Добавлено ---
    @artoodetoo
    я привел страничку необходимую для меня в токае же состояние
    Код (Text):
    1. <!-- Content Header (Page header) -->
    2. <section class="content-header">
    3.     <h1>
    4.         Список товаров
    5.     </h1>
    6.     <ol class="breadcrumb">
    7.         <li><a href="<?=ADMIN;?>"><i class="fa fa-dashboard"></i> Главная</a></li>
    8.         <li class="active">Список товаров</li>
    9.     </ol>
    10. </section>
    11.  
    12. <!-- Main content -->
    13. <section class="content">
    14.     <div class="row">
    15.         <div class="col-md-12">
    16.             <div class="box">
    17.                 <div class="box-body">
    18.                     <div class="text-center">
    19.                         <?php if($pagination->countPages > 1): ?>
    20.                         <?=$pagination;?>
    21.                         <?php endif; ?>
    22.                         <p>(<?=count($products);?> məhsul <?=$count;?>)</p>
    23.                     </div>
    24.                     <div class="table-responsive">
    25.                     <form action="<?=ADMIN;?>/product/update" method="post">
    26.                         <table class="table table-bordered table-hover">
    27.                             <thead>
    28.                             <tr>
    29.                                 <th><a href="<?=ADMIN;?>/product/id">ID</a><a href="<?=ADMIN;?>/product/idb">&nbsp; &nbsp;<i class="fa fa-fw fa-unsorted"></i></a></th>
    30.                                 <th><a href="<?=ADMIN;?>/product/cat">Категория</a></th>
    31.                                 <th><a href="<?=ADMIN;?>/product/index" class="active">Наименование</a></th>
    32.                                 <th><a href="<?=ADMIN;?>/product/market">Маркет</a></th>
    33.                                 <th><a href="<?=ADMIN;?>/product/aksiya">Срок Акции</a></th>
    34.                                 <th>Фото</th>
    35.                                 <th>Цена</th>
    36.                                 <th><a href="<?=ADMIN;?>/product/status">Статус</a></th>
    37.                                 <th>Действия</th>
    38.                             </tr>
    39.                             </thead>
    40.                             <tbody>
    41.                             <?php foreach($products as $product): ?>
    42.                                 <tr>
    43.                                     <td><?=$product['id'];?></td>
    44.                                     <td><?=$product['cat'];?></td>
    45.                                     <td><?=$product['title'];?></td>
    46.                                     <td><?=$product['description'];?></td>
    47.                                     <td><?=$product['keywords'];?></td>
    48.                                     <td><img class="img-responsive zoom-img" width="60px" src="/images/<?=$product['img'];?>"</td>
    49.                                     <td><?=$product['price'];?></td>
    50.                                     <td><?=$product['status'] ? 'On' : 'Off';?> &nbsp; &nbsp; &nbsp; <input type="checkbox" name="update[]" value="<?=$product['id']?>"></td>
    51.                                     <td><a href="<?=ADMIN;?>/product/edit?id=<?=$product['id'];?>" target="_blank"><i class="fa fa-fw fa-eye"></i></a> <a class="delete" href="<?=ADMIN;?>/product/delete?id=<?=$product['id'];?>"><i class="fa fa-fw fa-close text-danger"></i></a></td>
    52.                                 </tr>
    53.                             <?php endforeach; ?>
    54.                             </tbody>
    55.                         </table>
    56.                     </div>
    57.                     <div class="text-right">
    58.                         <button type="submit" name="submit" class="btn btn-success">Сохранить</button>
    59.                     </div>
    60.                     <div class="text-center">
    61.                         <p>(<?=count($products);?> məhsul <?=$count;?>)</p>
    62.                         <?php if($pagination->countPages > 1): ?>
    63.                             <?=$pagination;?>
    64.                         <?php endif; ?>
    65.                     </div>
    66.                 </div>
    67.             </div>
    68.         </div>
    69.     </div>
    70.  
    71. </section>
    72. <!-- /.content -->
    Изменение
    Для кнопку это
    Код (Text):
    1. <button type="submit" name="submit" class="btn btn-success">Сохранить</button>
    Для чекбокса в такое
    Код (Text):
    1. <input type="checkbox" name="update[]" value="<?=$product['id']?>">
    Для action такое
    Код (Text):
    1. <form action="<?=ADMIN;?>/product/update" method="post">
    --- Добавлено ---
    Осталось только прописать необходимый код для контроллера и модели, а я не знаю как правильно его написать
    --- Добавлено ---
    Осталось только прописать необходимый код для контроллера и модели, а я не знаю как правильно е
    @artoodetoo выше я уже указывал код контроллера и модели
     

    Вложения:

    • Clip.jpg
      Clip.jpg
      Размер файла:
      61,6 КБ
      Просмотров:
      1