Обновить значение строки таблицы с помощью кнопки «Отправить»

0

У меня есть некоторые данные в моей базе данных MySQL, которые я отображаю в таблице, используя PHP, как показано ниже

Изображение 174551

$requirement_qry="SELECT t1.*, t2.id as unit_id, t2.name as unit_name FROM 'tbl_requirements' 
t1 INNER JOIN tbl_units AS t2 on unit_type = t2.id AND project_id='".$_GET['project_id']."' AND user_id='".$userid."'";
$requirement_result=mysqli_query($mysqli,$requirement_qry);

                <form action="" name="addeditcategory" method="post" class="form form-horizontal" enctype="multipart/form-data">
            <input  type="hidden" name="project_id" value="<?php echo $_GET['project_id'];?>" />

          <div class="section">
            <div class="section-body">
              <div class="form-group">
                <label class="col-md-3 control-label" >Project Name :-</label>
                <div class="col-md-6">
                  <input type="text" name="name" id="name" value="<?php if(isset($_GET['project_id'])){echo $row['name'];}?> " class="form-control" disabled>
                </div>
              </div>

              <div class="form-group">
                <label class="col-md-3 control-label" >Location :-</label>
                <div class="col-md-6">
                  <input type="text" name="location" id="location" value="<?php if(isset($_GET['project_id'])){echo $row['location'];}?> " class="form-control" disabled>
                </div>
              </div>


              <div class="form-group">
                <label class="col-md-3 control-label">Project Status :-</label>

                <div class="col-md-6">

                          <select name="status" id="status" class="select2" disabled>
                            <?php if (!isset($_GET['project_id'])) { ?>
                            <option value="1">--Project Status--</option>
                            <?php } ?>
                            <option value="1" <?php echo $row['status'] == '1' ? 'selected' : ''; ?> >Open</option>                            
                            <option value="2" <?php echo $row['status'] == '2' ? 'selected' : ''; ?> >Closed</option>                            
                        </select>

                </div>
              </div>



               <div class="form-group">
                <div class="col-md-3">
                  <label class="control-label">Project Details :-</label>
                </div>
                <div class="col-md-6">
                  <textarea  name="details" id="details" rows="4" class="form-control" disabled><?php echo stripslashes($row['details']);?></textarea>

                </div>
              </div>


                <div class="form-group">
                <div class="col-md-3">
                  <label class="control-label">Project Requirements :-</label>
                </div>
                <div class="col-md-6">
                  <table id="t01">
                    <thead>
                      <tr>
                        <th>#</th>
                        <th>Requirements</th> 
                        <th>Required</th>
                        <th>Sent</th>
                        <th>Action</th>
                      </tr>
                    </thead>
                    <tbody>
                            <?php
                            $no     = 1;
                            while ($row1 = mysqli_fetch_array($requirement_result))
                            {
                                $id = $row1['id'];
                                $unit_name = $row1['unit_name'];
                                echo '<input  type="hidden" name="reqId" id= "reqId" value="'.$id.'" />';
                                echo '<tr>
                                        <td>'.$no.'</td>
                                        <td>'.$row1['name'].'</td>
                                        <td>'.$row1['unit_required']." ".$unit_name.'</td>
                                        <td><input type="number" id = "received" name = "received" value ="'.$row1['unit_received'].'"/></td>
                                        <td><button type="submit" name="submit" class="btn btn-primary" style="padding:5px 10px;">Submit</button></td>
                                    </tr>';
                                $no++;
                            }?>
                    </tbody>
                    </table>

                </div>
            </div>
          </div>
        </form>

Над кодом правильно отображаются мои данные. У меня есть одно значение поля из строки необходимо обновить с помощью кнопки отправки. Он работает нормально, если есть только одна строка... если есть несколько строк, он не обновляет данные за исключением последней строки. Мой код отправки, как показано ниже

if(isset($_POST['submit']) and isset($_POST['project_id']))
{       

        $projectId = $_GET['project_id'];

        $data = array(
                     'unit_received'  =>  $_POST['received']
                    );      
                 $unit_edit=Update('tbl_requirements', $data, " WHERE id = '".$_POST['reqId']."'");
                 print_r($unit_edit);
                 echo $unit_edit;


        if ($unit_edit > 0)
        { 

                    $_SESSION['msg']="11"; 
                    header( "Location:view_open_project.php?project_id=".$_POST['project_id']);
                    exit;

        }
}

Я немного новичок в PHP, дайте мне знать, если кто-то может помочь мне решить эту ошибку. Большое спасибо :)

  • 0
    Вы уже задавали и удалили этот вопрос, потому что он получил отрицательный голос !!
  • 0
    @KebabProgrammer Я исправил как можно больше, но не смог ее решить, поэтому я снова его опубликовал. Спасибо
Показать ещё 4 комментария
Теги:

2 ответа

0

Что вы можете сделать, это просто создать скрытую форму, где вы будете сохранять оригинальные элементы. Когда вы нажимаете кнопку "Сохранить", вы просто находите фактическое значение и устанавливаете его для элементов внутри скрытой формы, а затем запускаете кнопку отправки внутри скрытой формы.

Обратите внимание на изменения, которые я сделал в вашем коде.

1. Удалил скрытый элемент reqId из внутреннего цикла.

2. Присвойте имя класса кнопке внутри цикла и измените тип кнопки с submit на button. Добавлен атрибут data-id="'.$id.'".

3. Вход, received внутри цикла, дал уникальный идентификатор и имя путем объединения $id.

4.Создана скрытая форма со скрытым вводом в нее. У него есть ваши реальные входные имена.

5. Создана функция jquery для добавления события click к кнопке внутри цикла.

6. Переместил скрытый элемент project_id внутрь скрытой формы.

Теперь смотрите код ниже для более подробной информации. Надеюсь, что это поможет вам..

 <form action="" name="addeditcategory" method="post" class="form form-horizontal" enctype="multipart/form-data">
                    <input type="hidden" name="project_id" value="<?php echo $_GET['project_id']; ?>"/>

                    <div class="section">
                        <div class="section-body">
                            <div class="form-group">
                                <label class="col-md-3 control-label">Project Name :-</label>
                                <div class="col-md-6">
                                    <input type="text" name="name" id="name" value="<?php if (isset($_GET['project_id'])) {
                                        echo $row['name'];
                                    } ?> " class="form-control" disabled>
                                </div>
                            </div>

                            <div class="form-group">
                                <label class="col-md-3 control-label">Location :-</label>
                                <div class="col-md-6">
                                    <input type="text" name="location" id="location" value="<?php if (isset($_GET['project_id'])) {
                                        echo $row['location'];
                                    } ?> " class="form-control" disabled>
                                </div>
                            </div>


                            <div class="form-group">
                                <label class="col-md-3 control-label">Project Status :-</label>

                                <div class="col-md-6">

                                    <select name="status" id="status" class="select2" disabled>
                                        <?php if (!isset($_GET['project_id'])) { ?>
                                            <option value="1">--Project Status--</option>
                                        <?php } ?>
                                        <option value="1" <?php echo $row['status'] == '1' ? 'selected' : ''; ?> >Open</option>
                                        <option value="2" <?php echo $row['status'] == '2' ? 'selected' : ''; ?> >Closed</option>
                                    </select>

                                </div>
                            </div>


                            <div class="form-group">
                                <div class="col-md-3">
                                    <label class="control-label">Project Details :-</label>
                                </div>
                                <div class="col-md-6">
                                    <textarea name="details" id="details" rows="4" class="form-control"
                                              disabled><?php echo stripslashes($row['details']); ?></textarea>

                                </div>
                            </div>


                            <div class="form-group">
                                <div class="col-md-3">
                                    <label class="control-label">Project Requirements :-</label>
                                </div>
                                <div class="col-md-6">
                                    <table id="t01">
                                        <thead>
                                        <tr>
                                            <th>#</th>
                                            <th>Requirements</th>
                                            <th>Required</th>
                                            <th>Sent</th>
                                            <th>Action</th>
                                        </tr>
                                        </thead>
                                        <tbody>
                                        <?php
                                        $no = 1;
                                        while ($row1 = mysqli_fetch_array($requirement_result)) {
                                            $id = $row1['id'];
                                            $unit_name = $row1['unit_name'];
                                            echo '<tr>
                                                        <td>' . $no . '</td>
                                                        <td>' . $row1['name'] . '</td>
                                                        <td>' . $row1['unit_required'] . " " . $unit_name . '</td>
                                                        <td><input type="number" id = "received' . $id . '" name = "received' . $id . '" value ="' . $row1['unit_received'] . '"/></td>
                                                        <td><button type="button" name="submit" class="btn btn-primary submit-click" data-id="' . $id . '" style="padding:5px 10px;">Submit</button></td>
                                                    </tr>';
                                            $no++;
                                        } ?>
                                        </tbody>
                                    </table>

                                </div>
                            </div>
                        </div>
                </form>

                <form action="" id="addeditcategory_temp" name="addeditcategory_temp" method="post" class="form form-horizontal" enctype="multipart/form-data" style="display:none;>
                    <input type="hidden" name="project_id" value="<?php echo $_GET['project_id']; ?>"/>
                    <input  type="hidden" name="reqId" id= "reqId" value="" />
                    <input type="number" id = "received" name = "received" value ="">
                    <button id="submitButton" type="submit" name="submit" class="btn btn-primary" style="padding:5px 10px;">

                </form>

                <script>

                    $(document).ready(function(e){
                        $('.submit-click').off('click').on('click', function(e){
                            var reqId = $(this).data('id');
                            var received =  $('#received'+reqId).val();
                            var form = $('#addeditcategory_temp');
                            form.find('#reqId').val(reqId);
                            form.find('#received').val(received);
                            form.find('#submitButton').trigger('click');
                        })
                    });
                </script>
0

Как уже говорил @Saji, вы повторяете свое имя через цикл. Вы должны использовать

echo '<input  type="hidden" name="reqId[]" id= "reqId" value="'.$id.'" />';

Обратите внимание на скобки [] которые были добавлены, так что вы создаете массив имен. Для обновления нужен цикл вроде

for($i=0;$i<count($_POST['reqId']);$i++){
    $unit_edit=Update('tbl_requirements', $data, " WHERE id = '".$_POST['reqId'][$i]."'");
}
  • 0
    Его значение обновления всей строки, я хочу обновить одну строку вместо всех ..... там отдельная кнопка для каждой строки, как вы можете видеть на изображении.
  • 0
    Боже мой, я даже не видел изображения

Ещё вопросы

Сообщество Overcoder
Наверх
Меню