使用函数显示阵列中的图像

时间:2014-12-30 20:56:15

标签: php arrays function

我是PHP的新手,我正在尝试打印出5个图片,参考文件存储在一个字符串中,用新行分隔。

这是我到目前为止所拥有的:

function displayTeam($heroes){  
    $herolist = array();

    $conn = odbc_connect('Dotalyzer', '', '');
    if (!$conn) {
        exit("Connection Failed: " . $conn);
    }
    $sql = "SELECT * FROM HeroStats ORDER BY Heroname";
    $rs = odbc_exec($conn, $sql);
    if (!$rs) {
        exit("Error in SQL");
    }
        foreach(preg_split("/((\r?\n)|(\r\n?))/", $heroes) as $line){
            while (odbc_fetch_row($rs)) {
                $heroname = odbc_result($rs, "HeroName");

                if ($line == $heroname) {

                    $heroimage = odbc_result($rs, "Portrait");
                    $herolist[] = $heroimage . ".png";
                }
            }
        }

    odbc_close($conn);

    echo " <div class='heroimage_wrapper'>";
    for ($i = 0; $i < 5; $i++) {
        echo " <img src='Hero icons/$herolist[$i]' class='heroimage'>";
    }
        echo " </div>";
}

我想从数组中打印每张图片,引用存储在Access数据库中。

我正在调用使用以下函数生成$heroes字符串的函数:

 $(document).ready(function(){
        $('.button').click(function(){
            var clickBtnValue = $(this).val();
            var id = $(this).attr('data-unique-id');
            var ajaxurl = 'ajax/ajax',
                data =  {
                    'action': clickBtnValue,
                    'id': id
                };
                console.log(clickBtnValue);
            $.post(ajaxurl, data, function (response) {
                // Response div goes here.
                alert(response.replace('\\n', '\n'));
            });
        });

    });

2 个答案:

答案 0 :(得分:1)

  1. 您可以获得5个具有LIMIT操作的数据库实体。如

    $query = 'SELECT * FROM HeroStats ORDER BY Heroname LIMIT 5'
    
  2. 您可以使用mysqli连接数据库

    $db_connection = new mysqli([HOST], [USERNAME], [PASSWORD], [DATABASE_NAME]);
    
  3. 使用mysqli::fetch_array将图像提取到阵列。这个功能可以帮到你

    function fetch($query)
    {
        $res = $db_connection->query($query);
        $array = [];
        while( $r = $res->fetch_array(MYSQLI_ASSOC) )
        {
            array_push($array, $r);
        }
    
        return $array;
    } 
    
  4. 要将数组传递给Javascript,请将数组编码为JSON或xml

    $array = fetch($query);
    $json = json_encode($array);
    
  5. 因此,您可以在Javascript中收到此响应,只需将JSON转换为数组

    即可
    var images = JSON.parse(response);
    

答案 1 :(得分:0)

我可以在你的代码中看到两个错误。

<强>首先

更改此

$herolist[] .= $heroimage . ".png";

$herolist[] = $heroimage . ".png"; 

<强>第二

从img src属性中删除.png并更新for循环以使用数组长度

for ($i = 0; $i < 5; $i++) {
  echo " <img src='Hero icons/$herolist[$i].png' class='heroimage'>";
}

for ($i = 0; $i < count($herolist); $i++) {
   echo " <img src='Hero icons/$herolist[$i]' class='heroimage'>";
}

此外,您不应该使用空格作为文件夹名称。将文件夹名称从Hero图标更改为Hero_icons并更新img标记。