ФорумПрограммированиеPHP для идиотов → Нужна помощь с гостевой

Нужна помощь с гостевой

  • FjuZ

    Сообщения: 64 Репутация: N Группа: Кто попало

    Spritz 8 февраля 2010 г. 8:59

    Кароче, учусь ПХП. Пишу гостевую. Вроде всё нормально, так сцуко глючит.
    Вообщем должно выводит формочку для отправки и если есть сообщения, то и их. В таком виде:
    Дата:
    Имя:
    Сообщение:

    В итоге-эта красота у меня красуется всё время. Т.е. пустые пункты. Даже когда есть сообщения, под низом пустые пункты. Вот исходники:
    guestbook.php
    <html>
    <head>
    <title>Гостевая книга</title>
    </head>

    <body>

    <FORM action="add_message.php" method="POST">
    Имя:<BR>
    <input type="text" name="name_of_guest">
    <BR>
    Мысли:<BR>
    <textarea name="message_of_guest" cols=40 rows=5></textarea>
    <BR>
    <input type="submit" name="okbutton" value="OK">

    <?php
    $f=fopen("gost.txt","rt") or die("Не могу открыть файл");
    while (!feof($f))
    {
    //Получаем строку "——–"
    $hide_line=fgets($f);
    //Получаем IP адрес
    $ip=fgets($f);
    //Получаем дату
    $data=fgets($f);
    //Выводим дату
    echo "<br><small>Дата:</small>".$data."<br>";
    //Получаем имя
    $data=fgets($f);
    //Выводим имя
    echo "<small>Имя:</<small> $data<BR>";
    //Читаем текст
    $data=fgets($f);
    //Выводим текст
    echo "<small>Сообщение:</small> $data<br>";
    //Отделяем линией
    echo "<HR>";
    }
    //Закрываем файл
    fclose($f);
    ?>

    add_message.php:
    <?php
    if(isset($_POST['okbutton']))
    {
    if($_POST['name_of_guest']=='')
    exit("Введите имя! <a href='index.php'>Назад</a>");
    if($_POST['message_of_guest']==''){
    echo "Введите сообщение! <a href='index.php'>Назад</a>";
    exit;
    }

    //Получаем значение поля имя
    $name_of_guest=htmlspecialchars($_POST['name_of_guest']);
    $message_of_guest=htmlspecialchars($_POST['message_of_guest']);

    if(filesize("gost.txt")>0)
    $first_message=TRUE;
    else
    $first_message=FALSE;
    //Открываем файл
    $f=fopen("gost.txt", "at") or die("Не могу открыть файл");

    //LOCK
    flock($f,2);

    //Записываем строку "——-"
    if($first_message=TRUE)
    fputs($f,"——-\n");
    else
    fputs($f,"\n——-\n");
    //Записываем ип
    fputs($f,$_SERVER['REMOTE_ADDR']."\n");
    //data
    fputs($f,date('d.m.y.')."\n");
    //naem
    fputs($f,$name_of_guest."\n");
    //text
    fputs($f,$message_of_guest."\n");

    flock($f,3);
    fclose($f);
    }

    //red
    header('location:index.php');
    ?>

  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 8 февраля 2010 г. 9:28, спустя 28 минут 31 секунду

    Я вот принципиально читать не буду. Локализуй проблему - посмотрю.
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 8 февраля 2010 г. 9:32, спустя 4 минуты 11 секунд

    После того как с файлами поработал. перепиши всё это дело используя БД и будет тебе счастье.
    from TRIAL with LOVE
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 8 февраля 2010 г. 10:44, спустя 1 час 11 минут 43 секунды

    FjuZ, и что вам надо конкретно? Чтобы пункты не показывались? Какие, где?
    Нормально объясните, а не в духе размышлений…
    adw/0
  • FjuZ

    Сообщения: 64 Репутация: N Группа: Кто попало

    Spritz 8 февраля 2010 г. 11:03, спустя 19 минут 6 секунд


    Вот нужно, чтоб этих пустых пунктов не было.
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 8 февраля 2010 г. 11:05, спустя 2 минуты 14 секунд

    $data=fgets($f);
    //Выводим имя
    if (!empty($data))
    echo "<small>Имя:</<small> $data<BR>";
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 8 февраля 2010 г. 11:30, спустя 25 минут 2 секунды

    FjuZ, не пихай переменные в строку. То есть, старайся делать так:
    echo "<br><small>Дата:</small>".$data."<br>"; - правильно
    echo "<small>Сообщение:</small> $data<br>"; - неправильно (работать будет, но выглядит неинформативно + не стоит привыкать).
    Ну или на крайний случай хотя бы систематизируй в один вид, а не как попало.

    п.с. И вообще писанина гостевой книги - онанизм для импотента.
    Лучше органайзер сделай с функцией оповещения по почте (с отработкой по крону) - и полезно и научибельно.
  • FjuZ

    Сообщения: 64 Репутация: N Группа: Кто попало

    Spritz 10 февраля 2010 г. 11:25, спустя 1 день 23 часа 55 минут

    Frozzeg, Спасибо, работает!
    Givi, И вам спасибо, учту!
  • FjuZ

    Сообщения: 64 Репутация: N Группа: Кто попало

    Spritz 11 февраля 2010 г. 6:04, спустя 18 часов 38 минут 46 секунд

    Появилась ещё одна проблема.
    <?php
    if(isset($_POST['del']))
    {
    $lines=file("..\gost.txt");

    $f=fopen("..\gost.txt", "r+t") or die("NO");

    flock($f,2);
    ftruncate($f,0);

    //Выведенные сообщения
    $a=0;
    //Элемент массива
    $s=0;

    while(!(count($lines)==$s))
    {
    if(!($a==$_POST['num']));
    {
    fputs($f, $lines[$s]);
    $s++;
    fputs($f, $lines[$s]);
    $s++;
    fputs($f, $lines[$s]);
    $s++;
    fputs($f, $lines[$s]);
    $s++;
    fputs($f, $lines[$s]);
    $s++;
    }
    else
    {
    $s=$s+5
    }
    $a++
    }
    flock($f,3);
    fclose($f);
    }
    header("location:message.php")
    ?>

    Выдает ошибку Parse error: syntax error, unexpected T_ELSE
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 11 февраля 2010 г. 6:07, спустя 3 минуты 17 секунд

    if(!($a==$_POST['num']));
    {
    }
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 11 февраля 2010 г. 6:24, спустя 16 минут 47 секунд

    Ненавижу ";"
    adw/0
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 11 февраля 2010 г. 6:27, спустя 2 минуты 38 секунд

    Выдает ошибку Parse error: syntax error, unexpected T_ELSE

    жепь.
    как же меня заебали посты в этом духе…
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 11 февраля 2010 г. 6:28, спустя 1 минуту 9 секунд

    NRG, терпи казак, атаманом станешь)
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 11 февраля 2010 г. 6:54, спустя 25 минут 44 секунды

    А меня нервирует код типа flock($f,2), неужели так сложно написать flock($f, LOCK_EX)?
    Work, buy, consume, die
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 11 февраля 2010 г. 6:57, спустя 3 минуты 1 секунду


    А меня нервирует код типа flock($f,2), неужели так сложно написать flock($f, LOCK_EX)?

    тогда это уже будет не быдлокод, а это противоречит правилам ресурсов на которых это ебаное гавно находится
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!