Данные базы данных в массиве PHP - PullRequest
2 голосов
/ 02 мая 2011

У меня есть таблица в phpmyadmin, в которой хранятся 'id' (auto inc), 'title' и 'date'.

У меня есть веб-страница, где я отображаю 10 последних элементов (я просто заказываюпо идентификатору).На этой странице я печатаю заголовок и дату.Я хочу также отобразить номер опубликованного элемента, поэтому первый опубликованный элемент равен 1, второй - 2 и т. Д. Я не могу просто напечатать идентификатор из базы данных, потому что, если я удаляю строку, числа не будут прямыми.больше.

Моя идея состояла в том, чтобы поместить все данные в массив, но я понятия не имею, как лучше всего это сделать и как я могу напечатать этот номер элемента.Так, например, когда я хочу отобразить 54-й элемент, я могу легко напечатать $ items [54] [id] или что-то еще, и мне будет показано число 54, и для отображения заголовка я напечатаю $ items [54] [title].

Я не знаю, есть ли более простые методы, плюс массивы всегда начинаются с 0, но мои элементы должны начинаться с 1.

Помимо этой страницы, которая показывает 10 последних элементов, есть еще одинстраница, где он получает заголовок элемента из URL.Как я смогу искать заголовок в массиве и отображать данные таким же образом, но только для запрашиваемого заголовка?

Заранее спасибо!

Ответы [ 4 ]

1 голос
/ 02 мая 2011

Вы должны выучить PHP перед тем, как начать программировать на PHP;) Прочитайте и изучите руководство по PHP и некоторые учебники!

Что касается вашего вопроса, это простой цикл, который вы хотите сделать. Один из способов сделать это в качестве примера.

Получите 10 последних элементов из базы данных любым удобным вам способом, следуя некоторому коду, частично псевдокоду.

$markup = '';

for ($i=1; $i<=count($items); $i++)
{
    $markup .= 'Item ' . $i . ': ' . $items['date'] . ' - ' . $items['title'];
    $markup .= '<a href="/path/to/postpage/id/' . $items['id'] . '">read more</a>';
    $markup .= PHP_EOL;
}

echo $markup;
1 голос
/ 02 мая 2011
"SELECT COUNT(id) as cnt FROM mytable";

Вы можете выбрать количество всех записей в базе данных.

, а затем назначьте его итератору

$i = $row['cnt']; // this will hold the ammount of records e.g. 21

// other query

while($row = mysql_fetch_assoc($result)) {
echo $i;

$i--; // this will decrement on every iteration 21, 20 , 19, and so on.
}
1 голос
/ 02 мая 2011

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

Чтобы создать многомерный массив, я бы сделал что-то вроде:

$result = mysql_query(...);<br> $items = array();<br> while($item = mysql_fetch_assoc($result)) {<br> $items[] = $item;<br> }

Теперь, например, $ items [12] даст вам номер 13 (так как он проиндексирован 0).

Наконец, чтобы выбрать только элемент с определенным заголовком, я бы использовал запрос, содержащий предложение WHERE, например

"SELECT ... FROM ... WHERE title = '".$title."'"

Это очень важно очистить эту переменную перед тем, как использовать ее в запросе.

Вы можете узнать больше о MySQL во многих местах. Быстрый поиск в Google дал мне это: http://www.tutorialspoint.com/mysql/index.htm

0 голосов
/ 02 мая 2011

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

Что касается поиска заголовка, вам нужно будет выполнить другой запрос с условием WHERE title = '$title', но остерегайтесь SQLинъекции .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...