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

Форум MySQL

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

 

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

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

тема: Введение информации в базу данных через формы HTML
 
 автор: RomantikPro   (04.07.2006 в 14:32)   письмо автору
 
 

Подскажите в чем беда...Не хочет заносить информацию в БД
И коннекта через процесслист phpmyadmin не наблюдается :-)
Выводит только: "Занесение регистрационной информации" при отправке данных через форму и никаких сообщений об ошибках :-(


файл forma.html:


<html>
<head>

</head>

<body>

<form action="aaa.php" METHOD="GET">
<table border=1>
<tr> 
    <td>Имя клиента:</td>
        <td><input type="text" name="namecli" maxlenngth=60><br></td>
</tr>
<tr>
     <td>Город:</td>
          <td><input type="text" name="city" maxlenngth=60><br></td>
</tr>
<tr>
      <td>Район:</td>
           <td><input type="text" name="raion" maxlength="32"><br></td>
</tr>
<tr>
       <td>Улица:</td>
           <td><input type="text" name="street" maxlength="60"><br></td>
</tr>
<tr>
       <td>Дом:</td>
           <td><input type="text" name="korp" maxlength=6><br></td>
</tr>
<tr>
       <td>Форма собственности</td>
           <td><input type=text name="priznak_cli"  maxlength=1><br></td>
</tr>
<tr>
       <td>Телефон домашний:</td>
            <td><input type=text name="tel" maxlength=16><br></td>
</tr>
<tr>
   <td colspan=2><input type=submit value="Отправить данные"></td>
</tr>
</table>
</form>
</body>
</html>




И файл обработчик формы aaa.php:


<html>
<head>
     <title>ввввв</title>
</head>
<body>
<h1>Занесение регистрационной информации</h1>
<?php
$namecli
=$_GET['namecli'];
$city=$_GET['city'];
$raion=$_GET['raion'];
$street=$_GET['street'];
$korp=$_GET['korp'];
$priznak_cli=$_GET['priznak_cli'];
$tel=$_GET['tel'];
echo 
"$namecli";   #переменная выводится для проверки :-) 
$dblocation="localhost";
$dbuser="root";
$dbname="magazin";
$dbpasswd="*******";
$dbcnx=@mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!
$dbcnx)
{
 echo(
"<p>В настоящий момент сервер базы данных не доступен,      поэтому корректное отображение страницы невозможно.</P>");
 exit();
}
if (!@
mysql_select_db($dbname,$dbcnx))
{
   echo(
"<p>В настоящий момент сервер базы данных не доступен</P>");
 exit();
}
  
$query="insert into client values (NULL, $namecli$city$raion$street$korp$priznak_cli$tel)";
  
$result=mysql_query($query);
  if (
$result)
    echo 
mysql_affected_rows()."информация в базе данных.";
?>

</body>
</html>

   
 
 автор: Snorri   (04.07.2006 в 14:48)   письмо автору
 
   для: RomantikPro   (04.07.2006 в 14:32)
 

а попробуйте текстовые поля заковычить например '$city'
$query="insert into client values (NULL, $namecli, '$city', '$raion', '$street', '$korp', $priznak_cli, $tel)";

   
 
 автор: valenok   (04.07.2006 в 14:53)   письмо автору
 
   для: Snorri   (04.07.2006 в 14:48)
 

 <?
$query
="INSERT INTO client VALUES ('', '".$namecli."', '".$city."', '".$raion."', '".$street."', '".$korp."', '".$priznak_cli."', '".$tel."')";

   
 
 автор: RomantikPro   (04.07.2006 в 23:38)   письмо автору
 
   для: valenok   (04.07.2006 в 14:53)
 

Не получается и так и этак!!! Нет самого коннекта с БД...Может быть что-то в конфигурации php или MySql? Прикрепляю страничку с phpinfo()...посмотрите,пожалуйста, может здесь что-то...
Все это делается в Windows XP, файрволы все отключал...не помогает :-)
Создал маленькую табличку в MySql..все тоже самое...

Код aaa2.php:

<html>
<head>
</head>
<body>
<?
$dblocation
="127.0.0.1";
$dbname="magazin";
 
$dbuser="root";
 
$dbpasswd="*********";
 
$namecli=$_GET['namecli'];
 
$city=$_GET['city'];
 
$raion=$_GET['raion'];
  
$dbcnx=mysql_connect($dblocation$dbuser$dbpasswd);
  if (!
$dbcnx)
  {
    echo 
"<p>К сожалению, не доступен сервер mySQL</p>";
    exit();
  }
  if (!@
mysql_select_db($dbname,$dbcnx))
  {
    echo 
"<p>К сожалению, не доступна база данных</p>";
    exit();
  }
  
$sql="INSERT INTO prov VALUES ( '".$namecli."', '".$city."', '".$raion."')";
 
$result=mysql_query($sql);
   if (
$result)
    echo 
mysql_affected_rows()."информация в базе данных.";
?>
</body>
</html>



form.html


<html>
<head>

</head>

<body>

<form action="aaa2.php" METHOD="GET">
<table border=1>
<tr> 
    <td>Имя клиента:</td>
        <td><input type="text" name="namecli" size=20><br></td>
</tr>
<tr>
     <td>Город:</td>
          <td><input type="text" name="city" size=20<br></td>
</tr>
<tr>
      <td>Район:</td>
           <td><input type="text" name="raion" size=20><br></td>
</tr>
<tr>
   <td colspan=2><input type=submit value="Отправить данные"></td>
</tr>
</table>
</form>
</body>

   
 
 автор: Trianon   (05.07.2006 в 09:58)   письмо автору
 
   для: RomantikPro   (04.07.2006 в 23:38)
 

может стоит написать так:
echo "<p>К сожалению, не доступен сервер mySQL, потому что </p>".mysql_error(); 

и так:
echo "<p>К сожалению, не доступна база данных, потому что </p>".mysql_error();    

А не гадать вслепую?

   
 
 автор: RomantikPro   (05.07.2006 в 10:56)   письмо автору
 
   для: Trianon   (05.07.2006 в 09:58)
 

Сделал вот так :


<html> 
<head> 
</head> 
<body> 
<?php
$dblocation
="127.0.0.1"
$dbname="magazin"
$dbuser="root"
$dbpasswd="*********"
$dbcnx=mysql_connect($dblocation$dbuser$dbpasswd); 
  if (!
$dbcnx
  { 
   echo 
"<p>К сожалению, не доступен сервер mySQL</p>".mysql_error(); 
   exit(); 
  } 
  if (!@
mysql_select_db($dbname,$dbcnx)) 
  { 
    echo 
"<p>К сожалению, не доступна база данных</p>".mysql_error(); 
    exit(); 
  } 
  
$sqlmysql_query("insert into prov values (NULL, 'Сегодня', 'Завтра', 'Послезавтра')"); 
  if(!
$sql)
  {
    echo 
"<p>Ошибка в запросе</p>".mysql_error();
    exit();
  } 
   if (
$sql
    echo 
mysql_affected_rows()."информация в базе данных."
 
  echo 
mysql_result($sql0);
?>
</body> 
</html> 


На что выдается:

Ошибка в запросе

Data too long for column 'namecli' at row 1


Пробывал вставлять строчку через консоль , все нормально, не ругается на слишком длинную строку

Структура таблицы prov:


+---------+--------+------+-----+---------+----------------+
| Field    | Type   | Null | Key | Default | Extra          |
+---------+--------+------+-----+---------+----------------+
| id_cli  | int(6)    | NO   | PRI | NULL    | auto_increment |
| namecli | text   | YES  |         | NULL    |                |
| city       | text      |YES |           | NULL    |                |
| raion   | text       | YES  |        |  NULL    |                |
+---------+--------+------+-----+---------+----------------+



Почему может ругаться на длину поля?

   
 
 автор: hars   (05.07.2006 в 11:04)   письмо автору
 
   для: RomantikPro   (05.07.2006 в 10:56)
 

Покажите результат вставки данной строки из консоли
insert into prov values (NULL, 'Сегодня', 'Завтра', 'Послезавтра')

   
 
 автор: Trianon   (05.07.2006 в 11:14)   письмо автору
 
   для: RomantikPro   (05.07.2006 в 10:56)
 

Скорее всего, проблема в том. что неправильна задана кодовая страница.
попробуйте вызвать
mysql_query("SET NAMES '1251'"); 
после успешного mysql_connect()

   
 
 автор: RomantikPro   (05.07.2006 в 11:46)   письмо автору
 
   для: Trianon   (05.07.2006 в 11:14)
 

Спасибо огромное, получилось!!!
Именно вот так:

mysql_query("SET NAMES 'cp1251'"); 

   
 
 автор: hars   (05.07.2006 в 10:18)   письмо автору
 
   для: RomantikPro   (04.07.2006 в 23:38)
 

Закомментируйте эти строки и попробуйте.

if (!$dbcnx) { echo("<p>В настоящий момент сервер базы данных не доступен,      поэтому корректное отображение страницы невозможно.</P>"); exit(); } if (!@mysql_select_db($dbname,$dbcnx)) {    echo("<p>В настоящий момент сервер базы данных не доступен</P>"); exit(); }

   
Rambler's Top100
вверх

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