Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> код на php
k.shevchenko94  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 42604
На форуме: 1 год, 4 месяца, 25 дней
Карма:




Здравствуйте, уважаемые пользователи форума. У меня проблемы с кодом программы. Кто может помогите пожалуйста. В моем классе есть метод returnId() - он должен прибавлять на единицу число и возвращать его. А ниже этот метод должен вернуть число на единицу и установить как значение атрибута id. Он устанавливает, но не увеличивает число. В чем ошибка ? Помогите. Пожалуйста.
Вот код.
<?php
class
UsersXML{
protected $_dom;
function __construct(){
if(!file_exists("users.xml")){
$this->_dom = new DomDocument("1.0","utf-8");
$this->_dom->formatOutput = true;
$this->_dom->preserveWhiteSpace = false;
$this->users = $this->_dom->createElement("users");
$this->_dom->appendChild($this->users);
$this->_dom->save("users.xml");
}else{
$this->_dom = new DomDocument("1.0","utf-8");
$this->_dom->formatOutput = true;
$this->_dom->preserveWhiteSpace = false;
$this->_dom->load("users.xml");
}
}

function __destruct(){
unset($this->_dom);
}
protected function returnId(){
static $id;
$id++;
return $id;
}
public function setItem($name,$email,$titleWork,$typeWork,$comment,$file){
$this->roof = $this->_dom->documentElement;
$user = $this->_dom->createElement('user');
$this->roof->appendChild($user);
$email = $this->_dom->createElement("email","$email");
$user->appendChild($email);
$user->setAttribute("id",$this->returnId());
$titleWork = $this->_dom->createElement("titlework","$titleWork");
$user->appendChild($titleWork);
$typeWork = $this->_dom->createElement("typework","$typeWork");
$user->appendChild($typeWork);
if($name){
$name = $this->_dom->createElement("name","$name");
$user->appendChild($name);
}else{
$name = $this->_dom->createElement("name","Нет имени");
$user->appendChild($name);}
if($comment){
$comment = $this->_dom->createElement("comment","$comment");
$user->appendChild($comment);
}else{
$comment = $this->_dom->createElement("comment","Нет комментария");
$user->appendChild($comment); }
if($file){
$file = $this->_dom->createElement("file","$file");
$user->appendChild($file);
$this->loadFile($file);
}else{
$file = $this->_dom->createElement("file","Нет файла");
$user->appendChild($file);}
$this->_dom->save("users.xml");
}
public function getItem(){
$this->users = $this->_dom->documentElement;
$this->user = $this->users->childNodes;
$this->userArray = array();
$this->userArrayItems = array();
foreach($this->user as $this->u){
if($this->u->nodeType == 1){
foreach($this->u->childNodes as $this->item){
if($this->item->nodeType == 1){
$this->userArrayItems[$this->item->tagName] = $this->item->nodeValue;
}
}

$this->userArray[] = $this->userArrayItems;
}
}

return $this->userArray;
}
public function deleteItem(){

}

protected function loadFile($file){
if($_FILES["file"]["error"] == 0){
$tmp_file = $_FILES["file"]["tmp_name"];
$file = $_FILES["file"]["name"];
move_uploaded_file($tmp_file,$file);
}

}

protected function clearData(){

}
}

?>
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
k.shevchenko94  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 42604
На форуме: 1 год, 4 месяца, 25 дней
Карма:




Здравствуйте. А что вы мне там исправили. Что я не так там написал ?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1613
Пользователь №: 28976
На форуме: 5 лет, 11 месяцев, 29 дней
Карма: 102




может "global $id" вместо "static $id" ?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
k.shevchenko94  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 42604
На форуме: 1 год, 4 месяца, 25 дней
Карма:




нет, global не помогает.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kaww  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1788
Пользователь №: 20757
На форуме: 7 лет, 5 месяцев, 25 дней
Карма: 187




Цитата (Kusss @ 3.03.2016 - 06:09)
может "global $id"

Не советуй плохого. Там и static не ясно зачем, получается, что нумерация должна быть сквозной для всех инстансов UsersXML
k.shevchenko94
Запустил такой код:
$xml = new UsersXML();
$xml->setItem('test1', 'test1', 'test1', 'test1', 'test1', 'test1');
$xml->setItem('test2', 'test2', 'test2', 'test2', 'test2', 'test2');
$xml->setItem('test3', 'test3', 'test3', 'test3', 'test3', 'test3');

Получил такой результат:
<?xml version="1.0" encoding="utf-8"?>
<users>
<user
id="1">
<email>
test1</email>
<titlework>
test1</titlework>
<typework>
test1</typework>
<name>
test1</name>
<comment>
test1</comment>
<file>
test1</file>
</user>
<user
id="2">
<email>
test2</email>
<titlework>
test2</titlework>
<typework>
test2</typework>
<name>
test2</name>
<comment>
test2</comment>
<file>
test2</file>
</user>
<user
id="3">
<email>
test3</email>
<titlework>
test3</titlework>
<typework>
test3</typework>
<name>
test3</name>
<comment>
test3</comment>
<file>
test3</file>
</user>
</users>

Вроде, все хорошо
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
k.shevchenko94  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 42604
На форуме: 1 год, 4 месяца, 25 дней
Карма:




kaww так что надо сделать в коде ?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kaww  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1788
Пользователь №: 20757
На форуме: 7 лет, 5 месяцев, 25 дней
Карма: 187




Цитата (k.shevchenko94 @ 3.03.2016 - 07:56)
Так что надо сделать в коде ?

Результат должен быть таким? Тогда ничего не делать, код рабочий.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1613
Пользователь №: 28976
На форуме: 5 лет, 11 месяцев, 29 дней
Карма: 102




Я не знал что это создание документа, и было не понятно откуда взялась переменная $id. Потому и предложил global;
но вот так должно работать
class UsersXML{
protected $_dom;
var $id = 0;
.....

protected function returnId(){
$this->id++;
return $this->id;
}

PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1613
Пользователь №: 28976
На форуме: 5 лет, 11 месяцев, 29 дней
Карма: 102




а можно вообще избавиться от этой функции и написать вот так
$user->setAttribute("id",$this->id++);
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
k.shevchenko94  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 42604
На форуме: 1 год, 4 месяца, 25 дней
Карма:




Ничего то что вы предложили, не работает. Какие еще предложения ?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kaww  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1788
Пользователь №: 20757
На форуме: 7 лет, 5 месяцев, 25 дней
Карма: 187




Цитата (k.shevchenko94 @ 3.03.2016 - 08:53)
Какие еще предложения ?

Еще раз повторю, что код, который приведен в первом посте, рабочий. Ищи проблему где-то в другом месте.
З.Ы. ID будет начинаться с 1 при КАЖДОМ запуске скрипта. Если проблема в этом, то нужно сначала почить из файла users.xml максимально значение id, затем его инрементить для каждого нового item
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
k.shevchenko94  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 42604
На форуме: 1 год, 4 месяца, 25 дней
Карма:




все, спасибо тебе огромное.
я так и догадывался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
k.shevchenko94  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 42604
На форуме: 1 год, 4 месяца, 25 дней
Карма:




kaww. пожалуйста, можете подсказать как это делается ?
я не могу понять.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1613
Пользователь №: 28976
На форуме: 5 лет, 11 месяцев, 29 дней
Карма: 102




записываете куда нибудь последний номер (файл или бд), и считываете его при запуске скрипта.
1) Запись: добавляете метод записи последнего номера .
1а) добавляете вызов метода в __destruct
2) Считывание: добавляете метод который будет считывать последний номер.
2а) добавляете вызов метода в __construct
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
k.shevchenko94  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 42604
На форуме: 1 год, 4 месяца, 25 дней
Карма:




Kusss, можете мне написать код ?
пожалуйста
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса