php count (), чтобы помочь дать HTML-элементам установить атрибуты - PullRequest
0 голосов
/ 06 июня 2009

Я строю меню, которое хочу отображать определенным образом. Однако его необходимо заполнить из базы данных, чтобы его нельзя было жестко кодировать.

По сути, я хочу, чтобы теги <li> появлялись в заданных местах при их создании, и надеялись, что я смогу установить их класс, используя PHP count () и уже настроив для них CSS.

В основном, меню будет содержать не более 12 <li> тегов. Я хочу иметь возможность назначать им CSS-идентификатор по мере их создания. У них не может быть универсального класса, поскольку они должны быть абсолютно позиционированы на странице, поэтому я надеялся использовать count (), чтобы вернуть количество тегов <li>, а затем каким-то образом назначить им уникальный идентификатор CSS * 1010. *

<ul id="work_div"> 
    <li id="one"><a href="detail/one">Project 1</a></li>
    <li id="two"><a href="detail/two">Project 2</a></li>
    <li id="three"><a href="detail/three">Project 3</a></li>
    <li id="four"><a href="detail/four">Project 4</a></li>
</ul> 

По сути, поскольку меню заполнено, я бы хотел назначить конкретный идентификатор для <li>, используя count(), чтобы определить, куда и куда идти.

Я думаю, что мне нужно поместить результаты базы данных в переменную и присвоить значения оттуда ????

Есть смысл ??

Надеюсь!

Ответы [ 3 ]

2 голосов
/ 06 июня 2009

не очень понятно, для чего вам нужен count (). Прежде всего вы должны получить связанный массив элементов из базы данных в нужном порядке (сортировка по идентификатору, названию и т. д.) Вы можете получить что-то вроде этого:

//result from database
$array = array(array('page_id'=>'1','sef_title'=>'one','title'=>'Project 1'),array('page_id'=>'2','sef_title'=>'two','title'=>'Project 2'),array('page_id'=>'3','sef_title'=>'three','title'=>'Project 3'));

//create counter starting from 1
$i = 1;
$arrayLinks = array();
foreach($array as $link){
$arrayLinks[] = "<li id=\"link{$i}\"><a href=\"detail/{$link['sef_title']}\">{$link['title']}</a></li>";
$i++;
}
//print result in ul
echo '<ul id="work_div">' . implode("", $arrayLinks) . '</ul>';

В результате вы получите список с идентификаторами 'link1', 'link2' и т. Д.

2 голосов
/ 06 июня 2009

Хорошо, прежде всего взгляните на это . count () не является функцией, которую вы ищете. Хорошая идея - сохранить метку id в базе данных и записать их в скрипт для последующей печати.

В основном код будет выглядеть так:
РЕДАКТИРОВАТЬ (После прочтения комментариев), массив элементов может быть расширен, чтобы сохранить любой тип данных, который вы хотите, например другой массив:

$elements = array ( "one" => array ( "Project 1", "detail/one"), "two" => array( "Project 2", "detail/two"));
echo "<ul id='work_div'>";
foreach( $elements as $id => $key)
{
   list( $name, $href) = $key;
   echo "<li id=$id><a href='$href'>$name</a></li>";
}
echo "</ul>";

Вместо $ element вы будете использовать строку из базы данных.

1 голос
/ 06 июня 2009

Ниже приведен один из способов сделать это, где project_id - это число, указанное в ваших идентификаторах.

echo '<ul id="work_div">'
$sql = 'SELECT project_id, project_name, project_link FROM projects';
$dh = mysql_query( $sql );

while ( $result = mysql_fetch_assoc( $dh ) ) {
    echo '<li id="'.$result['project_id'].'"><a href="'.$result['project_link'].'">'.$result['project_id'].'</a></li>';
}
echo '</ul>'

Если вы не хотите использовать идентификатор проекта, вот еще один способ сделать это:

$numbers = array("zero", "one", "two", "three", "four", "five", "six", "seven");
echo '<ul id="work_div">'
$sql = 'SELECT project_name, project_link FROM projects';
$dh = mysql_query( $sql );
$counter = 1;
while ( $result = mysql_fetch_assoc( $dh ) ) {
    echo '<li id="'.$numbers[$counter].'"><a href="'.$result['project_link'].'">'.$result['project_id'].'</a></li>';
    $counter++;
}
echo '</ul>'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...