Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
1

Не видит переменную

22.11.2016, 18:10. Показов 4797. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет, суть такова, имею файл предположим такого содержания:
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
include ($_SERVER['DOCUMENT_ROOT'].'/include/header.php');
 
switch($_GET["a"]){
  case "a1":
  a1($link); break;
  case "b1":
  b1($link); break;
  default:
  startpage($link);
}
 
function startpage($link){
  //тут код, если переходим без GET параметра
  $r = // переменная, у которой не видно содержания
}
 
function a1($link){
  //тут код другой
  $r = // переменная, у которой не видно содержания
}
 
function b1($link){
  //тут код еще какой то
  $r = // переменная, у которой не видно содержания
}
В header.php подключение к бд, стиль и код, который создает переменную (запрос к бд на основании куков). Вот эта переменная не видна в функциях.

Как сделать её (переменную) видимой в функциях?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.11.2016, 18:10
Ответы с готовыми решениями:

функция не видит переменную
Функция не видит переменную! Что нужно сделать чтобы функция видела переменную? $lang = ")))";...

Не видит переменную из цикла
Всем привет, такая проблема - не видит переменную в цикле. $rezPin = mysql_query("ЗАПРОС...

Php не видит переменную если использую метод _POST
Всем привет! Пишу код типа такого: if(!empty($_POST)) { $a = ggg; } if(!empty($_POST))...

Как вставить переменную java скрипт в php переменную
Здравия, форумчане! Извиняюсь за некорректность заголовка... Подскажите новичку, есть ли...

15
Заблокирован
22.11.2016, 18:22 2
dukesov, ну логично,- переменная не объявлена поэтому нет содержания, а если она объявлена в инклуде то нужен код инклуда.
и выполнить дебаг:
print $_SERVER['DOCUMENT_ROOT'].'/include/header.php' ;
1
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
22.11.2016, 18:54  [ТС] 3
abrdabr, сделал global $r; не видит все равно.
0
Заблокирован
22.11.2016, 18:59 4
dukesov, давай код /include/header.php и результаты вставки в главный файл кода print $_SERVER['DOCUMENT_ROOT'].'/include/header.php' ;
из меня плохой экстрасенс
0
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
22.11.2016, 19:01 5
Цитата Сообщение от dukesov Посмотреть сообщение
сделал global $r
не привыкайте. почему не передать переменную в функцию?
и покажите, что у вас в header.php
0
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
22.11.2016, 19:05  [ТС] 6
abrdabr,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php ob_start();?>
<!DOCTYPE html>
<?php include ($_SERVER['DOCUMENT_ROOT'].'/include/db_.php');
 
$id = (int)$_COOKIE['I'];
$query = mysqli_query($BDlink, "SELECT * FROM `users` WHERE `id`='$id'");
$r = mysqli_fetch_array($query);
 
global $r;?>
 
<html lang="ru">
  <head>
    <link rel="stylesheet" type="text/css" href="/style.css"/>
К примеру в функции нужно прописать значение $r['rig']; но он вообще не видит $r;
0
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
22.11.2016, 19:12 7
я уже писал
PHP
1
startpage($link,$r);
1
Заблокирован
22.11.2016, 19:12 8
dukesov, вы кое-что попутали. Если вы включаете файл, не содержащий объявлений ф-ций, то global перед объявлением переменной в этом файле писать не нужно. global имеет смысл писать только внутри ф-ций.
1
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
22.11.2016, 19:13 9
Лучший ответ Сообщение было отмечено dukesov как решение

Решение

PHP
1
a1($link,$r)
1
Заблокирован
22.11.2016, 19:16 10
dukesov, "?>
<!DOCTYPE html>
<?php" плохой тон
и мб mysql тупо возвращает null вставь print "--".$r."--";
1
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
22.11.2016, 19:17  [ТС] 11
fanatikus, спасибо! Глобал убрал и прописал
0
Заблокирован
22.11.2016, 19:19 12
Насчет использования глобальных переменных fanatikus в принципе прав, но все же допустимо использовать глобальные переменные, если они имеют действительно глобальный характер. Например можно сделать глобальной $BDlink – эта переменная кстати в коде документации и во многих др. исходниках называется просто $link.
1
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
22.11.2016, 20:34  [ТС] 13
Цитата Сообщение от abrdabr Посмотреть сообщение
плохой тон
а в чём плохой?
0
Заблокирован
22.11.2016, 20:39 14
Лучший ответ Сообщение было отмечено dukesov как решение

Решение

С базой принято работать до начала вывод в браузер. Чтобы избежать задержек прямо при отображении страницы, чтобы нормально оформить сообщение об ошибке, включая посылку соотв. служебных заголовков и т.д.
1
Заблокирован
22.11.2016, 20:41 15
dukesov, ну на сколько мне не изменяет склероз разрыв кода самый медленный, print быстрее echo если нет переменных в выводе
1
Заблокирован
22.11.2016, 20:54 16
...Хотя, вижу, вы в буфер пишете. Тогда тем более зачем перемешивать выполнение запросов с выводом разметки?

Добавлено через 12 минут
PHP
1
2
3
?>
<!DOCTYPE html>
<?php
Напомнило это: Не отсылаются заголовки
1
22.11.2016, 20:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2016, 20:54
Помогаю со студенческими работами здесь

Как вставить в переменную текст и переменную вместе?
Вопрос для бывалых программистов наверное простой, но не где пока не нашел ответа. Подскажите...

Как сохранить в переменную другую переменную + текст?
Нужно сохранить в одной переменной несколько переменных + текст, что бы потом все это дело вывести...

Не видит переменную
#include &lt;iostream&gt; using namespace std; int main() { int chislo; cin &gt;&gt; chislo; for (int...

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


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

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