Господа, я недавно стал заниматься PHP, ранее я работал на Delphi.
. Я сделал прогу работающая с SQL сервером, склад. Политика нашей компании упал на Linux. Естественно под вайном можно много чего проделать но получается криво. Я принял решение что нужно переучиваться, купил кучу книг и давай....
И так ближе к делу, так как режим будет много пользовательский, нужно будет вести на каждого пользователя учет. Мой выбор упал на глобальную переменную SESSION.
Моя затея такова.
у меня есть первая стартовая страница html, в которой при помощи form произвожу коннект к базе данных. Login, password,host,bases. Передаю эти параметры методом $_POST, другому файлу check.php, его главная задача определить произошел ли коннект с базой! Если результат верен то создается сессия в которой создается $_SESSION['connect'] и $_SESSION['base'] , для дальнейшей работы. вот листинг check.php
?php
include "./conf/addition.php";
SQL_connect($_POST['host'], $_POST['login'], $_POST['passwd'],$_POST['base']);
if (isset($_SESSION['connect']))
{
header ("Location:./menu.php");
}
?>
А вот листинг собственно /conf/addition.php это один из главных файлов, его главная задача, коннект, формирование и обработка 3х команд SELECT, INSERT, UPDATE при коннекте команда в самом низу.
<?php
# сборка команды SELECT - показать
function select_sborka ($tables,$colum,$where,$group,$order){
return select_string($colum).from_string($tables).where_sborka($where).group_string($group).order_string($order);
}
# сборка команды INSERT - вставка
function insert_sborka ($into_tables,$colum,$insert_values){
return insert_string ($into_tables).table_string($colum).values_string($insert_values);
}
# сборка команды UPDATE - обновление
function update_sborka ($table,$set_value,$where_value){
return update_string ($table).set_string($set_value).where_sborka($where_value);
}
# Функция преобразования массива в строку через запятую
function array_string ($array,$col){
$s=""; $i=0;
if ($col<>null)
{
while ($i<count($array[$col-1])-1)
{
$s=$s.$array[$col-1][$i].",";
$i++;
}
$s=$s.$array[$col-1][$i];
}
ELSE
{
while ($i<count($array)-1)
{
$s=$s.$array[$i].",";
$i++;
}
$s=$s.$array[$i];
}
return $s;
}
#функция обработки Select
function select_string ($array){
$s=array_string($array,null);
if (strlen($s)>0){
return 'SELECT '.$s;
}
}
#функция обработки From
function from_string ($array){
$s=array_string($array,null);
if (strlen($s)>0){
return ' FROM '.$s;
}
}
#функция обработки GROUP BY
function group_string ($array){
$s=array_string($array,null);
if (strlen($s)>0){
return ' GROUP BY '.$s;
}
}
#функция обработки ORDER BY
function order_string ($array){
$s=array_string($array,null);
if (strlen($s)>0){
return ' ORDER BY '.$s;
}
}
# для сборки функции INSERT
#функция обработки INSERT таблици
function insert_string ($array){
$s=array_string ($array,null);
if (strlen($s)>0)
{
return 'INSERT INTO '.$s;
}
}
#для функции INSERT поле
function table_string($array){
$s=array_string($array,null);
if (strlen($s)>0)
{
return '('.$s.')';
}
}
#для функции INSERT VALUES
function values_string($array){
$i=0;$s='';
while (count($array)<>$i)
{
$so=array_string($array,$i+1);
if (strlen($s)>0)
{
$s=$s.',('.$so.')';
}else $s='('.$so.')';
$i++;
}
if (strlen($s)>0){return ' VALUES '.$s;}
}
# для сбоки функции UPDATE
# функция для сборки UPDATE - таблиц
function update_string ($array){
$s=array_string ($array,null);
if (strlen($s)>0)
{
return 'UPDATE '.$s;
}
}
# массив двумерный разбиваем
function string_to_set ($array){
$i=0;$str="";
while (count($array)<>$i)
{
$str=$str.$array[$i][0]."=".$array[$i][1];
if (((count($array)>0))AND(count($array)-1<>$i) )
{$str=$str.",";}
$i++;
}
return $str;
}
# Фуенкция обработки массива под SET
function set_string ($array){
$s=string_to_set ($array);
if (strlen($s)>0) {return ' SET '.$s;}
}
# Сборка SET для сборки
/*
function set_sborka ($array)
{$str=set_string ($array);
if (strlen($str)>0)
{$str=' SET '.$str;}
return $str;
}
*/
# Функция перевода WHERE
function where_string ($array){
$i=0;$str='';
while (count($array)<>$i)
{
if (($array[$i][1]<>'')AND($array[$i][1]<>'""')AND($array[$i][1]<>'"%"')AND($array[$i][1]<>'()'))
{
if ((strlen($str)>0))
{
$str=$str.$array[$n][2].'('.$array[$i][0].$array[$i][1].')';
}else $str=$str.'('.$array[$i][0].$array[$i][1].')';
$n=$i;
}
$i++;
}
return $str;
}
# Сборка WHERE для сборки
function where_sborka ($array){
$str=where_string ($array);
if (strlen($str)>0)
{$str=' WHERE '.$str;}
return $str;
}
///*******************************************************************************
//////////// Запрос на добавление
# Разпрос на срвер
function chek ($str){
#session_start();
return mysql_query($str,$_SESSION['connect']) ;
}
//*********************************************************
# функция SELECT
function SQL_select ($tables,$colum,$where,$group,$order){
return chek(select_sborka ($tables,$colum,$where,$group,$order));
}
#функция INSERT
function SQL_insert ($into_tables,$colum,$insert_values){
return chek(insert_sborka ($into_tables,$colum,$insert_values));
}
#функция UPDATE
function SQL_update ($table,$set_value,$where_value){
return chek(update_sborka ($table,$set_value,$where_value));
}
//*************************************************************************************************
// ***************************** Сборка запроса для вывода текс в объекты ***************************
// ****** combobox - select
function cb_out ($name,$size,$tables,$colum,$where,$group,$order){
$result='';# полный результат
$swap='';# временный результат
$grid=SQL_select ($tables,$colum,$where,$group,$order);
//<option value="">Font size</option>
$result ='<select name="'.$name.'" size="'.$size.'"> <option value=""></option> ';
while ($read = mysql_fetch_array ($qrid)){
$swap='';
$swap = '<option value="'.$colum [0].'"> ';
$i=1;
while ($i<count($read[$col-1])){
$swap=$swap.$read[i].'" "';
}
$swap=$swap.'</option>';
$result=$swap;
}
return $result;
}
//**************************************************************************************************
//**************************************************************************************************
#Функция коннекта
function SQL_connect($host,$login,$passwd,$bases)
{
///////////// Производим коннект
// создаем сессию
if ($connect = mysql_connect ($host, $login, $passwd))
# коннект удался
{ session_start();
$_SESSION['connect']=$connect;
$_SESSION['base']=$bases;
mysql_select_db ($_SESSION['base'], $_SESSION['connect']);
}
# Ошибка коннекта
else
{
#echo 'Ошибка подключения'.mysql_error();
session_destroy ();
}
return $connect;
}
?>
все проходит замечательно, но одно но. Когда в файле ckeck.php, происходит переход на страницу
test/menu.php там при помощи frame он разбин на 2-е части. при нажатии на ссылку должно произвестись действие запроса SELECT, при его формировании в вункцию function chek ($str) находящийся в файле addition.php apahe выдает ошибку
Notice: Undefined variable: _SESSION in z:\home\localhost\www\tools\test\conf\addition.php on line 193
я перебрал много вариантов и всеравно появляются ошибки. Либо Session запускается дважды либо не понимает _SESSION .
У меня две версии как можно избавиться от ошибки, это либо разбить addition.php на 2-а а то и три фрагмента и работать.
И не совсем понимаю принцип работы include! во всех примерах в инете никто не использует include при объявдлении сессии, так как авторизация у большенства , при сравнении логина происходит тут же в файле не через функции.
Любые натации по моему коду приму! Сам знаю что код не идеален