2013-07-11 2 views
0

Прошу прощения, это ничто из этого не выглядит правильным, это мой первый вопрос, задающий вопрос на этом сайте.петля через идентификатор привязки

Я создаю веб-страницу с использованием html, css и php. В частности, я пытаюсь создать субнавигационные ссылки на своей странице, используя информацию из базы данных.

Вот код, у меня есть:

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 массив подкатегории, что я хотел бы, чтобы пользователь мог нажать на ссылку с именем подкатегории, и она будет принимать их к тому, что часть той же страницы. На данный момент все, что он делает, это создать одну гигантскую ссылку под всеми именами подкатегорий вместо создания каждой отдельной ссылки.

Очевидно, что мне нужен какой-то цикл, но я не уверен, как просмотреть $ resultString, чтобы изменить идентификатор привязки и href.

Любая помощь очень ценится !!

+0

вы должны включить результат 'print_r ($ subArr)' мы не знаем структуру вашего массива. – Robert

ответ

0

(топика, но важно)

У вас есть опечатка, должно быть:

style="cursor: pointer; ..." 

Вместо:

style="cursor: poimter; ..." 
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>'; 
    } 
} 

Кроме того, это выглядит странно, чтобы иметь тот же идентификатор, что и href.

Я заметил, что вы используете функцию mysql_ *, которая разлажена и будет удалена в будущем. Рассмотрим использование PDO или MySQLi вместо этого.

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=""; 
} 
0

Вы, кажется, находитесь на правильном пути, но некоторые вещи перепутаны.

Меню

Во-первых, при создании меню, которое вы хотите использовать unordered list, то стиль его с помощью CSS. basic example of this является:

<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 Loop

Во-первых запиской. Вы используете 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 на теге, то есть тот стиль по умолчанию.

Надеюсь, вам удастся прояснить некоторые вещи для вас.