【问题标题】:retrive image from database and show it in div从数据库中检索图像并在 div 中显示
【发布时间】:2017-04-30 21:43:51
【问题描述】:

我想从数据库中检索图像并将其显示在数据模型的 div 中。我上传图片保存到图片->空位文件夹。现在我想在按下按钮时显示它。每个图像名称为 'vacancyid'.jpg 格式。我尝试使用以下代码。但我没有成功。

<?php
require('dbconnection.php');
$sql="select * from vacancy";
$res=mysqli_query($conn,$sql);
if(mysqli_num_rows($res)>0){

while($row=mysqli_fetch_assoc($res)){
    ?>
    <script 
    src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js">
    </script>
    <div class="bs-calltoaction bs-calltoaction-primary" id="jobvacancydiv<?php echo $row['vacancyid'];?>">
        <div class="row">
            <div class="col-md-9 cta-contents">
                <form action="sendemail.php" enctype="multipart/form-data" method="post">
                <h1 class="cta-title">Its a Call To Action</h1>
                <div class="cta-desc">
                    <input type="text" value='<?= $row['catogary'];?>' readonly style="width: 75%"><br><br>
                    <input type="text" value='<?= $row['company_name'];?>' readonly style="width:    75%"><br><br>
                    <input type="text" value='<?= $row['location'];?>' readonly style="width: 75%"><br><br>
                    <input type="text" value='<?= $row['qulification'];?>' readonly style="width: 75%"><br><br>
                    <input type="text" value='<?= $row['catogary'];?>' readonly style="width: 75%"><br><br>
                    <input type="text" value='<?= $row['indate'];?>' readonly style="width: 37.5%">&nbsp;
                    <input type="text" value='<?= $row['expdate'];?>' readonly style="width: 37.5%"><br>
                    <input type="text" id="email" name="email" value='<?= $row['email'];?>'><br>
                    <input type="file" name="uploaded_file" id="uploaded_file" class="text-center center-block well well-sm">
                    <input type="submit" id="btn" name="btn" class="btn btn-primary" value="Apply"></input>
                    <button id="showimg" name="showimg" type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal">Open Modal</button>
                    <?php
                    if(isset($_POST['showimg'])){
                        ?>
                        <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                            <div class="modal-dialog">
                                <div class="modal-content">
                                    <div class="modal-header">
                                        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                                        <h4 class="modal-title" id="myModalLabel">Image preview</h4>
                                    </div>
                                    <div>
                                        <?php
                                        //$imageData = base64_encode($row['image']);

                                        // Format the image SRC:  data:{mime};base64,{data};
                                        //$src = 'data:images/vacancy;base64,'.$imageData;
                                        $src='images/vacancy'.$row['vacancyid'].'.jpg';
                                        echo "<img src='".$src."'>";

                                        ?>
                                    </div>
                                </div>
                            </div>
                        </div>
                    <?php

                    }
                    ?>
                </div>
                </form>

            </div>

        </div>
        </div>
    <script>
        window.setInterval(function(){

            var current = new Date();
            var expiry = new Date("<?= $row['expdate'];?>");

            if(current.getTime()>expiry.getTime()){
                $('#jobvacancydiv<?php echo $row['vacancyid'];?>').hide();
            }
            else{
                $('#jobvacancydiv<?php echo $row['vacancyid'];?>').show();
            }

        });
    </script>
    </div>
    <?php
    }
 }
else{
echo mysqli_error($conn);
}
?>

【问题讨论】:

  • 这个表格是sendmail.php的文件名吗?
  • sendmail.php 页面用于发送带附件的电子邮件。
  • 现在重点来了。当 HTML 表单 POST 加载动作脚本/页面时,您的模式将永远不会显示。这不允许加载表单页面上的模式。你试过用 ajax 代替吗?
  • 不,我没有为此使用 ajax
  • 在我发布我的答案之前,请确认这些点。您首先处理sendemail.php。完成此操作后,您打算在所述目录中显示带有所需图像的 Modal 吗?对吗?

标签: php html mysql


【解决方案1】:

您的要求

您希望在 HTML 表单页面中有两个按钮。其中一个按钮是Apply,它将发送一封电子邮件。第二个按钮被命名为Open Modal,它打开一个带有来自预定义 URL 的图像的模态框。这也可以来自在 HTML 表单页面加载上获取的数据库。它与表单中的 HTML 文件输入字段无关。

您遇到的问题

单击Open Modal 按钮时,Modal 未显示。

在您的代码中,您的模态框处于 PHP 条件中,只有在满足以下条件时才会触发

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

建议的解决方案

由于$_POST 仅当通过POST 方法将信息传递到此页面时,上述代码将不起作用。这仅在 HTML 表单的动作脚本中才有可能。由于您的 Modal 不依赖于 POSTED 的任何信息,并且应该在按钮单击时显示,因此只需使用以下代码即可。

