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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2010, 13:26   #1
ара
Форумчанин
 
Регистрация: 11.04.2007
Сообщений: 106
По умолчанию Данные в связанной таблице

Доброго времени суток! Вопрос в следующем.
Есть 2 связанных таблицы mysql. People и admin, которая связана через внешний ключ id_men.
Добавляю данные в admin, :
PHP код:
$strsql1="INSERT INTO admin (id_men, data_nar, stat, protokol)
   VALUES (\"
{$_POST['id_men']}\", \"{$_POST['data_nar']}\", \"{$_POST['stat']}\", \"{$_POST['protokol']}\")";
   
$rez1=mysql_query($strsql1$connect); 
естественно они не добавляются! Наверное из-за того, что несовпадают типы данных, т.к. через форму в id_men вводим текст, а в базе у него INT.
Подскажите, пожалуйста, как преобразовать данные, что изменить, добавить?
ара вне форума Ответить с цитированием
Старый 10.12.2010, 13:33   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

в числа преобразовывать - intval()
если записываете строку - в кавычки её!
ADSoft вне форума Ответить с цитированием
Старый 10.12.2010, 13:44   #3
ара
Форумчанин
 
Регистрация: 11.04.2007
Сообщений: 106
По умолчанию

Ее использовать в самом запросе?
ара вне форума Ответить с цитированием
Старый 10.12.2010, 14:09   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от ара Посмотреть сообщение
естественно они не добавляются! Наверное из-за того, что несовпадают типы данных, т.к. через форму в id_men вводим текст, а в базе у него INT.
Наверное - нужно не угадывать причину ошибки,а нужно вызвать её вывод в браузер,и точно понять в чём причина.
Вас уже пытались этому научить - используйте mysql_error();
Цитата:
Подскажите, пожалуйста, как преобразовать данные
MySQL сам в состоянии разобраться с типами данных - для этого просто заключайте их в кавычки.
В вашем случае двойные кавычки + их экранирование = лишние знакоместа.
Используйте одинарные кавычки(') для значений полей в запросах.

Последний раз редактировалось Andkorol; 10.12.2010 в 14:23.
Andkorol вне форума Ответить с цитированием
Старый 10.12.2010, 14:32   #5
ара
Форумчанин
 
Регистрация: 11.04.2007
Сообщений: 106
По умолчанию

Подскажите, пож., как правильно. Смог написать только так:
PHP код:
$strsql1=("INSERT INTO admin (id_men, data_nar, stat, protokol)
   VALUES ('
$_POST[id_men]', '$_POST[data_nar]', '$_POST[stat]', '$_POST[protokol]')") or die (mysql_error()); 
, но понятно дело не работает!
А Что в кавычки надо заключать?

Последний раз редактировалось ара; 10.12.2010 в 14:34.
ара вне форума Ответить с цитированием
Старый 10.12.2010, 15:57   #6
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

дочитай книжку по php до конца (лень читать - найди видеоуроки).... внимательно изучи синтаксис
если потом будут вопросы - задавай
ADSoft вне форума Ответить с цитированием
Старый 10.12.2010, 16:05   #7
ара
Форумчанин
 
Регистрация: 11.04.2007
Сообщений: 106
По умолчанию

Я читаю, но получается поверхностно т.к. времени нет, надо уже сдавать курсач, поэтому приходится вот так спрашивать. Что надо изменить?
Еще написал:
PHP код:
 $strsql1=("INSERT INTO admin (id_men, data_nar, stat, protokol)
   VALUES ("
.$_POST['id_men'].", ".$_POST['data_nar'].", ".$_POST['stat'].", ".$_POST['protokol'].")") or die (mysql_error()); 
Но тоже не работает

Последний раз редактировалось ара; 10.12.2010 в 16:34.
ара вне форума Ответить с цитированием
Старый 10.12.2010, 16:48   #8
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от ара Посмотреть сообщение
Подскажите, пож., как правильно. Смог написать только так:
PHP код:
$strsql1=("INSERT INTO admin (id_men, data_nar, stat, protokol)
   VALUES ('
$_POST[id_men]', '$_POST[data_nar]', '$_POST[stat]', '$_POST[protokol]')") or die (mysql_error()); 
, но понятно дело не работает!
or die(mysql_error()) нужно цеплять к выполнению запроса,а не к его формированию...
Т.е. примерно так:
PHP код:
$strsql1="INSERT INTO admin (id_men, data_nar, stat, protokol)
   VALUES ('
$_POST[id_men]', '$_POST[data_nar]', '$_POST[stat]', '$_POST[protokol]')";
mysql_query($strsql1) or die(mysql_error()); 
Цитата:
А Что в кавычки надо заключать?
Читаем внимательно

PS: кстати, элементы массивов также нужно заключать в кавычки - $_POST['id_men']

Последний раз редактировалось Andkorol; 10.12.2010 в 16:50. Причина: PS
Andkorol вне форума Ответить с цитированием
Старый 10.12.2010, 17:05   #9
ара
Форумчанин
 
Регистрация: 11.04.2007
Сообщений: 106
По умолчанию

Не получается, ошибку не выдает.
PHP код:
<?php
 
echo "<html>
   <form action=adm_add.php method=POST>   
   №:<br> <input type=text name=id_men size=20><br>
   Дата нарушения:<br> <input type=text name=data_nar size=20><br>
   Статья:<br> <input type=text name=stat size=20><br>
   № протокола:<br><input type=text name=protokol size=20><br>
   <input type=submit name=addOk1 value='Добавить'> 
    <input type=reset name=del1 value='&#160Отмена&#160'>
   </td>
   </tr>   
    </form>
 </html>"
;  
 
$server="localhost";
$db="cars";
$user="";
$pass="";
$connect=mysql_connect($server,$user,$pass);
mysql_select_db($db) or die ("ОШИБКА СОЕДИНЕНИЯ!"); 
if (!
$_POST['del']){exit;};
if (
$_POST['addOk1'])
{  
  
$strsql1="INSERT INTO admin (id_men, data_nar, stat, protokol) 
   VALUES ('
$_POST[id_men]', '$_POST[data_nar]', '$_POST[stat]', '$_POST[protokol]')"
mysql_query($strsql1) or die(mysql_error());    
   
mysql_close($connect);
 }
?>
Вот полностью код, гляньте, пож! Надо просто добавить данные в таблицу. Id_men - это внешний ключ
ара вне форума Ответить с цитированием
Старый 10.12.2010, 17:23   #10
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

var_dump($_POST); после:
Цитата:
if ($_POST['addOk1'])
{
echo $strsql1; после:
Цитата:
$strsql1="INSERT INTO admin (id_men, data_nar, stat, protokol)
VALUES ('$_POST[id_men]', '$_POST[data_nar]', '$_POST[stat]', '$_POST[protokol]')";
Вывод в студию.
Andkorol вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в диаграмме к сводной таблице необходимо отображать данные промежуточных итогов YRHI Microsoft Office Excel 4 13.05.2010 11:42
Из делфи узнать есть ли данные в таблице SQL server_а. S_Yevgeniy БД в Delphi 4 04.12.2009 21:10
как в связанной таблице разукрасить DBGrid ГОСЕАН БД в Delphi 5 23.07.2009 10:11
Сохранить данные в таблице (IBQery) Yuran БД в Delphi 7 11.07.2008 11:26
Delphi:обновить данные в таблице. Raccoon Помощь студентам 5 19.05.2008 19:31