Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


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

Вот мой набросок страницы, в которой должны из форм посылаться данные, которые были введены. Но почему то ничего никуда не посылается.
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
Адрес: Татарстан
Сообщений: 3,245
Репутация: 912

icq: 303-206-418
skype: ad-soft.info
По умолчанию

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

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

$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
Репутация: 10
По умолчанию

Код:

<?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
Репутация: 16
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


02:33.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru