Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: как заменить $page_data[5];

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Как заменить на $content
DonQuijote
Отправлено: 25 Апреля, 2016 - 17:44:38
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Привет всем!
В общем проблема такая, есть скрипт вывода контента в шаблон из БД.

functions.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. function GetDataArt($page_id){
  3.         global $mysqli;
  4.         $result = $mysqli->query("SELECT * FROM `medals` WHERE `id` = '$page_id' LIMIT 1");
  5.         $query = $result;
  6. if(!$query){
  7. echo('Не удалось взять данные из БД!');
  8.   }
  9.   else{
  10. if(mysqli_num_rows($query)>0){
  11.   $res = mysqli_fetch_array($query);
  12.   $title = $res['title'];
  13.   $page_title = $res['title'];
  14.   $img_small = $res['img_small'];
  15.   $cat_honors = $res['cat_honors'];
  16.   $meta_kw = $res['meta_kw'];
  17.   $meta_d = $res['meta_d'];
  18.   $content = $res['content'];
  19. }
  20. else{
  21.   $title = 'К сожалению, такая страница отсутствует на данном сайте!';
  22.   $page_title = 'К сожалению, такая страница отсутствует на данном сайте!';
  23.   $meta_kw = $meta_d = $content = '';
  24. }
  25. $data_arr = array($title, $page_title, $img_small, $cat_honors, $meta_kw, $meta_d, $content);
  26. return $data_arr;
  27.   }
  28. }
  29. ?>


и файл index.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. require('conf/connect_db.php');
  3. require('conf/functions.php');
  4.  
  5. if(!isset($_GET['page_id'])){
  6.     $page_id = '1';
  7. }
  8. else{
  9.     $page_id = addslashes(strip_tags(trim($_GET['page_id'])));
  10. }
  11. $page_data = GetDataArt($page_id);
  12.  
  13. ?>
  14. <!doctype html>
  15. <html>
  16. <head>
  17. <meta charset="windows-1251">
  18. <meta name="description" content="<?PHP echo $page_data[5]; ?>" />
  19. <meta name="keywords" content="<?PHP echo $page_data[4]; ?>" />
  20. <title><?PHP echo $page_data[0]; ?></title>
  21. <link href="css_styles/all_styles.css" rel="stylesheet" type="text/css">
  22. </head>
  23.  
  24. <body>
  25. <div id="m_and_o">
  26.     <h1><?PHP echo $page_data[1]; ?></h1>
  27.     <p><?PHP echo $page_data[6]; ?></p>
  28. </div>
  29. </body>
  30. </html>



Подскажите как заменить $page_data = GetDataArt($page_id);, на то чтобы
выводилось не через <?php echo $page_data[5]; ?>
а через например <?php echo $title; ?>
(Добавление)
Я конечно понимаю это банально, для кого-то, но может всё таки подскажите
 
 Top
Viper
Отправлено: 25 Апреля, 2016 - 19:03:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




PHP:
скопировать код в буфер обмена
  1. $data_arr = array(
  2.         'title' =>      $title,
  3.         'page_title' => $page_title,
  4.         'img_small' =>  $img_small,
  5.         'cat_honors' => $cat_honors,
  6.         'meta_kw' =>    $meta_kw,
  7.         'meta_d' =>     $meta_d,
  8.         'content' =>    $content
  9. );

и вместо $page_data[5]; писать $page_data['title'];
Это нормально.

Можно также как объект только перед array( добавить (object) и обращаться как $page_data->title;

(Отредактировано автором: 25 Апреля, 2016 - 19:03:55)



-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
DonQuijote
Отправлено: 25 Апреля, 2016 - 19:40:52
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Viper пишет:
PHP:
скопировать код в буфер обмена
  1. $data_arr = array(
  2.         'title' =>      $title,
  3.         'page_title' => $page_title,
  4.         'img_small' =>  $img_small,
  5.         'cat_honors' => $cat_honors,
  6.         'meta_kw' =>    $meta_kw,
  7.         'meta_d' =>     $meta_d,
  8.         'content' =>    $content
  9. );

и вместо $page_data[5]; писать $page_data['title'];
Это нормально.

Можно также как объект только перед array( добавить (object) и обращаться как $page_data->title;



А другого варианта нет?
нафига тогда вот эта часть кода
PHP:
скопировать код в буфер обмена
  1. if(mysqli_num_rows($query)>0){
  2.   $res = mysqli_fetch_array($query);
  3.   $title = $res['title'];
  4.   $page_title = $res['title'];
  5.   $img_small = $res['img_small'];
  6.   $cat_honors = $res['cat_honors'];
  7.   $meta_kw = $res['meta_kw'];
  8.   $meta_d = $res['meta_d'];
  9.   $content = $res['content'];
  10. }
 
 Top
Viper
Отправлено: 25 Апреля, 2016 - 20:11:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




DonQuijote пишет:
нафига тогда вот эта часть кода
это вы мне ответьте нафига оно там.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
DonQuijote
Отправлено: 25 Апреля, 2016 - 20:15:25
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Viper пишет:
DonQuijote пишет:
нафига тогда вот эта часть кода
это вы мне ответьте нафига оно там.


Я думал, что это для как раз отражения в echo.
Ведь вот эта часть кода кода
PHP:
скопировать код в буфер обмена
  1. else{
  2.   $title = 'К сожалению, такая страница отсутствует на данном сайте!';
  3.   $page_title = 'К сожалению, такая страница отсутствует на данном сайте!';
  4.   $meta_kw = $meta_d = $content = '';
  5. }


работает так как надо, когда нет страницы которую запрашивают. а почему не работает в остальном.
(Добавление)
Народ помогите плиз. Я в php новичёк, в мануале капец одни простые примеры. Типа 2+2=4 и 3*3=9. А как блин вычислить (2tg a)/(1-tg^2a) - ХЗ. Это я к примеру. но суть таже этого мануала. Две книги купил, в одной блин какой-то простецкий соц сайт делают, в другой простецкий интернет магазин. А мне не то ни другое не надо. Пытался там найти что-то похожее. Одно простое решение для всего, как по мануалу.
Не получается мне применить эти простые примеры к своей задумке. может не с той стороны думаю?
 
 Top
Viper
Отправлено: 25 Апреля, 2016 - 21:22:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




DonQuijote пишет:
работает так как надо, когда нет страницы которую запрашивают. а почему не работает в остальном.
потому что echo $title; и echo $page['title']; разные вещи. К тому же у вас не ассоциативный массив, а просто нумерованный.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
DonQuijote
Отправлено: 25 Апреля, 2016 - 21:40:48
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Viper пишет:
DonQuijote пишет:
работает так как надо, когда нет страницы которую запрашивают. а почему не работает в остальном.
потому что echo $title; и echo $page['title']; разные вещи. К тому же у вас не ассоциативный массив, а просто нумерованный.



и как мне переделать в ассоц массив? и сделать из $page['title'] - просто $title?
в мануале опять каша какая-то
 
 Top
Viper
Отправлено: 25 Апреля, 2016 - 23:45:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Всё в мануале норм.
Перед if(mysqli_num_rows($query)>0){ задайте ассоциативный массив $data_arr с значениями по умолчанию.
$data_arr у вас должен быть равен mysqli_fetch_array($query);
else убираете.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
DonQuijote
Отправлено: 26 Апреля, 2016 - 20:01:12
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Viper пишет:
Всё в мануале норм.
Перед if(mysqli_num_rows($query)>0){ задайте ассоциативный массив $data_arr с значениями по умолчанию.
$data_arr у вас должен быть равен mysqli_fetch_array($query);
else убираете.


Так что ли?
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. function GetDataArt($page_id){
  3.         global $mysqli;
  4.         $result = $mysqli->query("SELECT * FROM `medals` WHERE `id` = '$page_id' LIMIT 1");
  5.         $query = $result;
  6. if(!$query){
  7. echo('Не удалось взять данные из БД!');
  8.   }
  9.  
  10.  
  11. $data_arr = array(
  12.         'title' => $title,
  13.         'page_title' => $page_title,
  14.         'img_small' => $img_small,
  15.         'cat_honors' => $cat_honors,
  16.         'meta_kw' => $meta_kw,
  17.         'meta_d' => $meta_d,
  18.         'content' => $content
  19. );
  20.          
  21.          
  22. if(mysqli_num_rows($query)>0){
  23.   $data_arr = mysqli_fetch_array($query);
  24.   $title = $data_arr['title'];
  25.   $page_title = $data_arr['title'];
  26.   $img_small = $data_arr['img_small'];
  27.   $cat_honors = $data_arr['cat_honors'];
  28.   $meta_kw = $data_arr['meta_kw'];
  29.   $meta_d = $data_arr['meta_d'];
  30.   $content = $data_arr['content'];
  31. }
  32. else{
  33.   $title = 'К сожалению, такая страница отсутствует на данном сайте!';
  34.   $page_title = 'К сожалению, такая страница отсутствует на данном сайте!';
  35.   $meta_kw = $meta_d = $content = '';
  36. }
  37.  
  38. return $data_arr;
  39. }
  40. ?>



везде примеры одни иваны и яблоки
 
 Top
Viper
Отправлено: 26 Апреля, 2016 - 22:33:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




PHP:
скопировать код в буфер обмена
  1. function GetDataArt ($page_id) {
  2.         global $mysqli;
  3.  
  4.         $result = $mysqli->query(
  5.                 "SELECT `title`, `title` AS `page_title`, `img_small`, `cat_honors`, `meta_kw`, `meta_d`, `content`"
  6.                 . "\n FROM `medals`"
  7.                 . "\n WHERE `id` = " . (int) $page_id
  8.                 . "\n LIMIT 1"
  9.         );
  10.  
  11.         if(!$result) {
  12.                 echo('Не удалось взять данные из БД!');
  13.  
  14.                 return false;
  15.         }
  16.  
  17.         $data_arr = array(
  18.                 'title'      => 'К сожалению, такая страница отсутствует на данном сайте!',
  19.                 'page_title' => 'К сожалению, такая страница отсутствует на данном сайте!',
  20.                 'img_small'  => '',
  21.                 'cat_honors' => '',
  22.                 'meta_kw'    => '',
  23.                 'meta_d'     => '',
  24.                 'content'    => ''
  25.         );
  26.  
  27.         if (mysqli_num_rows($result) > 0) {
  28.                 $data_arr = mysqli_fetch_array($result);
  29.         }
  30.  
  31.         return $data_arr;
  32. }

как-то так


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
DonQuijote
Отправлено: 27 Апреля, 2016 - 21:09:17
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Спасибо! Вот есть же гениальные люди, и кода меньше стало и работает все.
(Добавление)
Вот ещё проблема такая.
есть индексный файл, он идёт как шаблон.
и два файла
первый выгружает из БД данные и формирует ссылки
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. require('conf/connect_db.php');
  3. ?>
  4. <!doctype html>
  5. <html>
  6. <head>
  7. <meta charset="windows-1251">
  8. <title>Документ без названия</title>
  9. <link href="css_styles/all_styles.css" rel="stylesheet" type="text/css">
  10. </head>
  11.  
  12. <body>
  13. <?PHP
  14. //consultation:
  15. if ($result = $mysqli->query("SELECT * FROM `medals`")) {
  16.  
  17.         while($row = $result->fetch_assoc()) {
  18.                 echo '<a href="/medals.php?page_id='.$row['id'].'">';
  19.                 echo '<div id="medals">';
  20.                 echo '<img src="img/medals/small/'.$row['img_small'].'.jpg" width="100" height="100">';
  21.                 echo '<div>'.$row['title'].'</div>';
  22.                 echo '</div>';
  23.                 echo '</a>';
  24.     }
  25.         $result->close();
  26. }
  27. /* Закрываем соединение */
  28. $mysqli->close();
  29. ?>
  30. </body>
  31.  
  32. </html>


И ссылки из первого файла ссылаются на файл где открываются полные данные о медали
типа так http://9may1945[dot]test2[dot]ru/medals.php?page_id=3

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. require('conf/connect_db.php');
  3. require('conf/functions.php');
  4.  
  5. if(!isset($_GET['page_id'])){
  6.     $page_id = '1';
  7. }
  8. else{
  9.     $page_id = addslashes(strip_tags(trim($_GET['page_id'])));
  10. }
  11. $page_data = GetDataArt($page_id);
  12.  
  13. ?>
  14. <!doctype html>
  15. <html>
  16. <head>
  17. <meta charset="windows-1251">
  18. <meta name="description" content="<?PHP echo $page_data['meta_d']; ?>" />
  19. <meta name="keywords" content="<?PHP echo $page_data['meta_kw']; ?>" />
  20. <title><?PHP echo $page_data['title']; ?></title>
  21. <link href="css_styles/all_styles.css" rel="stylesheet" type="text/css">
  22. </head>
  23.  
  24. <body>
  25. <div id="m_and_o">
  26.     <h1><?PHP echo $page_data['page_title']; ?></h1>
  27.     <p><?PHP echo $page_data['content']; ?></p>
  28. </div>
  29. </body>
  30. </html>


Как можно это всё соединить что бы не создавать два индексных файла?
Объединить как-то вместе, что бы при клике на ссылку все ссылки скрывались и показывалось только полные данные контента. Как-то так!?
 
 Top
Viper
Отправлено: 27 Апреля, 2016 - 22:33:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




DonQuijote пишет:
Как можно это всё соединить что бы не создавать два индексных файла?
я бы не советовал так делать. В вашем случае есть правило: "работает? не трожь!".


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB