Как передать идентификатор текущего элемента в таблицу запроса - PullRequest
0 голосов
/ 24 июня 2019

У меня есть приложение, в котором пользователь может отправить запрос на изменение администратору, теперь проблема заключается в том, как сохранить идентификатор запрашиваемого актива из таблицы user_asset в таблицу запросов, чтобы я мог отобразить его на странице администратора с полной информациейактива

, когда пользователь нажимает на редактирование запроса, он получает форму с редактируемыми полями, заполненными текущей информацией, но как я могу сохранить id этого актива, чтобы я мог получить его для администраторатаблица с информацией из обеих таблиц (user_assets, запросы)

У меня есть user_asset table

asset_id
asset_category
code
title
userid

и таблица запросов

id
reason
assetid
user_id

это то, что я сделал до сих пор

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

    // get all values from input with no special charactere

   $code = mysqli_real_escape_string($conn, $_POST['code']);

   $asset_id =  mysqli_real_escape_string($conn, $_GET['id']); 
   $reason =  mysqli_real_escape_string($conn, $_POST['reason']);

    if (!$error) {


      if (!$error) {
         // execute the sql insert 
            if(mysqli_query($conn, "INSERT INTO `requests`(id,reason,assetid, user_id) 
                 VALUES( null, '" . $reason . "', '". $asset_id ."','" .$_SESSION['user_id'] . "')")) {
              // if the insert result was true (OK)
              $success_message = "req was successfully added ! ";
           } else {
              // if the insert result was false (KO)
              $error_message = "Error in data...Please try again later!";
           }
        }
   }


}

else{
   if(isset($_GET['idedit']) ){
       $result = mysqli_query($conn, "SELECT * from user_asset WHERE asset_id=".$_GET['idedit']);
       $project = mysqli_fetch_array($result);
   }

}

   ?>

и это моя форма

            <form method="post" action="req_ade.php" id="adding_new_assets">


                                    <div class="control-group">
                                       <label  for="basicinput">الکود : </label>
                                       <div class="controls">
                                          <input type="number" id="basicinput" value="<?php echo $project['code']; ?>" placeholder="الكود" name="code" class="span8">
                                       </div>
                                    </div>

                                    <div class="control-group">
                                       <label  for="basicinput">التفاصيل : </label>
                                       <div class="controls">
                                          <input type="text" id="basicinput" value="<?php echo $project['title']; ?>" placeholder="التفاصيل" name="title" class="span8">
                                       </div>
                                    </div>

                                    <div>
                             <label style="color:black">السبب</label>
                             <textarea rows="8" cols="8" name="reason" class="form-control" placeholder="اذكر سبب التعديل ..." ></textarea>

                            </div>

                                    <div class="control-group">
                                       <div class="controls">
                                          <button type="submit" name="submit" class="btn">طلب تعديل</button>
                                       </div>
                                    </div>
                                 </form>

вот ошибки, которые я получаю

Notice: Undefined index: id in D:\wamp64\www\Caprabia-test\req_ade.php on line 28

Fatal error: Uncaught exception 'mysqli_sql_exception' with message 'Incorrect integer value: '' for column 'assetid' at row 1' in D:\wamp64\www\Caprabia-test\req_ade.php on line 37

( ! ) mysqli_sql_exception: Incorrect integer value: '' for column 'assetid' at row 1 in D:\wamp64\www\Caprabia-test\req_ade.php on line 37

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

Спасибо за все ваши предложения.

Попробовав множество предложений и поработав с кодом, я нашел для него решение.

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

   // get all values from input with no special charactere

  $code = mysqli_real_escape_string($conn, $_POST['code']);

  $asset_id =  mysqli_real_escape_string($conn, $_POST['asset_id']); 
  $reason =  mysqli_real_escape_string($conn, $_POST['reason']);

   if (!$error) {


     if (!$error) {
        // execute the sql insert 
           if(mysqli_query($conn, "INSERT INTO `requests1`(id,reason,assetid, user_id) 
                VALUES( null, '" . $reason . "', '". $asset_id ."','" .$_SESSION['user_id'] . "')")) {
             // if the insert result was true (OK)
             $success_message = "req was successfully added ! ";
          } else {
             // if the insert result was false (KO)
             $error_message = "Error in data...Please try again later!";
          }
       }
  }


}

else{
   if(isset($_GET['idedit']) ){
       $result = mysqli_query($conn, "SELECT * from user_asset WHERE asset_id=".$_GET['idedit']);
       $project = mysqli_fetch_array($result);
   }

}

и это форма, которую я разместил asset_id в скрытом виде

  <form method="post" action="req_ade1.php" id="adding_new_assets">


                                    <div class="control-group">
                                       <label  for="basicinput">الکود : </label>
                                       <div class="controls">
                                       <input type="hidden" value="<?php echo $project['asset_id'];?>" name="asset_id" />
                                       <input type="number" id="basicinput" value="<?php echo $project['code']; ?>" placeholder="الكود" name="code" class="span8">
                                       </div>
                                    </div>

                                    <div class="control-group">
                                       <label  for="basicinput">التفاصيل : </label>
                                       <div class="controls">
                                          <input type="text" id="basicinput" value="<?php echo $project['title']; ?>" placeholder="التفاصيل" name="title" class="span8">
                                       </div>
                                    </div>

                                    <div>
                             <label style="color:black">السبب</label>
                             <textarea rows="8" cols="8" name="reason" class="form-control" placeholder="اذكر سبب التعديل ..." ></textarea>

                            </div>

                                    <div class="control-group">
                                       <div class="controls">
                                          <button type="submit" name="submit" class="btn">طلب تعديل</button>
                                       </div>
                                    </div>
                                 </form>

0 голосов
/ 24 июня 2019

Примечание: неопределенный индекс: id в D: \ wamp64 \ www \ Caprabia-test \ req_ade.php в строке 28

В вашем массиве $ _GET нет идентификатора. Таким образом, ваша переменная $ asset_id будет пустой, а пустая строка не является допустимым целым числом. Вы должны добавить (int) в свой запрос:

mysqli_query($conn, "INSERT INTO `requests`(id,reason,assetid, user_id) 
             VALUES( null, '" . $reason . "', '". (int)$asset_id ."','" .$_SESSION['user_id'] . "')")

Или лучше проверьте массив $ _GET, прежде чем использовать его. Как это:

If(isset($_GET['id'])) 
{
     $asset_id =  mysqli_real_escape_string($conn, $_GET['id']);
}
else 
{
     ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...