猿问

如何使用 iframe 进行打印?单击打印按钮时未获取 ID

我想使用 iframe 打印依赖于 $stud_no 的信息。当我在表中显示 iframe 时,它会生成正确的 $stud_no。但是当我单击打印按钮时,它只显示第一个 $stud_no。就像按钮没有在admin_print-app-form-view.php中获取 id


admin_print-app-form.php


<table id="dataTable2" class="text-center">

    <thead class="text-capitalize">

        <tr>

            <th>NO.</th>

            <th>LAST NAME</th>

            <th>FIRST NAME</th>

            <th>MIDDLE NAME</th>

            <th>SEX</th>

            <th>CONTACT NO.</th>

            <th>ENTRY</th>

            <th>ACTION</th>

        </tr>

    </thead>

    <tbody>

        <?php

            $sql = "SELECT * FROM stud_acc";

            $result = $con->query($sql);

            if ($result->num_rows > 0) {

                while($row = $result->fetch_assoc()) {

                $iframeId = 'studframe' . $row['stud_no'];

                $stud_no = $row['stud_no'];

                $lastname = $row['lastname'];

                $firstname = $row['firstname'];

                $middlename = $row['middlename'];

                $sex = $row['sex'];

                $contact = $row['contact'];

                $entry = $row['entry'];?>

        <tr>

            <td><?php echo $stud_no ?></td>

            <td><?php echo $lastname ?></td>

            <td><?php echo $firstname ?></td>

            <td><?php echo $middlename ?></td>

            <td><?php echo $sex ?></td>

            <td><?php echo $contact ?></td>

            <td><?php echo $entry ?></td>

            <td>

                <iframe src="admin_print-app-form-view.php?id=<?php echo "$stud_no"?>" name="frame" id="<?= $iframeId ?>" style="visibility:hidden;height:0px;width:0px"></iframe>

            </td>

        </tr>

        } }?>

    </tbody>

</table>

admin_print-app-form-view.php

<?php
    session_start();
        include("connection.php");
            $stud_no = $_GET['id'];
            ?>

这是打印预览。红圈中的数字应该是我点击的$stud_no,但它总是给我第一个stud_no


绝地无双
浏览 111回答 1
1回答

aluckdog

问题是,当您为每个 iframe 提供相同的名称和 id 时,javascript 只会为您提供它找到的第一个匹配项,并为所有按钮返回相同的 iframe。我们需要给它们唯一的 ID(我们可以完全跳过名称)。注意:此代码假定stud_no是唯一值,如表主键。在你的while-loop中,创建一个唯一的id:while($row = $result->fetch_assoc()) {&nbsp; &nbsp; // Create a unique id using the stud_no&nbsp; &nbsp; $iframeId = 'studframe' . $row['stud_no'];现在给 iframe 指定 id:<iframe ... id="<?= $iframeId ?>" ... ></iframe>并确保按钮引用该 id:<button ... onclick="document.title=''; document.getElementById('<?= $iframeId ?>').print();">...</button>在上面的代码中,我通过添加前缀来创建唯一的 id,studframe然后添加 ,stud_no使其成为id="studframe1",id="studframe2"依此类推。然后,当引用该特定 iframe 时,我们将根据该唯一 id 获取 iframe。
随时随地看视频慕课网APP
我要回答