Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: вставка с проверкой в несколько таблиц
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » вставка с проверкой в несколько таблиц

Страниц (1): [1]
 

1. gaiver - 08 Октября, 2006 - 13:18:01 - перейти к сообщению
не могу обуздать Mysql )
при помощи формы нужно внести данные в четыре связанные таблицы.

примерная логика процесса следующая:

INSERT INTO country (id,country_name) VALUES ("", "Germany");
INSERT INTO director (id, director_name) VALUES ("", "Ibr");
INSERT INTO format (id, format) VALUES ("", "XVID");

INSERT INTO movies (russian, original, lenght, director_id, country_id, yearrr, number, id_format) VALUES ("русское название","английское",222, "","",22,2,"")
WHERE movies.director_id=director.id
AND movies.country_id=country.id
AND movies.id_format=format.id;

Пользователь вводит russian, original, director_name, country, lenght, number, yearrr, format. Значения director_name, country, format записываются в соответствующие таблицы и им присваиваются значения ключей, в случае если таких данных в таблице нет (страны германия в таблице нет), в противном случае ничего не записывается.
В таблицу movies записываются все остальные значения, а за место director_id, country_id, id_format подставляются значения введеные в предыдущем insert. Как на sql Это сделать? Че не пробовал, не получается....

2. valenok - 09 Октября, 2006 - 12:03:06 - перейти к сообщению
mysql_insert_id()
это чтоли? Я не понял..
3. -SCHATTEN- - 16 Октября, 2006 - 21:47:19 - перейти к сообщению
что то я тоже мало что понял ?! тебе РНР надо ? или SQL ??
4. evgenijj - 17 Октября, 2006 - 11:54:25 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $query = "SELECT id FROM country WHERE country_name='".$_POST["country"]."'";
  4. $res = mysql_query ( $query );
  5. if ( mysql_num_rows( $res ) > 0 )
  6. {
  7.         $id_country = mysql_result( $res, 0, 0 );      
  8. }
  9. else
  10. {
  11.         // Предполагается, что первичный ключ id снабжен механизмом AUTO_INCREMENT
  12.         $query = "INSERT INTO country (country_name) VALUES ('".$_POST["country"]."')";
  13.         mysql_query( $query );
  14.         $id_country = mysql_insert_id();
  15. }
  16.  
  17. $query = "SELECT id FROM director WHERE director_name='".$_POST["director"]."'";
  18. $res = mysql_query ( $query );
  19. if ( mysql_num_rows( $res ) > 0 )
  20. {
  21.         $id_director = mysql_result( $res, 0, 0 );     
  22. }
  23. else
  24. {
  25.         // Предполагается, что первичный ключ id снабжен механизмом AUTO_INCREMENT
  26.         $query = "INSERT INTO director (director_name) VALUES ('".$_POST["director"]."')";
  27.         mysql_query( $query );
  28.         $id_director = mysql_insert_id();
  29. }
  30.  
  31. $query = "SELECT id FROM format WHERE format_name='".$_POST["format"]."'";
  32. $res = mysql_query ( $query );
  33. if ( mysql_num_rows( $res ) > 0 )
  34. {
  35.         $id_format = mysql_result( $res, 0, 0 );       
  36. }
  37. else
  38. {
  39.         // Предполагается, что первичный ключ id снабжен механизмом AUTO_INCREMENT
  40.         $query = "INSERT INTO format (format_name) VALUES ('".$_POST["format"]."')";
  41.         mysql_query( $query );
  42.         $id_format = mysql_insert_id();
  43. }
  44.  
  45. $query = "INSERT INTO movies
  46.                  (russian,
  47.                  original,
  48.                  lenght,
  49.                  director_id,
  50.                  country_id,
  51.                  yearrr,
  52.                  number,
  53.                  format_id)
  54.                  VALUES
  55.                  ('русское название',
  56.                  'английское',
  57.                  222,
  58.                  ".$id_director.",
  59.                  ".$id_country.",
  60.                  22,
  61.                  2,
  62.                  ".$id_format.")";
  63. mysql_query( $query );
  64. $id_new_movies = mysql_insert_id();
  65.  
  66. ?>
  67.  

 

Powered by ExBB FM 1.0 RC1