简体   繁体   English

如何使用会话变量创建php图像

[英]how to create php image using session variables

I have a php file called bargraph.php which is creating a bar chart image. 我有一个名为bargraph.php的php文件,它创建了一个条形图图像。 I am importing bargraph.php in a seprate file graph.php using: 我进口bargraph.php在seprate文件graph.php使用:

<img src='bargraph1.php'> 

But I need to create bar chart using session variables. 但我需要使用会话变量创建条形图。 I need to pass variable year's value to generate image in bargraph.php. 我需要传递变量year的值来生成bargraph.php中的图像。 but it is not displaying the graph. 但它没有显示图表。 I even tried with ajax. 我甚至试过用ajax。 It is not happening . 它没有发生。

graph.php graph.php

<script>
    alert(<?php echo $year ?>);
    var ids = $year;

    if (ids == "") { 
        document.getElementById("graph").innerHTML="";
        return;
    } 
    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    } else {
        // code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    var data = "year=" + ids ;
    //var year ="year=" +id1;
    xmlhttp.open("POST", "bargraph1.php", true); 
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");                  
    xmlhttp.send(data);

    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            document.getElementById("graph").innerHTML=xmlhttp.responseText;
        }
    }
</script>

and

bargraph1.php

I am using following code : 我使用以下代码:

$year   = $_POST['year'];
$sql    = "SELECT dt,dist,cal FROM   demo where YEAR(dt)='$year'"; 
$result = mysql_query($sql,$con);

As default response from AJAX request is plain text, i'm not sure you can display an image with : document.getElementById("graph").innerHTML=xmlhttp.responseText; 由于AJAX请求的默认响应是纯文本,我不确定您是否可以使用以下document.getElementById("graph").innerHTML=xmlhttp.responseText;显示图像: document.getElementById("graph").innerHTML=xmlhttp.responseText;

I suggest another solution writing the image on disk and retrieve image from JS : In your bargraph1.php 我建议另一种解决方案在磁盘上写入图像并从JS检索图像:在bargraph1.php

$img = /* Image creation*/
$filename = "images/generatedFilename.png";
imagepng($img, $filename);
echo $filename;

You can test your PHP code independently to be sure it works before try using it from JS. 您可以独立测试您的PHP代码,以确保它在尝试使用JS之前可以正常工作。

In your ajax request 在你的ajax请求中

  if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            var img = new Image();
            img.src = xmlhttp.responseText;
           document.getElementById("graph").appendChild(img);
        }

EDIT : The part to retrieve year isn't valid in JS. 编辑:检索年份的部分在JS中无效。

alert(<?php echo $year ?>);
var ids = <?php echo $year; ?>;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM