Как передать переменную PHP из цикла и использовать ее как переменную Javascript - PullRequest
0 голосов
/ 03 октября 2018

У меня есть цикл while, который отображает некоторые данные в таблицу из таблицы mysql.В каждой строке таблицы есть кнопка, которая используется для отправки данных через ajax на другую страницу php, которая вставляет данные в другую таблицу.Моя проблема в том, что я хочу получить значения определенных строк, получая их идентификаторы, но поскольку я вне цикла, я не могу получить переменную $ row ... Как я могу сделать такую ​​вещь?

Вот часть кода:

if (mysqli_num_rows($result) > 0) {
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) {
        echo "<tr>";
        echo "<td>" . $row['TROUBLE_TICKET_NUM'] . "<input type=\"hidden\" name=\"billet".$row['TROUBLE_TICKET_NUM']."\" id=\"billet".$row['TROUBLE_TICKET_NUM']."\" value=\"".$row['TROUBLE_TICKET_NUM']."\"></td>";
        echo "<td>" . $row['CONCAT(Year(activites.ACTIVITY_CREATE_DTM),month(activites.ACTIVITY_CREATE_DTM))'] . "</td>";
        echo "<td>" . $row['CUSTOMER_NM'] . "</td>";
        echo "<td>" . $row['DEFAULT_WORK_GROUP_CD'] . "</td>";
        echo "<td>" . $row['ACTIVITY_OWNER_NM'] . "<input type=\"hidden\" name=\"id".$row['TROUBLE_TICKET_NUM']."\" id=\"id".$row['TROUBLE_TICKET_NUM']."\" value=\"".$row['ACTIVITY_OWNER_NM']."\"></td>";
        echo "<td>" . $row['groupe'] . "</td>";
        echo "<td>" . $row['Technicien'] . "<input type=\"hidden\" name=\"technicien".$row['TROUBLE_TICKET_NUM']."\" id=\"technicien".$row['TROUBLE_TICKET_NUM']."\" value=\"".$row['Technicien']."\"></td>";
        echo "<td>
                    <label for=\"date". $row['TROUBLE_TICKET_NUM'] ."\"><strong>Date:</strong></label>
                    <input type=\"text\" name=\"date". $row['TROUBLE_TICKET_NUM'] ."\" id=\"date". $row['TROUBLE_TICKET_NUM'] ."\" onClick=\"ds_sh(this);\" value=\"".date("Y-m-d")."\">&nbsp;
                    <label for=\"heure". $row['TROUBLE_TICKET_NUM'] ."\"><strong>Heure:</strong></label>
                    <input type=\"text\" class=\"timepicker\" name=\"heure". $row['TROUBLE_TICKET_NUM'] ."\" id=\"heure". $row['TROUBLE_TICKET_NUM'] ."\"></td>
                    <td><button type=\"button\" class=\"btn btn-success btn-block\" name=\"insert-data". $row['TROUBLE_TICKET_NUM'] ."\" id=\"insert-data". $row['TROUBLE_TICKET_NUM'] ."\" onclick=\"insertData()\">Ajouter suivi</button>
                              <br>
                            <p id=\"message\"></p>
                    </td>";
        echo "<tr>";
    }
} else {
    echo "<tr><td><div class=\"alert alert-dark\" role=\"alert\">Aucun r&eacute;sultat</div></td></tr>";
}

mysqli_close($conn);
?>
            </tbody>
        </table>
    </div>
<!-- Script pour envoi donnée via ajax -->
<script type="text/javascript">

$(document).ready(function(){
  $("#insert-data<?php echo $row['TROUBLE_TICKET_NUM']; ?>").click(function(){
    var billet=$("#billet<?php echo $row['TROUBLE_TICKET_NUM']; ?>").val();
    var technicien=$("#technicien<?php echo $row['TROUBLE_TICKET_NUM']; ?>").val();
    var id=$("#id<?php echo $row['TROUBLE_TICKET_NUM']; ?>").val();
    var date=$("#date<?php echo $row['TROUBLE_TICKET_NUM']; ?>").val();
    var heure=$("#heure<?php echo $row['TROUBLE_TICKET_NUM']; ?>").val();

// Debug
 console.log(billet, technicien, tid, date, heure);

// AJAX
        $.ajax({
            method: "POST",
            url: "insert-data.php",
            data: {billet:billet,technicien:technicien,id:id,date:date,heure:heure},
            dataType: "JSON",
            success: function(data) {
             $(".message").html(data);
            $("p").addClass("alert alert-success");
            },
            error: function(err) {
            alert(err);
            }
        });

});
});

  </script>

1 Ответ

0 голосов
/ 03 октября 2018

Если вы хотите разрешить пользователю вставлять только значения, которые поступают из существующих строк, не передавайте значения, которые вы хотите вставить, в цель AJAX.В противном случае пользователь может вручную вызвать цель AJAX и просто предоставить любые значения, которые он хочет.Вместо этого отправьте идентификатор исходной строки и обновите целевой объект AJAX, чтобы найти эту строку, а затем скопируйте из нее значения.

Это можно сделать, поместив идентификатор строки в атрибут данных для каждой строки:

<tr data-id="<?= $row['id'] ?>">

Затем используйте селектор jquery, который срабатывает при нажатии кнопки, чтобы получить это значение для строки, по которой щелкнули.Что-то вроде:

$(this).parent().data('id')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...