Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
20 / 9 / 3
Регистрация: 02.04.2015
Сообщений: 646
1

Вывод статьи из переменной

03.09.2017, 11:10. Показов 1006. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет!
Подскажите примером как мне реальзовать такое, есть пхп файл

articles.php
внутри него я создам 5 переменных в которых будет хранится текст соколо 200-300 символов

PHP
1
2
3
4
5
6
7
<?php 
$ar1 = 'Вывод статьи №1';
$ar2 = 'Вывод статьи №2';
$ar3 = 'Вывод статьи №3';
$ar4 = 'Вывод статьи №4';
$ar5 = 'Вывод статьи №5';
?>
статья должна отображаться только если вид ссылки в окне браузера будет такого вида
domen.ru/articles.php?ar=1

выводит на экран только
Вывод статьи №1

ну и желательно как-то в теременной хранить и описание для тега <title>
чтобы вместе с первой статьей выводило и название <title>Название статьи №1</title>

нужно все это разместить внутри файла articles.php и в зависимости от параметра ссылки выводить статью.

можно конечно все это записать в 5 разных файлов или использовать цмс, но нужен такой компактрый вариант, подскажите пожалуйста как реальзовать его!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.09.2017, 11:10
Ответы с готовыми решениями:

Вывод 50% статьи
Здравствуйте!!! Подскажите как грамотно вывести только 50% статьи с картинками?(заранее...

ID страницы или вывод статьи из БД
Всем привет. Каким образом осуществить моё желание. Есть у меня сайт на нём около 30 страниц.Все...

Вывод темы статей, и вывод самой статьи
Здравствуйте. Пожалуйста, подскажите. У меня в базу записывается:id, тема статьи, текст статьи. Я...

Вывод статьи по ее названию
у меня в базе есть таблица articles, в таблице есть статти. я хачу из меню статтей визвать ту или...

11
2169 / 1652 / 840
Регистрация: 10.01.2015
Сообщений: 5,190
03.09.2017, 11:55 2
Тут, ИМХО, правильнее с массивом работать, а не с отдельными переменными.

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$arr = array('Вывод статьи №1', 'Вывод статьи №2', 'Вывод статьи №3', 'Вывод статьи №4', 'Вывод статьи №5');
 
if(!count($_GET) || !isset($_GET['ar']))
  echo 'Отсутствует GET-переменная';
else{
  for($i = 0; $i < count($arr); $i++){
    if(!preg_match("~№{$_GET['ar']}~iu", $arr[$i]))
      continue;
    echo '<p id="article">' . $arr[$i] . '</p>';
  }
}
?>
<script>
document.title = document.querySelector('#article').innerText;
</script>
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
03.09.2017, 12:17 3
Лучший ответ Сообщение было отмечено pav1uxa как решение

Решение

serauto79,
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
$a[] = ['Текст статьи №1', 'Название статьи №1'];
$a[] = ['Текст статьи №2', 'Название статьи №2'];
$a[] = ['Текст статьи №3', 'Название статьи №3'];
 
$head = "";
$body = "";
 
if (isset($_GET['a']) && array_key_exists($_GET['a'], $a))
{
    $body = $a[$_GET['a']][0];
    $head = $a[$_GET['a']][1];
}
?>
<!DOCTYPE html>
<html>
<head>
    <title><?=$head?></title>
</head>
<body>
    <?=$body?>
    <hr>
    <?php
        for($i = 0; $i < count($a); ++$i)
            printf("<a href='?a=%s'>%s</a><br>", $i, $a[$i][1]);
    ?>
</body>
</html>
0
20 / 9 / 3
Регистрация: 02.04.2015
Сообщений: 646
03.09.2017, 22:24  [ТС] 4
Спасибо.
pav1uxa

я изменил немного массив под старый интерпретатор
теперь если ссылка в браузере вида
http://test.info/articles.php?a=1


то все ровно ничего не выводит из массива
скрин приложил, а также в титле
знак вопроса выводит

<title>�</title>
Миниатюры
Вывод статьи из переменной  
0
20 / 9 / 3
Регистрация: 02.04.2015
Сообщений: 646
03.09.2017, 22:25  [ТС] 5
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
$a = array('Текст статьи №1', 'Название статьи №1');
$a = array('Текст статьи №2', 'Название статьи №2');
$a = array('Текст статьи №3', 'Название статьи №3');
 
 
$head = "";
$body = "";
 
if (isset($_GET['a']) && array_key_exists($_GET['a'], $a))
{
    $body = $a[$_GET['a']][0];
    $head = $a[$_GET['a']][1];
}
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title><?=$head?></title>
</head>
<body>
    <?=$body?>
    <hr>
    <?php
        for($i = 0; $i < count($a); ++$i)
            printf("<a href='?a=%s'>%s</a><br>", $i, $a[$i][1]);
    ?>
</body>
</html>
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
04.09.2017, 22:20 6
Цитата Сообщение от serauto79 Посмотреть сообщение
знак вопроса выводит
Проблемы с кодировкой. Вы сохранили файл в кодировке utf-8?
0
20 / 9 / 3
Регистрация: 02.04.2015
Сообщений: 646
04.09.2017, 23:33  [ТС] 7
Цитата Сообщение от pav1uxa Посмотреть сообщение
Проблемы с кодировкой. Вы сохранили файл в кодировке utf-8?
да, файл в utf-8

но тут не только в кодировке проблема, а и в скрипте, иначе выводило бы не один знак вопроса, а заменяло все символы в тексте на знаки вопроса
Текст статьи №1
выводило бы так!
????? ?????? ??

Добавлено через 2 минуты
да и к тому же метатег добавил
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
тут однозначно скрипт
0
2169 / 1652 / 840
Регистрация: 10.01.2015
Сообщений: 5,190
05.09.2017, 00:00 8
Вероятно, сам документ не в UTF-8.
В notepad++ "Кодировки -> Преобразовать в UTF-8 без BOM"
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
05.09.2017, 00:25 9
Лучший ответ Сообщение было отмечено serauto79 как решение

Решение

Цитата Сообщение от serauto79 Посмотреть сообщение
array_key_exists($_GET['a'], $a)
PHP
1
array_key_exists($_GET, 'a')
Цитата Сообщение от serauto79 Посмотреть сообщение
$a = array('Текст статьи №1', 'Название статьи №1');
$a = array('Текст статьи №2', 'Название статьи №2');
$a = array('Текст статьи №3', 'Название статьи №3');
PHP
1
2
3
4
5
$a = array(
    1 => array('Текст статьи №1', 'Название статьи №1'),
    array('Текст статьи №2', 'Название статьи №2'),
    array('Текст статьи №3', 'Название статьи №3'),
);
Добавлено через 7 минут
Цитата Сообщение от serauto79 Посмотреть сообщение
isset($_GET['a']) && array_key_exists($_GET['a'], $a)
По сути 2 раза проверяется одно и тоже условия
1
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
05.09.2017, 08:14 10
Лучший ответ Сообщение было отмечено serauto79 как решение

Решение

Цитата Сообщение от Jewbacabra Посмотреть сообщение
PHP
1
array_key_exists($_GET, 'a')
Там первый параметр должен быть ключем, второй массивом http://php.net/manual/ru/funct... exists.php
Цитата Сообщение от Jewbacabra Посмотреть сообщение
По сути 2 раза проверяется одно и тоже условия
Первый раз проверяется, что существует ключ 'a' в массиве $_GET. Второй раз проверяется, что содержимое $_GET['a'] существует в массиве $a в качестве ключа. То есть если у тебя всего 4 статьи, а кто-либо запросит шестую.

Добавлено через 1 минуту
Цитата Сообщение от serauto79 Посмотреть сообщение
да и к тому же метатег добавил
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
тут однозначно скрипт
Добавьте еще в начало скрипта
PHP
1
header('Content-Type: text/html; charset=utf-8');
Добавлено через 1 минуту
Цитата Сообщение от serauto79 Посмотреть сообщение
но тут не только в кодировке проблема, а и в скрипте, иначе выводило бы не один знак вопроса, а заменяло все символы в тексте на знаки вопроса
Ну потому что Вы взяли мой работающий пример и сделали его неработающим...

Лучше бы версию php обновили...
2
20 / 9 / 3
Регистрация: 02.04.2015
Сообщений: 646
05.09.2017, 11:43  [ТС] 11
pav1uxa - спасибо, вот так я поправил массив как вы в примере дали и теперь работает


PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
$a = array(
1 => array('Текст статьи №1', 'Название статьи №1', 'Кейворд №1'),
2 => array('Текст статьи №2', 'Название статьи №2', 'Кейворд №2'),
3 => array('Текст статьи №3', 'Название статьи №3', 'Кейворд №3'),
);
 
$head = "";
$body = "";
$key = "";
 
if (array_key_exists($_GET['a'], $a))
{
$body = $a[$_GET['a']][0];
$head = $a[$_GET['a']][1];
$key = $a[$_GET['a']][2];
}
?>
 
 
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title><?=$head?></title>
</head>
<body>
 
<?=$body?>
<?=$key?>
 
</body>
</html>




у меня вопрос как в условии else вывести дефолтные данные
на тот случай если человек перешел без параметров по ссылке вида
http://test.info/articles.php
либо статьи всего 3, а он перешел по ссылке вида
http://test.info/articles.php?a=4

как ему отобразить дефолтные данные с массива

PHP
1
$defoltdata = array('Текст дефолт', 'Название дефолт', 'Кейворд дефолт');
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
05.09.2017, 22:18 12
Цитата Сообщение от serauto79 Посмотреть сообщение
как ему отобразить дефолтные данные с массива
Во-первых, верните мой, правильный скрипт (я про условие в if) Тот который у Вас сейчас выводит предупреждение, если зайти на страницу без GET параметров. (если включить отображение всех ошибок PHP)
Во-вторых, там есть строчки
PHP
1
2
$head = "";
$body = "";
Вот туда и вводите значения по умолчанию.

Пример:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
$a[] = array('Текст статьи №1', 'Название статьи №1', 'Кейворд №1');
$a[] = array('Текст статьи №2', 'Название статьи №2', 'Кейворд №1');
$a[] = array('Текст статьи №3', 'Название статьи №3', 'Кейворд №1');
 
$head = "Название дефолт";
$body = "Текст дефолт";
$key  = "Кейворд дефолт";
 
if (isset($_GET['a']) && array_key_exists($_GET['a'], $a))
{
    $body = $a[$_GET['a']][0];
    $head = $a[$_GET['a']][1];
    $key  = $a[$_GET['a']][2];
}
?>
<!DOCTYPE html>
<html>
<head>
    <title><?=$head?></title>
</head>
<body>
    <?=$body?><br>
    <?=$key?>
    <hr>
    <?php
        for($i = 0; $i < count($a); ++$i)
            printf("<a href='?a=%s'>%s</a><br>", $i, $a[$i][1]);
    ?>
</body>
</html>
0
05.09.2017, 22:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.09.2017, 22:18
Помогаю со студенческими работами здесь

Laravel5 Вывод статьи
Как мне вывести одну статью? Так я вывожу все статьи, в index.blade.php выводится массив из 5...

Вывод полной статьи
Здравствуйте, у меня возникла проблема (для наглядности я буду копировать весь код). Вот...

Вывод статьи по категории
Всем привет, в php недавно, написал (вернее списал, переделал) банальный скрипт: В modules.php...

Вывод полной статьи по id
Всем примет. Вообще сделал я вывод из дб на главную страницу и ограничил текст как привью. Но...

Вывод статьи через id
Я ещё новичок в PHP и я пытаюсь написать микро-блог. У меня есть файл index.php в котором через...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru