为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
绝地无双 2023-08-19 09:44:16
我想使用 iframe 打印依赖于 $stud_no 的信息。当我在表中显示 iframe 时,它会生成正确的 $stud_no。但是当我单击打印按钮时,它只显示第一个 $stud_no。就像按钮没有在admin_print-app-form-view.php中获取 idadmin_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
查看完整描述

1 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

问题是,当您为每个 iframe 提供相同的名称和 id 时,javascript 只会为您提供它找到的第一个匹配项,并为所有按钮返回相同的 iframe。


我们需要给它们唯一的 ID(我们可以完全跳过名称)。


注意:此代码假定stud_no是唯一值,如表主键。


在你的while-loop中,创建一个唯一的id:


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

    // Create a unique id using the stud_no

    $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。


查看完整回答
反对 回复 2023-08-19
  • 1 回答
  • 0 关注
  • 110 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信