Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> опрос без db. Работа с *.txt файлом вместо db, Возникает масса вопросов. Помогите. 
:(
    Опции темы
ZorGG
Дата 27.3.2010, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.3.2010
Где: Мир сей.

Репутация: нет
Всего: нет



Собрался писать скрипт опроса на php так как не один из найденных вариантов не подходит и тут начался мрак...

В php я дерево smile поэтому прошу вас объяснять что делает строка(кусок кода).

первая моя проблема с переносом данных из текстового файла в массив.

Код скрипта:
Выделить всёкод PHP
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
<?php
$mas array();
  $f fopen("info.txt","rt") or die ("Error");
  
  $mas $f;
  
   $mas[] 'да';
   $mas[] 'нет';
  
  print($mas.'&nbsp;');
  
  print(work);  
  ?>


Содержание info.txt

Выделить всёкод PHP
1:
2:
3:
1
0
1


y - это количество людей ответивших "да"
n - это количество людей ответивших "нет"
v - это количество проголосовавших

Если вам не трудно проверьте синтаксис скрипта и укажите на ошибки(желательно с исправленным вариантом. А вдруг запомню  smile )
PM MAIL ICQ   Вверх
bars80080
Дата 27.3.2010, 22:17 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



скрипт переноса текстового файла в массив

Выделить всёкод PHP
1:
$mas file("info.txt");

PM MAIL WWW   Вверх
ZorGG
Дата 27.3.2010, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.3.2010
Где: Мир сей.

Репутация: нет
Всего: нет



хмм ... почему-то не работает. Точнее работает но не так как хотелось-бы.

Выделить всёкод PHP
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
<?php
$mas array();
 $f fopen("info.txt","rt") or die ("Error");
  
    $mas file("info.txt");
  
  $mas[] 'да';
  $mas[] 'нет';
  
  print($mas);
  ?>



выдаёт "Array". Почему?
На сколько я понимаю в крайнем случае конструкция должна выдать лишь первую строку а она мне выдаёт слово "массив"...
PM MAIL ICQ   Вверх
BobiKK
Дата 27.3.2010, 23:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 655
Регистрация: 1.12.2005
Где: Essen, Deutschlan d

Репутация: 4
Всего: 16



Всё правильно выдает print. Для вывода содержимого всего массива существуют функции print_r(), var_dump();
Выделить всёкод PHP
1:
2:
3:
4:
5:
6:
<?php
$mas array();
$mas file("info.txt");
  
print_r($mas);
  ?>


Поизучайте, что выведется на экран, какова структура $mas. И тогда уже соотвественно добавляйте/удалайте/изменяйте нужные поля
PM MAIL   Вверх
ZorGG
Дата 28.3.2010, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.3.2010
Где: Мир сей.

Репутация: нет
Всего: нет



Цитата

Всё правильно выдает print. Для вывода содержимого всего массива существуют функции print_r(), var_dump();


ага, понятно.. будет чем заняться  smile 

а какая разница между ними? Если есть можно ссылкуи на литературу какую-нить только на доступном уровне и на русском.

Хмм... теперь ещё один вопрос. А как такие системы реагируют на корректировку и русский язык? К примеру мне нужно что-бы вся эта система выглядела для пользователя к примеру так:

Цитата

результаты голосования:
"да"(3)
"Нет"(1)

Всего(4)...


Это сообщение отредактировал(а) ZorGG - 28.3.2010, 16:12
PM MAIL ICQ   Вверх
bars80080
Дата 28.3.2010, 16:22 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(ZorGG @  28.3.2010,  14:17 Найти цитируемый пост)
Если есть можно ссылкуи на литературу какую-нить только на доступном уровне и на русском.

http://www.php.ru/manual/function.<имя функции>.html

к примеру http://www.php.ru/manual/function.file.html
http://www.php.ru/manual/function.print-r.html


Цитата(ZorGG @  28.3.2010,  14:17 Найти цитируемый пост)
А как такие системы реагируют на корректировку 

что есть корректировка?


Цитата(ZorGG @  28.3.2010,  14:17 Найти цитируемый пост)
и русский язык?

системе абсолютно пофигу на русский язык, так как она и английского не понимает. она всего лишь оперирует символами с определёнными кодовыми комбинациями


Цитата(ZorGG @  28.3.2010,  14:17 Найти цитируемый пост)
К примеру мне нужно что-бы вся эта система выглядела для пользователя к примеру так:

а что не получилось, чтобы выглядело вот так?
PM MAIL WWW   Вверх
ZorGG
Дата 28.3.2010, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.3.2010
Где: Мир сей.

Репутация: нет
Всего: нет



Цитата

что есть корректировка?


ну если я к примеру запихну в конструкцию HTML теги.

Цитата

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


Пока не пробовал. Сейчас как раз попробую =)
PM MAIL ICQ   Вверх
ZorGG
Дата 28.3.2010, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.3.2010
Где: Мир сей.

