[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запись данных из формы в файл base.txt
1arque
Не хочу никого беспокоить, но обращаюсь к тем, кого не затруднит помочь мне с решением такой задачки:

1. Есть Форма index.htm:
HTML
<form method="POST" action="add.php">
<input type="text" name="keyword" size="20"><input type="text" name="url" size="20"><input type="submit" value="Отправить" name="B1">
</form>

2. Есть файл base.txt, в который записываются keyword и url из формы в таком виде:

keyword 1 | website1.com
keyword 2 | website2.com

3. Есть файл add.php, который записывает keyword и url из формы index.htm в base.txt. Важно: если значение keyword = "keyword 1", а "keyword 1" уже имеется в base.txt, то его новый url прописывается поверх старого.

Кому не трудно, подскажите, пожалуйста, как должен выглядеть такой PHP-код. Это очень актуально для меня. Буду вам крайне признателен!



Спустя 24 минуты, 48 секунд (22.02.2009 - 15:20) Семён написал(а):

Спустя 28 минут, 43 секунды (22.02.2009 - 15:49) 1arque написал(а):
Благодарю за мануал, Семён. К моему стыду, ничего сложнее Hello World я на php не писал, поэтому провожусь с мануалом, наверно, около месяца (тем не менее, я читаю мануал, но пока сам ещё не созрел для кода такого уровня. ). Я обратился на форум за помощью знающих. unsure.gif Если не затруднит, пожалуйста, помогите решить задачку.

Спустя 4 часа, 51 минута, 13 секунд (22.02.2009 - 20:40) kirik написал(а):
1arque, думаю что как-то так

PHP
<?php
$flag 
= false;
$file = 'base.txt';

if(!empty(
$_POST['keyword']) && !empty($_POST['url']))
{
    $_POST['keyword'] = strtolower($_POST['keyword']);

    if(file_exists($file))
    {
        $array = file($file);
        for($i = 0, $c = count($array); $i < $c; $i++)
        {
            $tmp = array_map('trim', explode('|', $array[$i]));
            if($tmp[0] == $_POST['keyword'])
            {
                $lines[] = $tmp[0].'|'.$_POST['url'];
                $flag = true;
            }
            else
            
{
                $lines[] = $tmp[0].'|'.$tmp[1];
            }
        }
        unset($array, $tmp);

        if(!$flag)
            $lines[] = $_POST['keyword'].'|'.$_POST['url'];

        file_put_contents($file, implode("\n", $lines), LOCK_EX);
    }
    else
    
{
        file_put_contents($file, $_POST['keyword'].'|'.$_POST['url']);
    }
}


А вообще сначала нужно продумывать добавление, а потом выведение, а не наоборот. Потому что можно было сделать в несколько раз проще.

Спустя 14 часов, 45 секунд (23.02.2009 - 10:41) 1arque написал(а):
Уважаемый kirik! Я вдвойне признателен Вам за помощь, которая поистине неоценима. Вы уже не первый раз помогли мне, дав совершенно исчерпывающий ответ, что очень большая редкость. Сожалею, что о выведении я подумал уже после добавления, не хотел усложнять задачку. Есть ещё один вопрос: как расширить Ваш код так, чтобы по завершении обработки скрипт направлял на страницу "success.htm" (с сообщением "Ваши данные успешно добавлены")? Возможно, что-то вроде
PHP
header('Location: success.htm');
, только оформить это в рабочий код - пока выше моих способностей unsure.gif .

Спустя 40 минут (23.02.2009 - 11:21) Семён написал(а):
После file_put_contents($file,...... добавь себе ту строчку что ты написал

Спустя 17 минут, 11 секунд (23.02.2009 - 11:38) 1arque написал(а):
Сделал! Ура, работает! Спасибо, Семён! Спасибо, kirik! Phpforum.ru - это сообщество самых лучших php-программистов!

Спустя 1 год, 1 месяц, 24 дня, 3 часа, 7 минут, 58 секунд (17.04.2010 - 13:46) xand написал(а):
Подскажите пожалуйста, как сделать так, чтобы файл не сохранялся на сервере, а просто был доступен для скачивания пользователем?
Например заполнил форму, нажал на кнопку и появилось окно для скачанивая файла

Спустя 21 минута, 22 секунды (17.04.2010 - 14:07) twin написал(а):
Просто окошко так:
header('Content-Disposition: attachment; filename="dummy.fig"');

Спустя 1 час, 48 минут, 35 секунд (17.04.2010 - 15:56) Guest написал(а):
спасибо! Всё получилось! smile.gif
немного не так использовал header...


_____________
qweeq.com
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.