Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Про include вопрос, а ответа не нашел.
 
 автор: NickCo   (20.04.2006 в 13:15)   письмо автору
 
 

Знаю, что про Include написано много, опрсмотрел все темы, но не нашел ответа, нешто никто не встретился со следующей проблемой. Когда в часть кода вставленную с пмощью этой функции, передаются переменные???

<?php
//Получяем переменные.
$$_POST['1'];
$
$_POST['2'];
$
$_POST['3'];
$
"Привет!";
// Подгружаем файл,
// содержащий переменную
// $form
include('script.php');
  if ($
0)
  {
    $
"Пока!";
    echo 
$form
  }
  else
  {
    
//Операторы.
  
}
?>

Вот пример кода script.php

<?php
$form 
"Привет - $4";
?>

Вопрос, почему в результате получается строка "Привет - Привет!", хотя условие $1 > 0 Выполняется?

   
 
 автор: Shorr Kan   (20.04.2006 в 13:19)   письмо автору
 
   для: NickCo   (20.04.2006 в 13:15)
 

Сделав


<?php
//Получяем переменные.
$$_POST['1'];
$
$_POST['2'];
$
$_POST['3'];
$
"Привет!";
// Подгружаем файл,
// содержащий переменную
// $form
include('script.php');
  if ($
0)
  {
    $
"Пока!";
    echo 
$form;
  }
  else
  {
    
//Операторы.
  
}
?> 


Вы, фактически, сделали:

<?php
//Получяем переменные.
$$_POST['1'];
$
$_POST['2'];
$
$_POST['3'];
$
"Привет!";

$form "Привет - $4";  // ТЕПЕРЬ $form - это "Привет - Привет!"
  
if ($0)
  {
    $
"Пока!";
    echo 
$form;
  }
  else
  {
    
//Операторы.
  
}
?> 

   
 
 автор: NickCo   (20.04.2006 в 13:24)   письмо автору
 
   для: Shorr Kan   (20.04.2006 в 13:19)
 

Это я и сам понял, почему при дальнейшем вызове переменной $form , после измениения $4 значение этой переменной в $form не меняется??? как обойти такую ситуацию? Повторный вызов inciude не помогает.

   
 
 автор: Loki   (20.04.2006 в 13:24)   письмо автору
 
   для: NickCo   (20.04.2006 в 13:15)
 

Да при таком коде у вас вообще результаты любые могут быть. Переменные не могут начинаться с цифр.

   
 
 автор: NickCo   (20.04.2006 в 13:29)   письмо автору
 
   для: Loki   (20.04.2006 в 13:24)
 

Прошу прошения, просто писать реальные переменные долго, и смысла нет. Переформулировав вопрос: Почему, если вызвать include до определения переменных, то использование их в загруженом файле не возможно?

   
 
 автор: NickCo   (20.04.2006 в 14:36)   письмо автору
 
   для: Loki   (20.04.2006 в 13:24)
 

Так, что , никто не поможет?

   
 
 автор: Саня   (20.04.2006 в 14:45)   письмо автору
 
   для: NickCo   (20.04.2006 в 14:36)
 

Потому, что include() добавляет "код в код":
<?php
// этот скрипт будет включаться в другой
// script.php
echo $var;
?>

<?php
// а это самый главный скрипт
include("script.php");

$var "текст";
?>

Это то же самое, как:
<?php
// а это самый главный скрипт

// этот скрипт будет включаться в другой
// script.php
echo $var;

$var "текст";
?>

Выведется ошибка.

   
 
 автор: NickCo   (20.04.2006 в 15:35)   письмо автору
 
   для: Саня   (20.04.2006 в 14:45)
 

Не спорю, но я то делаю так,

>
&lt;?php
>// а это самый главный скрипт
>$var = "текст";
>
>include("script.php");
>?>

>Это то же самое, как:
>
&lt;?php
>// а это самый главный скрипт
>
>// этот скрипт будет включаться в другой
>// script.php
>$var = "текст";
>
>echo $var;
>?>

   
 
 автор: XPraptor   (20.04.2006 в 14:48)   письмо автору
 
   для: NickCo   (20.04.2006 в 14:36)
 

Конечно не возможно. Ты сам прочитай что написал: сначала грузится код инклюда выполняется, а потом после выполнения ты определяешь переменные, которые типа должны быть в инклюднутом файле.
Если у тебя register_global в on, то в инклюднутом файле эти переменные создадутся сами и на выходе будут иметь обработанное значение, но после нового их определения, ты снова присвоишь им другие значения.

   
 
 автор: NickCo   (20.04.2006 в 15:41)   письмо автору
 
   для: XPraptor   (20.04.2006 в 14:48)
 

Так вот с этим -то и непонятки. Вставив текст скрипта с помощью инклуда, я потом вызываю переменную, которая в свою очередь использует другую переменную, которая уже изменилась, но эти изменения не учлись,почему? Разве это не то же самое что просто написать:

<?php 
//Получяем переменные. 
$$_POST['1']; 
$
$_POST['2']; 
$
$_POST['3']; 
$
"Привет!"

$form "Привет - $4";  
  if ($
0
  { 
    $
"Пока!"
    echo 
$form
  } 
  else 
  { 
    
//Операторы. 
  
}

   
 
 автор: JIEXA   (20.04.2006 в 16:49)   письмо автору
 
   для: NickCo   (20.04.2006 в 15:41)
 

1. Имя переменной должно начинатся либо с буквы анг. алфавита либо с знака _.
2. Перед выводом переменной её нужно объявить, а не наоборот.
Роботоспобный код будет выглядеть так:

<?php 
//Получяем переменные. 
$a $_POST['1']; 
$b $_POST['2']; 
$c $_POST['3']; 
$d "Привет!"

if (
$a 0

    
$d "Пока!"
    echo 
"Привет - $d";

else 
  { 
    
//Операторы. 
  
}
?>

   
 
 автор: NickCo   (20.04.2006 в 17:12)   письмо автору
 
   для: JIEXA   (20.04.2006 в 16:49)
 

Спасибо, понял, но, почему тогда повтоорный инклуд не помогает?

   
 
 автор: Shorr Kan   (20.04.2006 в 17:19)   письмо автору
 
   для: NickCo   (20.04.2006 в 15:41)
 

Вы же сперва присваиваете $form значение с переменной $4 ... а только потом $4 приравниваете к чему-то другому.

   
 
 автор: NickCo   (20.04.2006 в 17:29)   письмо автору
 
   для: Shorr Kan   (20.04.2006 в 17:19)
 

Скажите, а если мы в коде пишим переменную, например $heiio = "Привет всем читающим, и конкретно Вам $name". Предположим $name определено, то, при вызове $heiio все будет ОК. А как поступить, если в ходе выполнения скрипта $name поменялась, и необходимо вывести $heiio с этим новым значением???

   
 
 автор: Shorr Kan   (20.04.2006 в 22:46)   письмо автору
 
   для: NickCo   (20.04.2006 в 17:29)
 

Сработает:

 <?
 $name
="Вася";
 
$heiio="Привет всем читающим, и конкретно Вам $name";
 print 
$heiio;
 
$name="другой Вася";
 
$heiio="Привет всем читающим, и конкретно Вам $name";
 print 
$heiio;
?>


Не сработает:

 <?
 $name
="Вася";
 
$heiio="Привет всем читающим, и конкретно Вам $name";
 print 
$heiio;
 
$name="другой Вася";
 print 
$heiio;
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования