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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2013, 13:18   #1
Masafi
Форумчанин
 
Регистрация: 12.03.2011
Сообщений: 113
По умолчанию Добавление информации в бд из форм

Вот мой набросок страницы, в которой должны из форм посылаться данные, которые были введены. Но почему то ничего никуда не посылается.
PHP код:
$dblocation "127.0.0.1";   
  
$dbname "students";   
  
$dbuser "Masafi";   
  
$dbpasswd "";   

  
$dbcnx mysql_connect($dblocation$dbuser$dbpasswd);   
  if (!
$dbcnx)   
  {   
    echo 
"<p>База данных не доступна. Вернитесь позже.</p>";   
    exit();   
  }   
  if (!
mysql_select_db($dbname,$dbcnx) )   
  {   
    echo 
"<p>Не хватает прав для дальнейшего просмотра страницы</p>";   
    exit();   
  }   
  
$ver mysql_query("SELECT VERSION()");   
  if(!
$ver)   
  {   
    echo 
"<p>Ошибка в запросе</p>";   
    exit();   
  }   
mysql_query("SET NAMES cp1251");
echo 
'
<form method="post" name="submit">
<input name="data" type="text" value="Дата" size="10">
<input name="title" type="text" value="Заголовок" size="30"><br>
<textarea name="text" cols="40" rows="10">Текст</textarea><br>
<input name="submit" type="button" onClick="add()" value="Отправить"><br>
</form>
'
;

$sql="SELECT * FROM news ORDER BY `id` DESC LIMIT 0, 5";
$result=mysql_query($sql) or die(mysql_error());
while(
$data=mysql_fetch_array($result))
{
  echo 
"<b>$data[1] </b>";
  
$data[2]=str_replace("\r\n","<br>",$data[2]);
  echo 
"$data[2]<br>";
  echo 
"$data[3]<br>";
}
function 
add()
{
    
$data $_POST['data'];
    
$title $_POST['title'];
    
$text $_POST['text'];

    
$query "INSERT INTO news (id, data, title, text) VALUES (null, $data$title$text)";
    
$res mysql_query($query);

Masafi вне форума Ответить с цитированием
Старый 13.01.2013, 13:46   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,156
По умолчанию

да потому что чушь полнейшая.... за последние дни создали 4-5 тем, в которых показываете, что не понимаете простейших вещей. Ну прочтите наконец любой учебник по php и html... поймите разницу в построении веб-приложений.... где серверная часть .. где клиентская итд....
что-то вам объяснять в рамках форума мне кажется вообще нереальным... пока вы хоть азы не будете знать.
Нормально так .... в коде указываете add() ... браузер понять может только как js функцию... короче мешанина одной глупости на другой у вас
ADSoft вне форума Ответить с цитированием
Старый 13.01.2013, 13:48   #3
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Не указан атрибут action для формы.
Нет кода, который бы запускал функцию добавления информации в БД.
Работа с формами
Поиск ошибок
Andkorol вне форума Ответить с цитированием
Старый 14.01.2013, 13:44   #4
Anubys
Форумчанин
 
Регистрация: 08.05.2010
Сообщений: 177
По умолчанию

$query = "INSERT INTO news (id, data, title, text) VALUES (null, $data, $title, $text)"; - Здесь ошибка. Было бы, еще круто если бы вы выложили sql скрипт своей таблицы (CREATE TABLE).
1. В таблице должно быть всегда какое-то поле уникальным. У вас что, "null"? Одну запись сервер разместит, но следующие сомневаюсь.
2. Подайте данные с одинарными кавычками и даю гарантию, что сценарий на вставку данных не исполнится.
3.
Код:
while($data=mysql_fetch_array($result)) 
{ 
  echo "<b>$data[1] </b>"; 
  $data[2]=str_replace("\r\n","<br>",$data[2]); 
  echo "$data[2]<br>"; 
  echo "$data[3]<br>"; 
}
При таком переборе результата каждый из строк таблицы попадает в виде ассоциативного массива. В вашем случае это будут: id, data, title, text. Вам нужно писать так для того чтобы хоть что-то вывелось:
Код:
while($data=mysql_fetch_array($result)) 
{ 
  echo "<b>$data['title'] </b>"; 
  $data['data']=str_replace("\r\n","<br>",$data['data']); 
  echo "$data['text']<br>";  
}
mysql_free_result($result);
Мой вам совет: почитайте что-то о базах данных, а потом уже приступайте к серверному программированию.
Вас здесь никто обидеть не хочет, но мы здесь помогаем бороться с проблемами, а не школа WEB программирования. Если сами не поймете, то вам никто этого не сможет объяснить. Скачать себе книгу "PHP 5 В подлинника" и читайте на здоровье.

Последний раз редактировалось Anubys; 14.01.2013 в 14:25.
Anubys вне форума Ответить с цитированием
Старый 14.01.2013, 15:04   #5
Stroy562
Пользователь
 
Регистрация: 14.01.2013
Сообщений: 49
По умолчанию

Код:
<?php 
if (isset($_POST['submit'])){ //Если была нажата кнопка ОТПРАВИТЬ

//Проверяем пришли-ли переменные и выводим их из глобального массива

if (isset($_POST['data'])){$data = $_POST['data'];}else{$data = "";};
if (isset($_POST['title'])){$title = $_POST['title'];}else{$title = "";};
if (isset($_POST['text'])){$text = $_POST['text'];}else{$text = "";};


//Подключаемся к базе (я не стал писать проверку подключения)

$q = mysql_connect ("localhost","admin","123456"); 
mysql_select_db("game",$q);
mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER_SET utf8'); 

//Заносим переменные в таблицу

$adds = mysql_query ("INSERT INTO news (data, title, text) VALUES ('$data' ,'$title', '$text')");
/*Если на поле id стоит автоинкремент его вообще указывать не обязательно*/



 };
/*При первом запуске страницы ни какие переменные не передаются а значит верхнее условие не выполняется и просто 
открывается описанная ниже форма. После  нажатия кнопки отправить  выполняется условие выше (присутствует переменная 

$_POST['submit']) производится подключение к базе и запись переменных*/	
?>

<form action="" method="post" name="submit">
<input name="data" type="text" value="Дата" size="10">
<input name="title" type="text" value="Заголовок" size="30"><br>
<textarea name="text" cols="40" rows="10">Текст</textarea><br>
<input name="submit" type="button"  value="Отправить"><br>
</form>
Примерно так. НО... Данный код работоспособен но не оптимизирован не проверяется подключение и не создана защита от
инъекции, как следствие использовать код в чистом виде не рекомендую.

Присоединяюсь к написанному выше ЧИТАЙТЕ книги!!!!
Stroy562 вне форума Ответить с цитированием
Старый 14.01.2013, 18:17   #6
alex4321
Пользователь
 
Регистрация: 23.07.2012
Сообщений: 77
По умолчанию

Во первых я не вижу вызова add();
Кроме того, как выше уже писали, null - не самое уникальное значение :-)
Далее - на будущее
  1. нет проверки спецсимволов в данных ("Вы действительно назвали сына ';DROP TABLE `students`;" :-) )
  2. Неплохо бы выделить код формы если не в отдельный шаблон, то хотя бы за основной код
alex4321 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Qt Creator и добавление/использование N форм в приложении на нем Mixim Qt и кроссплатформенное программирование С/С++ 7 01.08.2012 07:33
Тема: "Разработка методов и форм по работе с персоналом имеющим доступ к конфиденциальной информации Mashira Фриланс 0 17.04.2011 20:56
Добавление в БД информации о песне nastya2612 Мультимедиа в Delphi 0 28.02.2011 15:37
Добавление в БД информации о песне nastya2612 БД в Delphi 1 28.02.2011 15:32
Создание форм поиска и вывода информации opalko1 Microsoft Office Excel 7 26.02.2010 10:57