Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Добавление данных в базу mysql.
 
 автор: 123php   (02.05.2005 в 12:57)   письмо автору
 
 

Здравствуйте! Вопрос элементарный для многих, но мне пока не понятно. Объсните, как происходит процесс занесения данных из формы сайта в базу mysql?

   
 
 автор: cheops   (02.05.2005 в 13:30)   письмо автору
 
   для: 123php   (02.05.2005 в 12:57)
 

В базе данных, пусть для опередлённости она будет называться test, создаётся таблица (tbl)
CREATE TABLE tbl (
  name TEXT
);

Далее, пусть имеется HTML-форма index.php
<form action=handler.php method=post> 
<textarea name="name"></textarea> 
<input type="submit" name="ok"> 
</form>

Обработчик HTML-формы handler.php может иметь следующий вид
<?php
  
// Устанавливаем соединение с базой данных
  
include "config.php";
  
// Формируем запрос на добавления данных из поля 
  // name HTML-формы. Так как методо передачи данных 
  // POST, содержимое текстовой области находится
  // в $_POST['name']
  
$query "INSERT INTO tbl VALUES ('".$_POST['name']."')";
  
// Выполняем запрос и контролируем правильность его выполнения
  
if(mysql_query($query))
  {
     echo 
"Данные успешно добавлены";
  }
  else
  {
    echo 
"Ошибка - ".mysql_error();
  }
?>

Для успешной работы данного обработчика, нам потребуется конфигурационный файл config.php, который устанавливает соединение с базой данных MySQL. Он может выглядеть следующим образом
<?php 
  
// Код файла config.php 
  // Адрес MySQL-сервера
  
$dblocation "localhost"
  
// Имя базы данных 
  
$dbname "base"
  
// Имя пользователя... 
  
$dbuser "root"
  
// Пароль       
  
$dbpasswd ""
  
// Соединяемся с сервером базы данных - нужно получить соединение 
  // по которому мы будем отправлять запросы базе данных и получать 
  // ответы (данные или сообщения об успешности выполнения запросов) 
  
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd); 
  if (!
$dbcnx
  { 
    echo( 
"<P>В настоящий момент сервер базы данных не доступен, поэтому корректное 
                       отображение страницы невозможно.</P>" 
); 
    exit(); 
  } 
  
// Выбираем базу данных - этой функцией мы сообщаем с какой 
  // базой данных мы будем работать, заметте, что вторым 
  // параметром мы передаем дискриптор соединения $dbcnx, 
  // который вернула функция mysql_connect 
  
if (! @mysql_select_db($dbname,$dbcnx) ) 
  { 
    echo( 
"<P>В настоящий момент база данных не доступна, поэтому корректное 
                       отображение страницы невозможно.</P>" 
); 
    exit(); 
  } 
?>

   
 
 автор: TrunK   (03.05.2005 в 14:51)   письмо автору
 
   для: cheops   (02.05.2005 в 13:30)
 

У меня есть немного обратынй вопрос: как вывести данные из таблицы в хтмл?
Есть таблица:
1)id_user
2)login
3)password
$query="select * from users where login='$name' and where password='$pass' ;"
А что дальше додумать не могу..
Надо как-то получить id_user...

   
 
 автор: Flash5   (03.05.2005 в 18:14)   письмо автору
 
   для: TrunK   (03.05.2005 в 14:51)
 


  $SelectQuery="select * from users where login='$name' and where password='$pass' ;"
  $SelectReslut = mysql_query($SelectQuery);
  //skolko zapisei poluchili
  $Count = mysql_num_rows($SelectReslut);
  for ($i=1; $i<=$Count; $i++) {
    //poluchaiem ocherednuiu stroku
    $Fetch = mysql_fetch_array($SelectReslut);
    //vivodim rezultat
    echo $Fetch['id_user']." : ".$Fetch['login']." : ".$Fetch['password'];
  }

Но офтоп вообще-то запрещается :-), желаю удачи

   
 
 автор: moonfox   (03.05.2005 в 18:30)   письмо автору
 
   для: TrunK   (03.05.2005 в 14:51)
 

пример
в файле anketa.php получаем данныек из базы и присваиваем их переменным
в edit.php находжится фрма в которую и вносятся значения переменных из анкета.php там и эдиты и селекты и текст арея...

   
 
 автор: Dinis   (31.07.2005 в 15:55)   письмо автору
 
   для: 123php   (02.05.2005 в 12:57)
 

У меня вопрос в продолжении темы.
Как вставить в таблицу MySQL множество полей из формы, используя метод POST.
На форумах и в доступной мне литературе есть примеры вставки их формы 1 поля или примеры вставки в множества полей, но без POST/
Одно значение вставить в таблицу с одним полем я могу. Но мне надо из формы (анкета) вставить запись с 50 переменными.
Пробовал разные варианты. Например:

