2017-04-20 60 views
0

我试图做一个搜索功能,当你搜索一个标签时,它应该给你带有该标签的图像。当我只是回声在PHP代码(101行),它给出了所有的链接。但是,当我尝试将它发布在html中时,它只会返回一个结果。想要发布多个搜索结果

PHP代码

$postTags = ""; 
if (isset($_POST['Find'])) { 
try { 

    $pdoConnect = new PDO("mysql:host=localhost;dbname=imdterest", "root", ""); 

} catch (Exception $exc) { 
    echo $exc->getMessage(); 
    exit(); 
} 

$postTags = $_POST['naam']; 

$pdoQuery = "SELECT * FROM posts WHERE postTags = :tags"; 

$pdoResult = $pdoConnect->prepare($pdoQuery); 

$pdoExec = $pdoResult->execute(array(":tags" => $postTags)); 

while ($row = $pdoResult->fetch(PDO::FETCH_ASSOC)) { 
    $postTags = $row['postImageUrl']; 
    //echo $postTags; 
} 
} 

HTML代码

<div class="search"> 
     <img src="<?php echo $postTags; ?>"> 
    </div> 
+0

这是行101?表单的HTML在哪里?什么是'var_dump($ _ POST)'?什么是'$ postTags'? –

+0

将'$ postTags ='更改为'$ postTags [] ='收集所有帖子。然后稍后再循环以在您的html中生成多个帖子。 – JustOnUnderMillions

+0

HTML中的循环或之后?现在,你在每次迭代中覆盖变量'$ postTags'。 –

回答

0

的问题是,在你的PHP代码,你必须在循环,你回声链接找到的所有行。这就是它打印所有结果的原因。但是,您也不会存储这些值,而是在迭代时覆盖它。在你的HTML中你没有while循环,而你只是打印覆盖变量(可能是最后的结果)。

您可以将结果存储在数组中或将while循环移动到HTML位置。 存入数组:

$allResults = array(); 

while ($row = $pdoResult->fetch(PDO::FETCH_ASSOC)) { 
    $allResults[] = $row['postImageUrl']; 
} 

,然后在某处你的HTML代码

<div class="search"> 
<?php 
foreach ($allResults as $imageLink){ 
    echo '<img src="' . $imageLink . '">"; 
} 
?> 
</div> 
+0

感谢它现在完美。 –

+0

乐于帮助,欢迎来到Stack Overflow。如果此答案或任何其他人解决了您的问题,请将其标记为已接受。谢谢 – Vody

+0

@ArneBerckmans请看看上面的评论,花些时间来标记帮助你的答案。在堆栈溢出时这样做是礼貌和良好的做法。谢谢! – Jorre

0

变化这样while循环,当你不使用数组下一个数据将通过编写前面的和所有你留下了一个形象链接是最后一个图片链接。因此防止覆盖使用数组。

$postTags=[]; 
while ($row = $pdoResult->fetch(PDO::FETCH_ASSOC)) { 
    $postTags[] = $row['postImageUrl']; 
    //echo $postTags; 
} 

和HTML这样的代码,因为现在你有多个图像,你需要显示所有,并为需要迭代和foreach是通过数组进行迭代的一种方法。

<?php 
foreach ($postTags as $postTag) { 
    ?> 
    <div class="search"> 
     <img src="<?php echo $postTag; ?>"> 
    </div> 
<?php }?> 
+1

一个好的答案包括解释为什么OP应该改变它,而不仅仅是如何。 –

0

变量$postTags越来越被覆盖,将持有的MySQL结果集的只有最后一个值。创建一个数组并在其上循环。

$postTags = array(); 
while ($row = $pdoResult->fetch(PDO::FETCH_ASSOC)) { 
    $postTags[] = $row['postImageUrl']; 
} 

在HTML:

foreach($postTags as $val) 
{ ?> 
    <div class="search"> 
     <img src="<?php echo $val; ?>"> 
    </div> 
<?php 
} ?>