0

このサイトで質問するのは初めてです。

HTML、CSS、PHPを使用してWebページを作成しています。具体的には、データベースからの情報を使用して、ページにサブナビゲーション リンクを作成しようとしています。

ここに私が持っているコードがあります:

foreach ($subArr as $sub => $result)
{
    if (mysql_num_rows($result) > 0)
    {
       $resultString .= '<a id="$sub" style="cursor: poimter; color: #0076cf;" href="$sub">'.'  |  '.$sub.'  |  '.'</a>';
    }
 }

$subArr は、ユーザーがサブカテゴリの名前のリンクをクリックできるようにするサブカテゴリの配列であり、同じページのその部分に移動します。現時点では、個々のリンクを作成するのではなく、すべてのサブカテゴリ名の下に 1 つの巨大なリンクを作成するだけです。

明らかに何らかのループが必要ですが、$resultString を調べてアンカー ID と href の両方を変更する方法がわかりません。

どんな助けでも大歓迎です!!

4

4 に答える 4

0
foreach ($subArr as $sub => $result)
{
  if (mysql_num_rows($result) > 0)
  {
    $resultString = '<a id="$sub" style="cursor: pointer; color: #0076cf;" href="$sub">'.'  |  '.$sub.'  |  '.'</a>';
  }

  $resultstring="";
}
于 2013-07-11T13:53:55.430 に答える
0

(トピックではありますが、重要です)

タイプミスがあります。次のようになります。

style="cursor: pointer; ..."

それ以外の :

style="cursor: poimter; ..."
于 2013-07-11T13:46:47.087 に答える
0

コードにエラーがあります。

変数を''に配置する必要がある適切な結果を得るために、php が解析しない変数を配置します""

foreach ($subArr as $sub => $result)
{
    if (mysql_num_rows($result) > 0)
    {
       $resultString .= '<a id="'.$sub.'" style="cursor: pointer; color: #0076cf;" href="'.$sub.'">  |  '.$sub.'  |  </a>';
    }
 }

さらに、href と同じ ID を持つのは奇妙に見えます。

非推奨であり、将来削除される mysql_* 関数を使用していることに気付きました。代わりにPDOまたはMySQLiの使用を検討してください。

于 2013-07-11T13:47:07.770 に答える
0

あなたは正しい軌道に乗っているように見えますが、いくつかのことが混同されています。

メニュー

最初に を使用するメニューを作成しunordered list、次に CSS でスタイルを設定します。これの基本的な例は次のとおりです。

<ul class="menu">
    <li><a href="test">Test</a></li>
    <li><a href="test2">Test 2</a></li>
    <li><a href="test3">Test 3</a></li>
</ul>

次に、次の CSS でスタイルを設定します

ul.menu, ul.menu * {
    list-style: none;
    padding: 0;
    margin: 0;
}

ul.menu {
    width: 100%;
    height: 20px;
    background: #ccc;
    padding: 5px 0; /* Add padding top and bottom */
}

ul.menu > li {
    height: 20px;
    line-height: 20px;
    float: left;
}

/* Make a tag fill the entire LI so users can click
anywhere, not just on the text. */
ul.menu > li > a { 
    display: block;
    padding: 0 10px; /* Add padding between items */
    color: #000;
    text-decoration: none;
}

ul.menu > li > a:hover, ul.menu > li > a:active {
    background: #000;
    color: #FFF;
}

/* Add divider between items, except last item (Does not work with earlier versions of IE) */
ul.menu > li:not(:last-child) {
    border-right: 1px solid #000;
}

PHP ループ

まずメモ。を使用しています。mysqlこれはdepreciatedです。つまり、あるバージョンの PHP では、間もなく利用できなくなるということです。多くの人がPDOを学ぶことを勧めています。個人的には、プリペアド ステートメントよりもMySQLiを好みますが、それは単なる私の好みです。どちらでも構いませんが、どちらかを学んでください。

今あなたのループのために。ループ内で mysql クエリの結果をチェックしているようですが、それは間違っています。上記で、結果を $subArr にロードするクエリがあると推測しています。mysql_num_rows$subArr にロードする前に呼び出す必要があります。

ループ自体は、上記のようにリストに適用すると、それ以外は問題ありません。最終的なコードは次のようになります。私の例では MySQLi を使用しました。必要に応じて MySQL に変換するのはそれほど難しくありませんが、同じことをお勧めします。

<?php
$subArr = array();
$query = "SELECT something FROM somewhere";
$result = $mysql->query($query);
if($result->num_rows) {
    while($row = $result->fetch_assoc()) { //I personally prefer fetch_assoc over the others, but fetch_row or fetch_array are both fine here too.
        $subArr = $row;
    }
}

//Lets output the menu
$resultString .= '<ul class="menu">';
foreach($subArr as $sub => $result) {
    $resultString .= '<li><a href="' . $result['url'] . '">' . $result['name'] . '</a></li>'
}
$resultString = '</ul>';

最後の注意点としてcursor: pointer、a タグに a を付ける必要はありません。デフォルトでそのスタイルになっています。

これで問題が解決することを願っています。

于 2013-07-11T14:20:44.853 に答える