
16.01.2010, 18:02
|
|
Постоянный
Регистрация: 01.04.2009
Сообщений: 508
С нами:
9006192
Репутация:
194
|
|
Сообщение от imajo.ati
PHP код:
<?php
file_put_contents('./ip.log', @$_SERVER['REMOTE_ADDR'] . "\r\n", FILE_APPEND);
спасибо, испробую)
|
|
|

16.01.2010, 18:00
|
|
Участник форума
Регистрация: 18.08.2008
Сообщений: 159
С нами:
9332069
Репутация:
92
|
|
Здравствуй, ачат!
Не могу найти что вызывает Notice в скрипте.
PHP код:
<html>
<body>
<?php
error_reporting(E_ALL);
$regexp = "/([a-zA-Z]+)/s";
if (preg_match($regexp, "abc1",$pockets))
echo "yes<br>";
else
echo "no<br>";
for ($i=1;$i<=count($pockets);++$i)
echo "{$pockets[$i]}";
?>
</body>
</html>
Само сообщение здесь
yes
abc
Notice: Undefined offset: 2 in F:\php tests\tiny.php on line 13
Спасибо за помощь!
|
|
|

16.01.2010, 18:05
|
|
Участник форума
Регистрация: 21.02.2008
Сообщений: 255
С нами:
9589849
Репутация:
177
|
|
Сообщение от 4p3
Не могу найти что вызывает Notice в скрипте.
count($pockets) возвращает количество элементов а не последний индекс, отсюда и ошибка. надо на единицу меньше брать чем длина списка
|
|
|

16.01.2010, 18:24
|
|
Участник форума
Регистрация: 18.08.2008
Сообщений: 159
С нами:
9332069
Репутация:
92
|
|
Сообщение от imajo.ati
count($pockets) возвращает количество элементов а не последний индекс, отсюда и ошибка. надо на единицу меньше брать чем длина списка
Спасибо за ответ.
Как можно исправить, чтобы не было Notice?
Желательно без foreach. Так как нулевой элемент не нужен.
|
|
|

16.01.2010, 18:33
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
С нами:
9410786
Репутация:
2731
|
|
Сообщение от 4p3
Спасибо за ответ.
Как можно исправить, чтобы не было Notice?
Желательно без foreach. Так как нулевой элемент не нужен.
-1, тебе же сказали...
|
|
|

17.01.2010, 13:19
|
|
Постоянный
Регистрация: 07.03.2008
Сообщений: 479
С нами:
9567480
Репутация:
61
|
|
Есть класс работы с БД (ниже кинул начало класса)
Но вот не могу понять почему при вызове его примерно так
PHP код:
$db1 = new db(....vars.....);
$db2 = new db(....vars.....);
А потом начинаю делать запрос вида
PHP код:
$db1->query(...запос....);
$db2->query(...запос....);
ТО скрипт работает с 1 БД которая вызвана пойзже =(
Как сделать чтоб класс работал нормально с несколькими БД
PHP код:
class db {
var $sql_host;
var $sql_user;
var $sql_pass;
var $sql_base;
var $sql_charset = "utf8";
var $sql_count = 0;
var $sql_error = true;
var $link_id = 0;
function __construct($host,$user,$pass,$base,$code,$sql_error) {
$this->sql_host=$host;
$this->sql_user=$user;
$this->sql_pass=$pass;
$this->sql_base=$base;
$this->sql_charset=$code;
$this->error=$error;
$this->connect();
}
function connect() {
$this->link_id=@mysql_connect($this->sql_host,$this->sql_user,$this->sql_pass);
if(!$this->link_id) $this->error("False link == Error to connect the database");
$selecting_base=@mysql_select_db($this->sql_base,$this->link_id);
if(!$selecting_base) $this->error("Flase base == Error to select the database");
$coder_query=@mysql_query("SET NAMES '$this->sql_charset'");
if(!$coder_query) $this->error("Error set $this->sql_charset");
}
function query($query_string) {
$selecting_query=@mysql_query($query_string,$this->link_id);
$this->sql_count ++;
if(!$selecting_query) $this->error("False query == $query_string");
return $selecting_query;
}
.......
|
|
|

17.01.2010, 13:27
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
С нами:
9223466
Репутация:
3171
|
|
Сообщение от Byrger
Есть класс работы с БД (ниже кинул начало класса)
Но вот не могу понять почему при вызове его примерно так
PHP код:
$db1 = new db(....vars.....);
$db2 = new db(....vars.....);
А потом начинаю делать запрос вида
PHP код:
$db1->query(...запос....);
$db2->query(...запос....);
ТО скрипт работает с 1 БД которая вызвана пойзже =(
Как сделать чтоб класс работал нормально с несколькими БД
PHP код:
class db {
var $sql_host;
var $sql_user;
var $sql_pass;
var $sql_base;
var $sql_charset = "utf8";
var $sql_count = 0;
var $sql_error = true;
var $link_id = 0;
function __construct($host,$user,$pass,$base,$code,$sql_error) {
$this->sql_host=$host;
$this->sql_user=$user;
$this->sql_pass=$pass;
$this->sql_base=$base;
$this->sql_charset=$code;
$this->error=$error;
$this->connect();
}
function connect() {
$this->link_id=@mysql_connect($this->sql_host,$this->sql_user,$this->sql_pass);
if(!$this->link_id) $this->error("False link == Error to connect the database");
$selecting_base=@mysql_select_db($this->sql_base,$this->link_id);
if(!$selecting_base) $this->error("Flase base == Error to select the database");
$coder_query=@mysql_query("SET NAMES '$this->sql_charset'");
if(!$coder_query) $this->error("Error set $this->sql_charset");
}
function query($query_string) {
$selecting_query=@mysql_query($query_string,$this->link_id);
$this->sql_count ++;
if(!$selecting_query) $this->error("False query == $query_string");
return $selecting_query;
}
.......
Как вариант,в классе сделать $connect[n];
Тобиш,при вызове класса, ресурс с $c = mysql_connect();,тоесть $c, зписывалось в $connect[] = $c;
А далее,делать работу таким образом:
PHP код:
functon query($query,$conn_id=0){
if(isset($this->connect[$conn_id]) & $this->connect[$conn_id]){ blablabla;
}
}
Примерно так.
|
|
|

17.01.2010, 13:41
|
|
Постоянный
Регистрация: 07.03.2008
Сообщений: 479
С нами:
9567480
Репутация:
61
|
|
Сообщение от m0Hze
Как вариант,в классе сделать $connect[n];
Тобиш,при вызове класса, ресурс с $c = mysql_connect();,тоесть $c, зписывалось в $connect[] = $c;
А далее,делать работу таким образом:
PHP код:
functon query($query,$conn_id=0){
if(isset($this->connect[$conn_id]) & $this->connect[$conn_id]){ blablabla;
}
}
Примерно так.
Есть же $this->link_id 
|
|
|

17.01.2010, 14:01
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
С нами:
9223466
Репутация:
3171
|
|
Сообщение от Byrger
Есть же $this->link_id 
Ну так ты массив создавай.И не нужно несколько переменных.Просто как пример:
PHP код:
$mysql = new mysql(wrong data);
$mysql->connect(data2);
Когда инициализируем класс,мы пишем коннект не в link_id, А в link_id [].И когда мы делаем коонект 2 раз,мы просто прописываем в массив выше индексов,еще один идент. коннекта. далее можем юзать так:
PHP код:
$mysql->query("SELECT * FROM base1",0); // Вот тут будет использоватья первый коннект.
$mysql->query("SELECT * FROM base2",1); // Вот тут будет использоватья второй коннект.
|
|
|

17.01.2010, 14:27
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
С нами:
9497186
Репутация:
1304
|
|
m0Hze Вы опять вместо работы с классами - выдумываете костыли, чтобы вернуться к процедурному программированию....
Byrger По какой-то причине - пхп закрывает первое соединение с БД. В функции query - сделайте проверку переменной соединения. Посмотрите какие ID имеют соединения.
PHP код:
if (!($this->link_id && is_resource($this->link_id))) {var_dump($this->link_id); return 0; }
Класс, кстати, кривой - в конструкте в качестве аргумента передается sql_error, а в функции - он нигде не используется. Плюс нет значений по умолчанию
Обновление 13-40: Как всегда в мануале все написано. Про mysql_connect:
If a second call is made to mysql_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned. The new_link parameter modifies this behavior and makes mysql_connect() always open a new link, even if mysql_connect() was called before with the same parameters.
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm
Последний раз редактировалось Gifts; 17.01.2010 в 14:41..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|