Задать вопрос
Ответы пользователя по тегу MySQL
  • Как можно изменить значения в БД при помощи PHP?

    puchkovk
    @puchkovk
    Усложнять — просто. Упрощать — сложно.
    Если предположить, что у вас таблица вида
    |   id   | reviews_name | reviews_body | reviews_logo |
    -------------------------------------------------------
    |    1   | Вася         | тут был вася | /pic.jpg     |
    -------------------------------------------------------
    |    2   | Петя         | Петя тут был | /pic2.jpg    |
    -------------------------------------------------------

    И вам надо иметь возможность сделать редактирование нескольких строк сразу, то можно вот так:

    $model = [ 'id' => 'Идентификатор', 'reviews_name' => 'Имя', 'reviews_body'=> 'Текст', 'reviews_logo'=>'Аватар' ];
    
    if (!empty($_POST)) {
       $update_review = $db->prepare(
        'UPDATE reviews SET 
          reviews_name = :name, 
          reviews_body = :body,
          reviews_logo = :userpic
        WHERE id = :id'
          );
    
        $id = $_POST['id'];
        $name = $_POST['reviewName'];
        $body = $_POST['reviewBody'];
        $userpic = $_POST['userPic'];
    
        foreach ($_POST['reviews']  as $pr) {
            $data = [];       
            foreach ($model as $field=>$field_name) {
                $data[$field] = !empty($pr[$field]) ? $pr[$field] : '';
            }
            $update_review->execute($data);
       }
        $update_review->execute([
          'name' => $name,
          'body' => $body,
          'userpic' => $userpic,
          'id' => $id
        ]);
    
    $reviews = $db->select ... // получаем отзывы, которые нам нужны
    
    foreach ($reviews as $r) {
       foreach ($model as $field=>$field_name) {
           ?>
           <?=$field_name?>: <input type="text" name="reviews[<?=$r['id']?>][<?=$r[$field]?>]" value="<?=$r[$field]?>" />
           <?php
       }
       ?>
       <br />
       <?php
    }
    ?>
    <input type="submit" />


    Чтобы добавить новое поле - понадобится по сути, только обновить таблицу в БД и массив $data.
    Ответ написан
    Комментировать
  • Как сделать такой запрос?

    puchkovk
    @puchkovk
    Усложнять — просто. Упрощать — сложно.
    Тут судя по всему, диапазоны IP адресов, нужно это как-то пересохранить, как сказал FanatPHP в более машиночитаемый вид, возможно, в 2 колонки - start_ip и end_ip и тогда уже строить запрос.

    Можно, теоретически, и регулярку придумать, но мне кажется, она будет какая-то лютая совсем, я явно не быстрая.
    Ответ написан
    Комментировать