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

Форум PHP

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

 

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

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

тема: Куда девается переменная сессии?
 
 автор: Worldmen   (26.03.2007 в 00:54)   письмо автору
 
 

Есть три файла. В первом (seltov.php) выбираеться тип товара (id), и по нажатию кнопки передаеться в form.php - в которой япроверяю переменную id и если она не пуста, присваиваю ее $_SESSION['fk_vid'] и дальше загружаю файл addtovar.php - это форма для добавления товара.
Для себя вывожу переменную $_SESSION['fk_vid']. Она показывает число.
В addtovar.php набираю данные и нажимаю Добавить (данные обрабатываються в этой же форме), но выводится ошибка
Notice: Undefined index: fk_vid in z:\....\addtovar.php on line 80
На этой строке у меня :

<?   ...
79    $add_tovarmysql_query(" insert into model (fk_vid, name, proper, id_firm, href, pr, bighref)
80    VALUES ("
.$_SESSION['fk_vid'].",'".$_SESSION['name']."','".$_SESSION['proper']."',".$_SESSION['id_firm'].",'"
81    .$_SESSION['href']."',".$_SESSION['pr'].",'".$_SESSION['bighref']."')");
?>

Получаеться куда-то деваеться переменная $_SESSION['fk_vid'] или я не понял.

   
 
 автор: cheops   (26.03.2007 в 02:23)   письмо автору
 
   для: Worldmen   (26.03.2007 в 00:54)
 

Функция session_start() во всех трёх файлах присутствует?

   
 
 автор: mihdan   (26.03.2007 в 15:13)   письмо автору
 
   для: Worldmen   (26.03.2007 в 00:54)
 

Есть ли у вас вообще session_start() если есть то она должна быть первой строкой

   
 
 автор: Worldmen   (26.03.2007 в 17:39)   письмо автору
 
   для: mihdan   (26.03.2007 в 15:13)
 

В php.ini я исправил строку :
; Инициализировать ли сессии при старте.
session.auto_start = 1
. И поэтому переменные сесии автоматом создаються.
я не помню точно зачем, возможно у меня раньше были ошибки , когда я вызывал session_start() . Нужно исправить назад?

   
 
 автор: mihdan   (26.03.2007 в 17:54)   письмо автору
 
   для: Worldmen   (26.03.2007 в 17:39)
 

А где эти переменные пишутся в сессию?Код?

   
 
 автор: worldmen   (26.03.2007 в 22:38)   письмо автору
8.2 Кб
 
   для: mihdan   (26.03.2007 в 17:54)
 

Прикрепил все файлы. Я использовал фреймы. Краткое описание :
1. Выбираю вид товара в файле seltovap.php :

function SelectTov(tovar)
{    
document.formTovar.id_vid.value = tovar.options[tovar.selectedIndex].value; // document.formTovar.s2.options[document.formTovar.s2.selectedIndex].value;
document.formTovar.str.value = document.formKat.s1.options[document.formKat.s1.selectedIndex].text+"/"+
        tovar.options[tovar.selectedIndex].text;
}
...
<div id="tovar">
<form name="formTovar" method=post action="ifform.php">
  вид товара:
    <select name="s2" size=10 style="width:200px; height:150px" onChange="SelectTov(this)"> <!--   SelectVidTov(this)-->
       <? 
    $query 
"";  
    if(!empty(
$_POST['s1'])) 
        {     
//echo "<option selected> Не пустой ".$_POST['s1'];
            
$query mysql_query(" SELECT id,fk_prod,name FROM vid_prod where fk_prod=".$_POST['s1']);
            if (
$query)
            {
                while(
$q mysql_fetch_array($query))
                {
                    echo
"<option value=".$q['id'].">".$q['name'];
                }
            }
        }
    
?>
    </select>        
<input type="hidden" name="str" value=""> <!-- будет передаваться строку вида продукции  -->
<input type="hidden" name="id_vid" value="">  <!-- будет передаваться ID Категории товара -->
<input type=submit name="b_Tovar" onClick="Clic()" value="Выбрать"> 
 </form>
 </div>

Данные передаються в ifform.php и обрабатываються. (ifform.php - хотел сделать типа обработчика событий). Если все в порядке передаеться в addtovar.php.
ifform.php : (вот здесь переменные пишутся в сессию)

<?
    
if (!empty($_POST['b_Tovar']))         // нажатие кнопки выбора "Вид товара" в seltov.php
    
{    
        if(!empty(
$_POST['id_vid']))     // Определяет, существует ли переменная для запроса Insert
        
{    $_SESSION['fk_vid']=$_POST['id_vid'];    
            
$_SESSION['stroka']=$_POST['str'];    // информационная строка - куда будет добавляться товар.
            
include "addtovar.php";
        }
        else
        {    echo 
" <a href='#' onclick='history.back();'> Вернуться к тексту.</a>";        } // выводим сообщение овозврате на стр. назад.
        
    
}
    else
    {    echo 
" <a href='#' onclick='history.back();'> Вернуться к тексту.</a>";            }
?>

А это файл addtovar.php (его форма):

<form name="add_tov" method="post" action="addtovar.php">
  3.<br>
  <br> 
  <table width="550"  style="height:10px;" border="0" CELLPADDING="4" CELLSPACING="1" bgColor="#EEEEEE">
    <tr>
      <td width="200">Наименование товара</td>   <td width="350"><input  size="50" type="text" name="NameTovar"></td>
    </tr>
    <tr>  <td>Описание </td>  <td><textarea name="opisanie" cols="50" rows="10"></textarea></td>   </tr>
    <tr>  <td>Цена</td>  <td><input size="15" type="text" name="price"> грн.</td>   </tr>
    <tr>  <td>Фирма производитель </td>     <td>   
         <select name='firm' onChange='SelectFirma(this)'>
         <?
            $Proizv 
mysql_query(" select id,name from proizvod order by id");
            if (
$Proizv)
            {
                echo 
"<option value='0'>  </option>";
                while(
$Proizv_ mysql_fetch_array($Proizv))
                {
                    echo 
"<option value='".$Proizv_['id']."'> ".$Proizv_['name']." </option>";
                }
            }
         
?>
         </select>    </td>     </tr>
    <tr>  <td>Картинка</td>    <td><input size="35" name="image1" type="file" id="image"/></td>    </tr>
    <tr>  <td>Дополнительная картинка </td>  <td><input size="35" name="image2" type="file" id="image"/></td>   </tr>
    <tr>  <td>
              <input type="hidden" name="id_firm" value="">   <!-- в этой переменной будет передаваться ID фирмы производителя --> 
              <input type="hidden" name="id_katg" value="<? $_POST['id_vid'?>">        
                  
            </td>
          <td><input type="submit" name="b_AddTov" value="Добавить" /></td>     </tr>
  </table>
</form>

   
 
 автор: mihdan   (27.03.2007 в 10:54)   письмо автору
 
   для: worldmen   (26.03.2007 в 22:38)
 

Что-то попробовал я твои скрипты - ужас, не работают. Поставил превой строкой в каждом файле
ob_start();
session_start(); вроде заработало, правда с ошибкой!

   
 
 автор: Worldmen   (27.03.2007 в 11:37)   письмо автору
 
   для: mihdan   (27.03.2007 в 10:54)
 

А что это за функция - ob_start() ?
Это мое первое творение. Хотелось поподробнее узнать что ужасно, или как вообще это построить по другому.

   
 
 автор: cheops   (27.03.2007 в 14:08)   письмо автору
 
   для: Worldmen   (27.03.2007 в 11:37)
 

Это функция из группы функций управления выводом http://www.softtime.ru/group/id_group=12.

   
Rambler's Top100
вверх

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