<form action="sendemail.php" enctype="multipart/form-data" method="post">
            <h1 class="cta-title">Its a Call To Action</h1>
            <div class="cta-desc">
                <input type="text" value='<?= $row['catogary'];?>' readonly style="width: 75%"><br><br>
                <input type="text" value='<?= $row['company_name'];?>' readonly style="width:    75%"><br><br>
                <input type="text" value='<?= $row['location'];?>' readonly style="width: 75%"><br><br>
                <input type="text" value='<?= $row['qulification'];?>' readonly style="width: 75%"><br><br>
                <input type="text" value='<?= $row['catogary'];?>' readonly style="width: 75%"><br><br>
                <input type="text" value='<?= $row['indate'];?>' readonly style="width: 37.5%">&nbsp;
                <input type="text" value='<?= $row['expdate'];?>' readonly style="width: 37.5%"><br>
                <input type="text" id="email" name="email" value='<?= $row['email'];?>'><br>
                <input type="file" name="uploaded_file" id="uploaded_file" class="text-center center-block well well-sm">
                <input type="submit" id="btn" name="btn" class="btn btn-primary" value="Apply"></input>
                <button id="showimg" name="showimg" type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal">Open Modal</button>

                <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                    <div class="modal-dialog">
                        <div class="modal-content">
                            <div class="modal-header">
                                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                                <h4 class="modal-title" id="myModalLabel">Image preview</h4>
                            </div>
                            <div>
                                <?php
                                    $imageData = base64_encode($row['image']);

                                    // Format the image SRC:  data:{mime};base64,{data};
                                    $src = 'data:images/vacancy;base64,'.$imageData;
                                    echo "<img src='".$src."'>";
                                ?>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </form>

这段代码和你的唯一变化是我从所有条件中取出了Modal。

希望这会有所帮助。

【讨论】:

  • 是否可以与您的操作脚本共享您的完整代码?使用完整代码编辑您的问题。
  • Akthar 如何通过电子邮件发送它??
  • 您可以轻松地在您的问题中编辑您的代码。只需将整个代码与操作脚本一起添加即可。
  • @DanithKumarasinghe 编辑您的问题并在此处添加代码,即使没有必要。
【解决方案2】:

删除&lt;?php if(isset($_POST['showimg'])){ ?&gt; 并使用echo '&lt;img src="data:image/jpeg;base64,'.base64_encode($row['image']).'"/&gt;'; ?&gt;

<?php
require('dbconnection.php');
$sql = "select * from vacancy";
$res = mysqli_query($conn, $sql);
if (mysqli_num_rows($res) > 0) {

    while ($row = mysqli_fetch_assoc($res)) {
        ?>
        <script
                src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js">
        </script>
        <div class="bs-calltoaction bs-calltoaction-primary" id="jobvacancydiv<?php echo $row['vacancyid']; ?>">
            <div class="row">
                <div class="col-md-9 cta-contents">
                    <form action="sendemail.php" enctype="multipart/form-data" method="post">
                        <h1 class="cta-title">Its a Call To Action</h1>
                        <div class="cta-desc">
                            <input type="text" value='<?= $row['catogary']; ?>' readonly style="width: 75%"><br><br>
                            <input type="text" value='<?= $row['company_name']; ?>' readonly
                                   style="width:    75%"><br><br>
                            <input type="text" value='<?= $row['location']; ?>' readonly style="width: 75%"><br><br>
                            <input type="text" value='<?= $row['qulification']; ?>' readonly style="width: 75%"><br><br>
                            <input type="text" value='<?= $row['catogary']; ?>' readonly style="width: 75%"><br><br>
                            <input type="text" value='<?= $row['indate']; ?>' readonly style="width: 37.5%">&nbsp;
                            <input type="text" value='<?= $row['expdate']; ?>' readonly style="width: 37.5%"><br>
                            <input type="text" id="email" name="email" value='<?= $row['email']; ?>'><br>
                            <input type="file" name="uploaded_file" id="uploaded_file"
                                   class="text-center center-block well well-sm">
                            <input type="submit" id="btn" name="btn" class="btn btn-primary" value="Apply"></input>
                            <button id="showimg" name="showimg" type="button" class="btn btn-primary"
                                    data-toggle="modal" data-target="#myModal">Open Modal
                            </button>
                            <div class="modal fade" id="myModal" tabindex="-1" role="dialog"
                                 aria-labelledby="myModalLabel" aria-hidden="true">
                                <div class="modal-dialog">
                                    <div class="modal-content">
                                        <div class="modal-header">
                                            <button type="button" class="close" data-dismiss="modal"
                                                    aria-hidden="true">×
                                            </button>
                                            <h4 class="modal-title" id="myModalLabel">Image preview</h4>
                                        </div>
                                        <div>
                                            <?php
                                            echo '<img src="data:image/jpeg;base64,'.base64_encode($row['image']).'"/>';
                                            ?>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </form>

                </div>

            </div>
        </div>
        <script>
            window.setInterval(function () {

                var current = new Date();
                var expiry = new Date("<?= $row['expdate'];?>");

                if (current.getTime() > expiry.getTime()) {
                    $('#jobvacancydiv<?php echo $row['vacancyid'];?>').hide();
                }
                else {
                    $('#jobvacancydiv<?php echo $row['vacancyid'];?>').show();
                }

            });
        </script>
        </div>
        <?php
    }
} else {
    echo mysqli_error($conn);
}
?>

【讨论】:

    【解决方案3】:

    不确定此处如何引用图像。 data:images 尝试使用图像存储在服务器上的相对路径。

    【讨论】:

    • @shawan 你的意思是这样的 '$src='images/vacancy'.$row['vacancyid'].'.jpg'; echo "";'我试过这个。但没有结果
    • @Barry Thomas 朋友我将所有图像保存到图像文件夹中,其中还有另一个名为 vacancy 的文件夹。所有图像都保存在该 vacancy 文件夹中
    猜你喜欢
    • 2014-06-15
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 2015-10-08
    • 1970-01-01
    • 2012-05-02
    相关资源
    最近更新 更多