将字符串数组从php传递给html

时间:2016-09-27 08:54:00

标签: javascript php html http-post

我想将php数组的字符串转换为html。我的php和html代码在同一页面中。

我有$myvar来保存我的字符串数组。我使用$myvar传递POST并将其插入$ba

我的代码需要在html第3页行上打印(在while循环中)。 但是当我通过$be时,它会给我写错误信息:"注意:未定义的索引:myvar" (在PHP代码中)

我需要修复什么才能让我的代码在我的屏幕上打印出从php获得的所有3行?

我的代码:(php)

foreach ($docres as $key=>$filename) {
    $counter = 0; 
    $file = $filename +1;
    $handle = fopen($dir."/".$file.'.txt',"r");
    if($handle)
    {
        while($counter < 3)
        {
            $myvar[]=fgets($handle);
            $counter++;
        }
    }
}

$ ba = implode(&#34;
&#34;,$ myvar);

我的HTML代码:

<form action="" method="POST">
    <center> 
        <h1> My Search Engine </h1>
        <input type = 'text' size='90'  value='' name = 'search' > <br> 
        <input type = 'submit' name = 'submit' value = 'Search source code'>         
    </center> 
</form >
<p> <?php echo $ba ?> </p>

2 个答案:

答案 0 :(得分:1)

只需在函数上回显mysql查询,并在HTML上调用它,如下所示: 更新:第3列将是一个图像,其路径存储在数据库中,第4列将是一个图像,只有名称存储在数据库中(因为我们知道完整路径),例如:

 <?php
    function printOnHtml(){
    include ("connection.php");
    $sql = "SELECT * FROM foo;"
    if ($result = connection()->query($sql)){
        $rs = $result->fetch_array(MYSQLI_NUM);
        while ($rs[0] != ''){
           echo "first column: ".$rs[0]." second column: ".$rs[1]." image with full route on database: <img src='".$rs[2]."' alt=''> <br> if only the img name is stored cuz we know the route: <img src='img_route/".$rs[3]."' alt=''>";
           $rs = $result->fetch_array(MYSQLI_NUM);
        }
    }
    }

然后在HTML上

<html>
blablabla
<body>
blablabla
<?php
    printOnHtml();
?>
blablabla
</body>
</html>

注意它必须是一个.php文件来调用php函数(例如index.php)

如果您需要,我会按顺序粘贴我使用的连接php脚本:

<?php
function connection(){
if($mysqli = new MySQLi("localhost","user","password","database_name")) echo "OK"; else echo "KO";
mysqli_set_charset($mysqli, "utf8");
return $mysqli;
}
?>

我用mysqli fetch数组做了,但你可以使用fetch assoc做同样的事情。

UPDATE2:如果您使用txt来跟踪存储数据(如果获得数千行txt时增加会失败),请在代码中修改:

$myvar='';
foreach ($docres as $key=>$filename) {
    $counter = 0; 
    $file = $filename +1;
    $handle = fopen($dir."/".$file.'.txt',"r");
    if($handle)
    {
        while($counter < 3)
        {
          if(isset($myvar)){
            $myvar=fgets($handle);
         }
            $counter++;
        }
    }
}

我假设您正确地声明了$ dir,$ file和其他变量。 你永远不必使用变量而不声明它(至少为NULL)。如果您确保100%此var将在此时获得值,则只能执行此操作。

答案 1 :(得分:0)

您必须使用implode和<br>作为分隔符,以正确的方式将数组转换为字符串 然后只需使用php标签打印它(因为您在同一页面使用它们),您可以直接访问变量并使用<?= $ba ?><?php echo $ba ; ?>打印它
代码将是:

<?php
foreach ($docres as $key=>$filename) {
$counter = 0; 
    $file = $filename +1;
    $handle = fopen($dir."/".$file.'.txt',"r");
    if($handle)
    {
        while($counter < 3)
        {
            $myvar[]=fgets($handle);
            $counter++;
        }
    }
}
$ba = implode("<br>", $myvar);
?>


<form action="" method="POST">
    <center> 
        <h1> My Search Engine </h1>
        <input type = 'text' size='90'  value='' name = 'search' > <br> 
        <input type = 'submit' name = 'submit' value = 'Search source code'>         
      </center> 
</form >
<p id="deatiles"> <?= $ba ?> </p>