Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2011, 10:54   #1
ilushka2306
Пользователь
 
Регистрация: 19.06.2010
Сообщений: 48
По умолчанию не хотят дружиться textarea и БД

пишет что поле текстареа пустое...
PHP код:
<title></title>
    <?php
    
if ($_POST)
    {
        
$id $_POST['id'];
        
$head $_POST['head'];
        
$text =  $_POST['text'];
        
$link $_POST['link'];
        
$date $_POST['date'];
                
        
$error false;
        
$errortext '<p>Подожди!</p><ul>';
        
        if (empty(
$head))
        {
            
$error true;
            
$errortext .='<li>А заголовок?</li>';
        }
        
        if (empty(
$text));
        {
            
$error true;
            
$errortext .='<li>А где текст-то?</li>';
        }
        
        
//$errortext .='</ul>';
        
        
if ($error)
        {
            echo (
$errortext);
        }
        else
        {
            
$dblocation "localhost";
$dbname "site";
$dbuser "root";
$dbpass "";

$dbconnect mysql_connect ($ldbocation$dbuser$dbpass);
mysql_select_db ($dbname,$dbconnect);

if (!
$dbconnect)
{
    echo (
"Ошибка! Не возможно подключиться к БД!");
    exit();
}
else {
    if (!@
mysql_select_db($db$dbcon))
    {
        echo(
"<p>Выбранной базы данных не существует!</p>");
    }
}
                    
        
$sql mysql_query("INSERT INTO 'news' VALUES(id, '$head', '$text', '$link', '$date');");
            
        if (
$sql)
        {
            echo(
'<p>Новость добавлена.</p>');
        }
        
mysql_close($dbconnect);
        }
    }
if ((
$_POST && $error) || !$_POST)
{
    
?>
    <center>
        <h2>Добавление новости в БД</h2>
        <form action="" method="post">
        <input type="hidden" name="id">
        Заголовок:
        <input type="text" name="head" width="400px" maxlength="200"><br>
        Текст:<br>
        <textarea name="text" rows="10" cols="70"></textarea><br>
        Ссылка:<br>
        <input type="text" name="link" maxlength="50"><br> 
        <input type="submit" name="add" value="Добавить">
        <input type="button" name="cancel" value="Отмена">
        </form>
<?php
}
?>
ilushka2306 вне форума Ответить с цитированием
Старый 05.05.2011, 11:17   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

А если добавить туда id="text" еще?
motorway вне форума Ответить с цитированием
Старый 05.05.2011, 11:20   #3
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Поле date где?
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 05.05.2011, 11:27   #4
ilushka2306
Пользователь
 
Регистрация: 19.06.2010
Сообщений: 48
По умолчанию

нет его пока...
и даже с ним не работает, не видит текста в textarea
ilushka2306 вне форума Ответить с цитированием
Старый 05.05.2011, 12:08   #5
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

А в вводимом в textarea тексте нет ли символов " ' ?
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 05.05.2011, 12:44   #6
graymaster
Форумчанин
 
Аватар для graymaster
 
Регистрация: 03.05.2011
Сообщений: 158
По умолчанию

Уберите ; в строчке

Код:
if (empty($text));
В смысле правильная часть кода:

Код:
if (empty($text)) {
	$error = true;
	$errortext .= '<li>А где текст-то?</li>';
}
Ваш... (дельфийский?) стиль форматирования не позволяет увидеть подобные ошибки.

И пара бесполезных советов:

И да, обязательно проверяйте на ' входящие данные. Всегда.

добавьте функцию типа

Код:
function mysql_fa($s) {
	return str_replace("'","\\'",$s);
}
и пользуйтесь на каждом встречном текстовом поле в запросе в БД, Численные значение стоит приводить intval()/floatval().

По крайней мере, можно не переживать по поводу MySQL injection.

И да, ко всем инпутам в форме стоит добавить кроме нэйм ищё и ай-ди. Когда-то где-то кто-то слышал, что какой-то браузер передаёт а пост значения по ай-ди, а не по нэйм. Но с тех пор это (дублирование нэйм в ай-ди в инпутах) считается хорошим тоном.

Последний раз редактировалось graymaster; 05.05.2011 в 12:58. Причина: Дополнение
graymaster вне форума Ответить с цитированием
Старый 05.05.2011, 14:20   #7
freeeeez
Пользователь
 
Регистрация: 20.12.2010
Сообщений: 55
По умолчанию

правильно так
Код:
$sql = mysql_query("INSERT INTO 'news' (id,head,text,link,date) VALUES('$id', '$head', '$text', '$link', '$date')");

Последний раз редактировалось freeeeez; 05.05.2011 в 14:25.
freeeeez вне форума Ответить с цитированием
Старый 05.05.2011, 18:40   #8
ilushka2306
Пользователь
 
Регистрация: 19.06.2010
Сообщений: 48
По умолчанию

всем спасибо за помощь!) текст в текстареа появился, но из запроса в БД ни чего не добавляется...(((
ilushka2306 вне форума Ответить с цитированием
Старый 05.05.2011, 19:06   #9
graymaster
Форумчанин
 
Аватар для graymaster
 
Регистрация: 03.05.2011
Сообщений: 158
По умолчанию

Дай точную строку запроса (с уже вбитыми значениями), просто результат
подмены
Код:
$sql = mysql_query("INSERT INTO 'news' VALUES(id, '$head', '$text', '$link', '$date');");
на
Код:
$q="INSERT INTO 'news' VALUES(id, '$head', '$text', '$link', '$date');"; 
var_dump($q);
$sql=mysql_query($q);
И SHOW CREATE TABLE news;
из MySQL
graymaster вне форума Ответить с цитированием
Старый 05.05.2011, 19:15   #10
8oOoRPM
Форумчанин
 
Регистрация: 12.11.2010
Сообщений: 146
По умолчанию

во первых фильтруйте данные, минимум strip_tags() и mysql_real_escape_string()- после, дабы избавится от всяких проблем итд. Для дебага используйте ...or die( mysql_error() )- сразу увидите на что ругаеця зверь
8oOoRPM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переменные не хотят переприсаиваться (Delphi) Vampire_2008 Помощь студентам 10 17.05.2010 17:10
ХАРДЫ ВМЕСТЕ НЕ ХОТЯТ РАБОТАТЬ ПРАВИЛЬНО... suncity Компьютерное железо 6 30.07.2009 13:05
Divы не хотят себя вести по фэн-шую naeki HTML и CSS 2 30.12.2008 12:28