$query = "INSERT INTO anketa VALUES ('".$_POST['q1'] ['q2'] ['q3'] ['q4'] ['q5'] ..."')";

Но либо ошибка PHP, либо SQL ругается.
На эту проблему потратил уже неделю из своего отпуска. Понимаю, что чтото просто не знаю, но не могу найти где конкретно посмотреть и что делать.
Буду благодарен, если подскажете, что делать.

   
 
 автор: cheops   (31.07.2005 в 18:30)   письмо автору
 
   для: Dinis   (31.07.2005 в 15:55)
 

А q1, q2 и т.д. это разные значения? Если разные будет разумно сформировать переменную $query следующим образом
<?php
  $query 
"INSERT INTO anketa VALUES ($_POST[q1],$_POST[q2],$_POST[q3],...,$_POST[q50])";
?>

Разумеется в реальном SQL-запросе никаких троеточий быть не должно. Есть альтернативный вариант, по которому вы пошли выше
<?php
  $query 
"INSERT INTO anketa VALUES (".$_POST['q1'].",".$_POST['q2'].",".$_POST['q3'].",...,".$_POST['q50'].")";
?>

но он менее нагляден при таком большом количестве полей.

PS Если будут трудности - пишите, будем разбираться дальше.

   
 
 автор: Dinis   (01.08.2005 в 00:31)   письмо автору
 
   для: cheops   (31.07.2005 в 18:30)
 

Попробовал оба варианта. (Полей у меня оказалось всего 76!).

$query = "INSERT INTO anketa VALUES ($_POST[q1], $_POST[q2], $_POST[q3], $_POST[q4], $_POST[q5], $_POST[q6_1], $_POST[q6_2], $_POST[q6_3], $_POST[q6_4], $_POST[q6_5], $_POST[q6_6], $_POST[q6_7], $_POST[q6_8], $_POST[q6_9], $_POST[q6_10], $_POST[q6_11], $_POST[q7], $_POST[q8], $_POST[q9_1], $_POST[q9_2], $_POST[q9_3], $_POST[q9_4], $_POST[q9_5], $_POST[q9_6], $_POST[q9_7], $_POST[q9_8], $_POST[q9_9], $_POST[q9_10], $_POST[q9_11], $_POST[q10], $_POST[q11_1], $_POST[q11_2], $_POST[q11_3], $_POST[q11_4], $_POST[q11_5], $_POST[q11_6], $_POST[q11_7], $_POST[q11_8], $_POST[q11_9], $_POST[q11_10], $_POST[q11_11], $_POST[q11_12], $_POST[q11_13], $_POST[q11_14], $_POST[q12_1], $_POST[q12_2], $_POST[q12_3], $_POST[q12_4], $_POST[q12_5], $_POST[q12_6], $_POST[q12_7], $_POST[q12_8], $_POST[q13], $_POST[q14_1], $_POST[q14_2], $_POST[q14_3], $_POST[q14_4], $_POST[q14_5], $_POST[q14_6], $_POST[q14_7], $_POST[q14_8], $_POST[q14_9], $_POST[q15], $_POST[q16_1], $_POST[q16_2], $_POST[q16_3], $_POST[q16_4], $_POST[q16_5], $_POST[q16_6], $_POST[q16_7], $_POST[q16_8], $_POST[q17], $_POST[q18], $_POST[q19], $_POST[q20], $_POST[q21])";

Выдает ошибку синтакса:

Ошибка - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

Если ввожу в анкету (т.е. в форму) какие-то ответы выдает:

Ошибка - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ',,,,,,,,,6,5,1,,,,,,,,,,,8,1,,,,,,,,,,,,,,1,,,,,,,,5,1,,,,,,,,,

Может дело в типах данных? Все поля числовые (форма отправляет значения от 0 до 9, а последнее поле - текстовое.

   
 
 автор: cheops   (01.08.2005 в 00:38)   письмо автору
 
   для: Dinis   (01.08.2005 в 00:31)
 

Поместите каждый $_POST[...] в одинарные кавычки - у вас часто многие из полей пустые...
<?php
$query 
"INSERT INTO anketa VALUES ('$_POST[q1]', '$_POST[q2]', '$_POST[q3]', ... , '$_POST[q21]')"
?>

   
 
 автор: Dinis   (01.08.2005 в 01:14)   письмо автору
 
   для: cheops   (01.08.2005 в 00:38)
 

Ура, заработало!
Огромное спасибо. Приятно общаться с профи.
Сheops, если не возражаете, особо поблагодарить хотелось бы в личном послании.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования