2

「www.bbc.co.uk、www.itv.co.uk」など、コンマで区切られた URL のリストを受け入れるリンクと呼ばれるフィールドがあります。

フィールドの内容を出力するときは、次のようなコードでラップします。

<li><a href='http://<?php echo htmlout($name['links']); ?>'><?php echo htmlout($name['links']); ?></a></li>

これは、リンクが 1 つ追加された場合は正常に機能しますが、複数ある場合は問題が発生します。

たとえば、2 つのリンクがあり、1 つは www.bbc.co.uk で、もう 1 つは www.itv.co.uk で、そのリンクにカーソルを合わせると (2 つではなく 1 つのリンクです)、次のように表示されます。

http://www.ts.co.uk%2C%20www.bbc.co.uk/

コンマで区切られているため、これをフックとして使用して URL を分割する方法があるのではないかと考えていますが、これが可能かどうかはわかりません。

どんな助けでも大歓迎です。ありがとう

以下を編集

私はすでに配列を持っているので、以下にいくつかのコードを追加しました。配列内に配列を含めることはできますか? この場合、私はすべきですか?提案されたコードをどこにドロップすればよいですか?

INDEX.PHP (コントローラー)

include $_SERVER['DOCUMENT_ROOT'] .  '/includes/db.inc.php';

try
{
$sql = "SELECT player.id, player.name AS name, age, position, height, weight, GROUP_CONCAT(distinct previousclubs.name) previousclubs, 
        satscore, gpa, GROUP_CONCAT(distinct link) link, email
        FROM player INNER JOIN playerpreviousclubs
            ON player.id = playerid
        INNER JOIN previousclubs
            ON previousclubid = previousclubs.id
        INNER JOIN links
            ON links.playerid = player.id
        WHERE email = '$username'";

$result = $pdo->query($sql);
}
catch (PDOException $e)
{
$error = 'Error fetching details: ' . $e->getMessage();
include 'error.html.php';
exit();
}

foreach ($result as $row)
{
$names[] = array(
                'id' => $row['id'], 
                'name' => $row['name'],
                'age' => $row['age'],
                'position' => $row['position'],
                'height' => $row['height'],
                'weight' => $row['weight'],
                'previousclubs' => $row['previousclubs'],
                'satscore' => $row['satscore'],
                'gpa' => $row['gpa'],
                'links' => $row['link'],
                'email' => $row['email']
                );
}

include 'profiles.html.php';

現在、私のテンプレートは次のようになっています。

プロファイル.HTML.PHP

<p>Welcome <?php echo $row['name'] ?> . Below are your profile details:</p>

<?php foreach ($names as $name): ?>

<form action="" method="post">

<ol>

<li class="listleft">Name:</li>
<li><?php echo htmlout($name['name']); ?></li>
<li class="listleft">Age:</li>
<li><?php echo htmlout($name['age']); ?></li>
<li class="listleft">Position:</li>
<li><?php echo htmlout($name['position']); ?></li>
<li class="listleft">Height:</li>
<li><?php echo htmlout($name['height']); ?></li>
<li class="listleft">Weight:</li>
<li><?php echo htmlout($name['weight']); ?></li>
<li class="listleft">Previous Clubs:</li>
<li><?php echo htmlout($name['previousclubs']); ?></li>
<li class="listleft">GPA:</li>
<li><?php echo htmlout($name['satscore']); ?></li>
<li class="listleft">SAT Score:</li>
<li><?php echo htmlout($name['gpa']); ?></li>
<li class="listleft">Links:</li>
<li><a href='http://<?php echo htmlout($name['links']); ?>'><?php echo   htmlout($name['links']); ?></a></li>

</ol>

</form>

<?php endforeach; ?>
4

4 に答える 4

2

それらを爆発させてから、ループする必要があります。

$links = explode(',', $name['links']);

次に、あなたの見解では:

foreach ($links as $link) {
    echo '<li><a href="http://'.$link.'">'.$link.'</a></li>';
}
于 2012-08-29T15:36:05.430 に答える
2
$links = explode(',', $links);

foreach($links as $link) {
    echo '<li><a href="'.$link.'">'.$link.'</a></li>';
}
于 2012-08-29T15:35:23.933 に答える
1

explode関数を使用して文字列を簡単に分割できます。

// split string by comma, returns array
$linksArray = explode(',', $links);

foreach($linksArray as $link) {
    echo $link; // print each link etc
}
于 2012-08-29T15:33:30.233 に答える
0

文字列を配列に分解してから、配列をループしてデータを出力することをお勧めします。個人的には、配列は文字列よりもはるかに扱いやすいと思います。例えば:

$links = explode(',', $links);

foreach($links as $link) {
    ?>
    <li><a href="http://<?php echo htmlout($link); ?>"><?php echo htmlout($link); ?></a></li>
    <?php
}
于 2012-08-29T15:38:23.120 に答える