Добавление и обновление в БД не всегда происходит

Тема в разделе "PHP", создана пользователем BuzzDD, 25 мар 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. BuzzDD

    BuzzDD Постоялец

    Регистр.:
    9 фев 2009
    Сообщения:
    76
    Симпатии:
    5
    Ребят, сделал админку,в ней есть добавление,редактирование и удаление статей,но добавление и редактирование не всегда работает.
    Например редактирование:
    Есть маленькая или большая статья,я туда вставляю:
    HTML:
    <td align="left">
    Очень часто хочется знать, что происходит на сайте за время Вашего отсутствия. Конечно, можно периодически проверять форум, гостевую и т.д. на предмет новых сообщений, но есть способ лучше! Почему бы не присылать самому себе сообщение 
    на почтовый ящик, когда на сайте происходит то или иное событие? Как пример могу предложить такие варианты: регистрация в рассылке, ввод сообщения в форум, гостевую и т.д., ошибка открытия файла, организация обратной
     связи, опрос мнения читателей о 
    размещенной статье и т.д и т.п. Способов применить эту возможность РНР — масса, осталось разобраться, как это работает</td>
    </tr>
    <tr>
    <td align="left">
    Как всегда &mdash; просто! Синтаксис таков:<br />
    Mail ( $email, "Введено сообщение", $str, "From: сообщение ");&nbsp;<br />
    Конечно, перед этим соответствующие переменные должны быть введены либо вручную, либо с помощью формы (нужно следить за 
    соответствием имен переменных в форме и в скрипте). При выполнении данной команды интерпретатор РНР пошлет письмо с текстом из переменной $str по адресу, указанному в переменной $email. Все остальное &mdash; служебная информация, которая может быть в некоторых случаях опущена за ненадобностью. 
    Для примера рассмотрим систему контроля за посетителями определенных страниц сайта. Такая возможность может понадобиться для анализа посещений определенных статей, страниц и т.д. Нам потребуется информация о посетителе,
     которая в РНР автоматически доступна через переменные окружения. Эту информацию мы будем отсылать себе на почтовый ящик. Только не переусердствуйте &mdash; каждое посещение такой страницы вызовет отправку письма, и ящик может оказаться переполненным.</p>
    <pre>&lt;?php
    if (isset ($HTTP_X_FORWARDED_FOR)) 
    { 
    $host = gethostbyaddr($HTTP_X_FORWARDED_FOR); 
    }else{ 
    $host = gethostbyaddr($REMOTE_ADDR); } 
    
    $ip=getenv('REMOTE_ADDR');
    $date=date('d M Y, H:i:s');
    $host1=gethostbyaddr("$ip");
    
    $str=("
    Дата &mdash; $date
    Хост &mdash; $host
    IP-адрес &mdash; $ip
    ---------------------");
    mail( $email, "статистика", $str, "From:информация");
    ?&gt;</pre>
    <p>Если Вы разместите на одной из Ваших страниц этот код РНР, информация о посетителе (это дата входа, хост и IP-адрес) будет в Вашем почтовом ящике. Еще можно прислать себе сообщение при возникновении ошибки (например, открытия файла) на сайте:</p>
    <pre>$filename = "data.txt"; 
    $fp = @fopen($filename,"r"); 
    if ( !$fp ) { @mail( $email, "Ошибка!", "Ошибка открытия файла $filename !"); }</pre>
    <p>Как обычно, можно поставить знак @, и если возникнет ошибка при отправке почты, сообщение об этом не будет выведено на экран. А можно просто проверить, ушло письмо или нет: if ( @mail( $email, "Тест", $str) ) { &hellip; что 
    сделать если письмо ушло &hellip; } else { &hellip; что делать, если произошла ошибка отправки (не доступен ящик, сайт и т.д) }. Собственно говоря, есть возможность забирать почту с любого аккаунта, но это требует расширения РНР за счет
     подключения дополнительных модулей, и в стандартной поставке недоступно. Если в переменной $email указать несколько адресов, 
    разделенных пробелами, информация будет разослана по всем указанным адресам. Это открывает простой путь к организации 
    собственной, ни от кого не зависящей системы почтовых рассылок.</p>
    
    Это просто к примеру, но пишет,что урок не обновлен.Так и при добавлении иногда отказывается добавлять.
    Вот кусок кода:
    PHP:
    $result mysql_query ("UPDATE PHP SET title='$title', d='$d', k='$k', date='$date', desc='$desс', text='$text', author='$author' WHERE id='$id'");

    if (
    $result == 'true') {echo "<p>Ваш урок успешно обновлен!</p>";
    $s $_SERVER['HTTP_REFERER'];
    echo
    "<html><head><meta http-equiv='Refresh' content='1; URL=$s'></head></html>";
    }
    else {echo 
    "<p>Ваш урок не обновлен!</p>";}
    }
    Чёт мне кажется,что это происходит из-за HTML|PHP кода или сервер прикалываться начал) Проверка на существование переменных есть!
    Ещё говорили,что лучше сделать так:
    PHP:
    if ($result == true)
    Убрать кавычки, но ничего не помогает.Закинул сайт на хостинг,а там:
    1)Вместо букв знаки вопросов,но это фигня
    2) Вообще ничего не добавляется,даже права выставлял 777 на все файлы.
    Можете что посоветовать?
     
  2. NoN

    NoN Постоялец

    Регистр.:
    25 ноя 2008
    Сообщения:
    79
    Симпатии:
    33
    сделай.
    $text=addslashes($text);
    Какой у тебя типа поля в таблице у поля 'text' ? должен быть TEXT
     
    BuzzDD нравится это.
  3. BuzzDD

    BuzzDD Постоялец

    Регистр.:
    9 фев 2009
    Сообщения:
    76
    Симпатии:
    5
    Всё верно,так и стоит TEXT. Ну а с $text=addslashes($text); как прийду,попробую)
     
  4. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
    А еще как вариант:
    PHP:
    if (isset($result))
     
  5. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Если вы данные добавляете из формы то посмотрите что из нее передает пост...и обработайте их перед занесением в БД mysql_real_escape_string()
     
  6. BuzzDD

    BuzzDD Постоялец

    Регистр.:
    9 фев 2009
    Сообщения:
    76
    Симпатии:
    5
    Всем спасибо)

    Проблема решена, нужно было поставить $text=addslashes($text); перед добавлением в БД,с редактированием пока не пробовал(ща нет времени).
    Осталось исправить кодировку и найти дет magic_quotes_gpc,но .htaccess нету на сервере О_о.
     
  7. HappyAlex

    HappyAlex Прохожие

    как так нету ?! .htaccess нету на сервере -- у всех он есть возможно Ваш ftp его не видит его...
    Осталось исправить кодировку - можно через mb_convert чего-то там
     
Статус темы:
Закрыта.