Мне нужна помощь, чтобы указывать в правильном направлении.Я все утро просматривал вопросы и ответы по этой теме, и ни один из них, которые я нашел, не похож на мой код для работы.
У меня есть XML-файл, который выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<images>
<image>
<src>belly_button_1.jpg</src>
<title>Belly Button</title>
<desc>Belly button piercing using 14G curved barbell.</desc>
<instagram>https://www.example.com/p/BbHba1BgmrC/</instagram>
<date>November 5, 2017</date>
</image>
<image>
<src>christina_1.jpg</src>
<title>Christina(Pubic)</title>
<desc>Christina(pubic) piercing using 14G curved barbell.</desc>
<instagram>https://www.example.com/p/BclajtRgkPk/</instagram>
<date>December 11, 2017</date>
</image>
<image>
<src>christina_2.jpg</src>
<title>Christina(Pubic)</title>
<desc>Christina(pubic) piercing using 14G curved barbell.</desc>
<instagram>https://www.example.com/p/BdSlWkogshq/</instagram>
<date>December 29, 2017</date>
</image>
<image>
<src>eyebrow_1.jpg</src>
<title>Eyebrow</title>
<desc>Vertical eyebrow piercing using 16G curved barbell.</desc>
<instagram>https://www.example.com/p/BbIBtHDAX2F/</instagram>
<date>November 5, 2017</date>
</image>
<image>
<src>eyebrow_2.jpg</src>
<title>Eyebrow</title>
<desc>Vertical eyebrow piercing using 16G curved barbell.</desc>
<instagram>https://www.example.com/p/Bfi9x_RAczq/</instagram>
<date>February 23, 2018</date>
</image>
<image>
<src>lobe_1.jpg</src>
<title>Ear Lobe</title>
<desc>Ear lobe piercing using 16G straight barbell.</desc>
<instagram>https://www.example.com/p/BbHxZLtAnVA/</instagram>
<date>November 5, 2017</date>
</image>
<image>
<src>lobes_1.jpg</src>
<title>Ear Lobe(Pair)</title>
<desc>Ear lobe piercings using 14G captive bead rings.</desc>
<instagram>https://www.example.com/p/Bb4zQO1gsAO/</instagram>
<date>November 24, 2017</date>
</image>
<image>
<src>lobes_2.jpg</src>
<title>Ear Lobe(Pair)</title>
<desc>Ear lobe piercings using 14G captive bead rings.</desc>
<instagram>https://www.example.com/p/BdSlqmXggSt/</instagram>
<date>December 29, 2017</date>
</image>
<image>
<src>monroe_1.jpg</src>
<title>Monroe</title>
<desc>Monroe piercing using 16G lip stud.</desc>
<instagram>https://www.example.com/p/BbHxJwYA3lt/</instagram>
<date>November 5, 2017</date>
</image>
<image>
<src>monroe_2.jpg</src>
<title>Monroe</title>
<desc>Monroe piercing using 16G internally threaded lip stud.</desc>
<instagram>https://www.example.com/p/BifXeMYFjfO/</instagram>
<date>May 7, 2018</date>
</image>
<image>
<src>nipples_1.jpg</src>
<title>Nipples(Female Pair)</title>
<desc>Nipple piercings using 14G straight barbell.</desc>
<instagram>https://www.example.com/p/Bcl7eSoAuaa/</instagram>
<date>December 12, 2017</date>
</image>
<image>
<src>nipples_2.jpg</src>
<title>Nipples(Female Pair)</title>
<desc>Nipple piercings using 14G straight barbell.</desc>
<instagram>https://www.example.com/p/BdSlP5iATaj/</instagram>
<date>December 29, 2017</date>
</image>
<image>
<src>nostril_1.jpg</src>
<title>Nostril</title>
<desc>Nostril piercing using 20G nose stud.</desc>
<instagram>https://www.example.com/p/BbHbK6gg8Ub/</instagram>
<date>November 5, 2017</date>
</image>
<image>
<src>nostril_2.jpg</src>
<title>Nostril</title>
<desc>Nostril piercing using 18G nose stud.</desc>
<instagram>https://www.example.com/p/BifWlv7FsMK/</instagram>
<date>May 7, 2018</date>
</image>
<image>
<src>septum_1.jpg</src>
<title>Septum</title>
<desc>Septum piercing using 16G horeshoe barbell.</desc>
<instagram>https://www.example.com/p/Bb_QglhAYIA/</instagram>
<date>November 27, 2018</date>
</image>
<image>
<src>septum_2.jpg</src>
<title>Septum</title>
<desc>Septum piercing using 16G horeshoe barbell.</desc>
<instagram>https://www.example.com/p/BcDzH46AG6W/</instagram>
<date>November 28, 2018</date>
</image>
<image>
<src>septum_snakebites_1.jpg</src>
<title>Septum And Snakebites</title>
<desc>Septum piercing using 16G horeshoe barbell along with snakebite piercings using 16G internally threaded lip studs.</desc>
<instagram>https://www.example.com/p/BcI_PAuAYQ3/</instagram>
<date>November 30, 2017</date>
</image>
<image>
<src>snakebites_1.jpg</src>
<title>Snakebites</title>
<desc>Snakebite piercings using 14G horseshoe barbells.</desc>
<instagram>https://www.example.com/p/BbK2X5pgXpv/</instagram>
<date>November 6, 2017</date>
</image>
<image>
<src>snakeeyes_1.jpg</src>
<title>Snake Eyes</title>
<desc>Snake Eyes piercing through tip of tongue using 14G internally threaded curved barbell.</desc>
<instagram>https://www.example.com/p/BePKMu_AdHH/</instagram>
<date>January 21, 2018</date>
</image>
<image>
<src>throat_surface.jpg</src>
<title>Throat Surface</title>
<desc>Throst surface piercing using two 16G curved barbells.</desc>
<instagram>https://www.example.com/p/BbHwp83Adq3/</instagram>
<date>November 5, 2017</date>
</image>
<image>
<src>tongue_1.jpg</src>
<title>Tongue</title>
<desc>Tongue piercing using 14G straight barbell.</desc>
<instagram>https://www.example.com/p/BbH21jKAovA/</instagram>
<date>November 5, 2017</date>
</image>
<image>
<src>tongue_2.jpg</src>
<title>Tongue</title>
<desc>Tongue piercing using 14G straight barbell.</desc>
<instagram>https://www.example.com/p/Bb76eLBAVSf/</instagram>
<date>November 25, 2017</date>
</image>
<image>
<src>tongue_3.jpg</src>
<title>Tongue</title>
<desc>Tongue piercing using 14G straight barbell.</desc>
<instagram>https://www.example.com/p/BeUhHj2goVO/</instagram>
<date>January 23, 2018</date>
</image>
</images>
И я использую цикл for
для отображения этих данных на своей странице следующим образом:
if(isset($_GET['page'])) { $startPage = $_GET['page']; } else { $startPage = 1; }
$perPage = 9;
$currentRecord = 1;
$imagexml = new SimpleXMLElement($_SERVER['DOCUMENT_ROOT'].'/info/gallery.xml', 0, true);
// Pagination
$numberPages = ceil((count($imagexml->image) / $perPage));
$prevDisabled = $startPage > 1 ? '' : 'disabled';
echo "<li class='page-item {$prevDisabled}'><a class='page-link' href='?page=".($startPage-1)."' class='button'>Previous</a></li>";
for ($i = 1; $i <= $numberPages; $i ++) {
$active = $i == $startPage ? 'active' : '';
echo ("<li class='page-item {$active}'><a class='page-link' href='?page=" . $i . "'>" . $i . "</a></li>");
}
$nextDisabled = $startPage < $numberPages ? '' : 'disabled';
echo "<li class='page-item {$nextDisabled}'><a class='page-link' href='?page=".($startPage+1)."' class='button'>Next</a></li>";
for ($currentRecord = (($startPage-1)*$perPage); $currentRecord < (($startPage-1)*$perPage)+$perPage && $currentRecord < count($imagexml->image); $currentRecord++) {
$image = $imagexml->image[$currentRecord];
echo '<div class="col-sm-12 col-md-4 mb-3 text-center">
<div class="card">
<a href="http://example.com/img/gallery/'.$image->src.'" data-toggle="lightbox" data-gallery="body_piercings">
<img src="http://example.com/img/gallery/'.$image->src.'" class="card-img-top img-fluid img-thumbnail bx-shadow" alt="Card image cap">
</a>
<div class="card-body">
<h5 class="card-title txt-shadow">'. $image->title .'</h5>
<p class="card-text txt-shadow">'.$image->desc.'</p>
<a href="'.$image->instagram.'" target="_blank" class="btn btn-instagram bx-shadow"><i class="fa fa-instagram"> </i> View On Instagram</a>
</div>
<div class="card-footer">
<small class="text-muted">Posted: '.$image->date.'</small>
</div>
</div>
</div>';
}
Кажется, я не могу понять, как это отсортировать.
Я уже посмотрел следующие ответы:
Сортировка элементов XML по дате
Сортировка файла XML в порядке возрастания с помощью php
Как отсортировать SimpleXMLElement на PHP
Все они используют цикл foreach
для вывода данных, но так как я использую нумерацию страниц, я использую for
цикл, и мне нужно некоторое руководство.
Одна из причин, по которой у меня возникли проблемы, заключается в том, что при ответе на второй связанный вопрос ответ использует:
$books = array();
$xml = simplexml_load_file('books.xml');
foreach($xml->items->item as $item) {
$books[] = array(
'id' => (string)$item->attributes()->id,
'title' => (string)$item->title,
'isbn' => (string)$item->isbn,
'course' => (string)$item->courses->course[0],
'borrowed_count' => intval($item->borrowedcount)
);
}
array_sort_by_column($books, 'borrowed_count');
var_dump($books);
Соответствующий код, который у меня есть:
for (
$currentRecord = (($startPage - 1) * $perPage);
$currentRecord < (
($startPage - 1) * $perPage) + $perPage && $currentRecord < count($imagexml->image
);
$currentRecord++
) {
Итакпревращение в что-то вроде foreach($imagexml->images->image as $image) {
не представляется возможным без потери моей нумерации страниц.Если я верю, что смогу получить помощь в этой области, я, вероятно, смогу выяснить остальное.
Я забыл добавить, что хочу отсортировать по дате публикации.Сначала новые.