Репутация: нет
Всего: нет



Цитата

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


Почти. В общем я спёр скрипт из этой темы. Спасибо автору скрипт работает(надеюсь уважаемый Leoo не сочтёт за плагиат). Но естественно нету понимания процесса ...

теперь скрипт выглядит так:

Выделить всёкод PHP
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
<?php
$mas array();
 $f fopen("info.txt","rt") or die ("Error");
  
  while (!feof($f))         // while это цикл а вот запись !feof($f) это что?
                                   //По логике цикла тут должна лежать команда разрешающая выполнять скрипт
                                   //пока не будет достигнуто условие. Правильно?
  {
    $s fgets($f255); // не понимаю что делает эта строка
    echo $s."<br>";
  }
?>


На сколько я понимаю с чтением файла мы разобрались, спасибо большое Всем кто помогал.

Теперь нужно перезаписывать файл...

Вопрос: Как можно сделать своего рода буфер? На сколько я понимаю для начала нужно расчленить переменную $s на массив... эээмм... проблема smile 

Это сообщение отредактировал(а) ZorGG - 28.3.2010, 20:41
PM MAIL ICQ   Вверх
ksnk
Дата 28.3.2010, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Рекомендую открыть для себя php.net. В частности вот по этой ссылке можно посмотреть содержательные примеры использования функций fgetsfile и многих других.
Когда-нибудь надо будет уже и учится читать документацию  smile 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
BobiKK
Дата 28.3.2010, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 655
Регистрация: 1.12.2005
Где: Essen, Deutschlan d

Репутация: 4
Всего: 16



ZorGG, действительно, почитайте что-нибудь. Не помешает. Конечно, это доставляет, когда что-то делаешь и что-то работает, но перед этим надо потрудиться.

Создаешь файл с данным для опросника db.inc:
Выделить всёкод PHP
1:
2:
0
0

Первая строка - количество проголосовавших за, вторая - против. Ничего другого не надо.

Сам скрипт голосовалки:
Выделить всёкод PHP
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
<?php
// читаем "базу данных" в массив. массив вида: $data[0] - за, $data[1] - против
$data file("db.inc", FILE_IGNORE_NEW_LINES);
// проверяем, действительно ли числа в $data[0] и $data[1]. Мало ли что, может вы туда крокозябру добавили
if (is_numeric($data[0]) && is_numeric($data[1])) {
    // если число - увеличиваем на 1. То бишь, голосуем за. чтобы проголосовать против, надо увеличить $data[1]
    $data[0$data[0] + 1;
else {
    // всё-таки крокозябра вышла
    exit("Ошибка. Паника. Беда. Ужас какой-то");
}
// записываем всё обратно. implode() - делает из массива строку, элементы массива при это разделяются знаком перевода строки (\n или \r\n)
file_put_contents("db.inc"implode(PHP_EOL, $data));
?>


Открываем потом db.inc и радуемся. Посчитать сколько всего проголосовало, надеюсь, догадаетесь как

Это сообщение отредактировал(а) BobiKK - 28.3.2010, 23:20
PM MAIL   Вверх
ZorGG
Дата 28.3.2010, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.3.2010
Где: Мир сей.

Репутация: нет
Всего: нет



Цитата

Когда-нибудь надо будет уже и учится читать документацию

Которую я не запоминаю :(...

Цитата

ZorGG, действительно, почитайте что-нибудь. Не помешает. Конечно, это доставляет, когда что-то делаешь и что-то работает, но перед этим надо потрудиться.


не спорю. Вы правы  smile

Спасибо.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

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


 




[ Время генерации скрипта: 0.0898 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.