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

Форум MySQL

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

 

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

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

тема: Вставить данные из массива в базу
 
 автор: kis-kis   (25.10.2007 в 15:00)   письмо автору
 
 


foreach ($_POST["cat"] as $val) 

$query = "INSERT INTO 2cat_catalog (category_id, catalog_id) VALUES ('$val', '$cat_id')";
$req = mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");
}

Это работает, но если есть не один, а три массива, данные которых нужно вставить в эту же базу, как это сделать?
Спасибо.

   
 
 автор: ronin   (25.10.2007 в 16:10)   письмо автору
 
   для: kis-kis   (25.10.2007 в 15:00)
 

данные, которые в массиве, Вы загоняете через implode в поле типа SET?

   
 
 автор: kis-kis   (25.10.2007 в 16:41)   письмо автору
 
   для: ronin   (25.10.2007 в 16:10)
 

Не понял Вас? $_POST["cat"] - это выбранные категории в select multiple

   
 
 автор: ronin   (25.10.2007 в 16:59)   письмо автору
 
   для: kis-kis   (25.10.2007 в 16:41)
 

если мультипл подразумевается, что может быть выбрано несколько позиций? Тогда по идее, у Вас массив Вы приведите массив, как он выглядит. его, если не ошибаюсь нужно собрать до кучи коммандой '".implode(",",$val)."')" тогда его запихивают в поле типа SET при этом информация ложится как: "1", "2", "5" если вам нужно будет вывести эти данные то вы при запросе используете комманду '".explode(",",$category_id)."' тут на сайте используйте поиск с этими ключевыми словами.

foreach ($_POST["cat"] as $val)  
{  
$query = "INSERT INTO 2cat_catalog (category_id, catalog_id) VALUES ('.implode(",",$val).', '$cat_id')"; 
$req = mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error().""); 



плюс поле category_id в База mySQL должно быть исправлено как SET т.е не int, или varchar

   
 
 автор: kis-kis   (25.10.2007 в 18:07)   письмо автору
 
   для: ronin   (25.10.2007 в 16:59)
 

Массива три:


foreach ($_POST["cat"] as $val)   
{   
$query = "INSERT INTO 2cat_catalog (category_id, catalog_id) VALUES ('.implode(",",$val).', '$cat_id')";  
$req = mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");  

foreach ($_POST["service"] as $val)   
{   
$query = "INSERT INTO 2cat_catalog (service_id, catalog_id) VALUES ('.implode(",",$val).', '$cat_id')";  

$req = mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");  

foreach ($_POST["cuisine"] as $val)   
{   
$query = "INSERT INTO 2cat_catalog (cuisine_id, catalog_id) VALUES ('.implode(",",$val).', '$cat_id')";  
$req = mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");  



А можно ли это объеденить в один запрос?

   
 
 автор: ronin   (25.10.2007 в 18:30)   письмо автору
 
   для: kis-kis   (25.10.2007 в 18:07)
 


 $_POST["cat"] =$cat;
$_POST["service"] =$service;
$_POST["cuisine"] =$cuisine;

{    
$query = "INSERT INTO 2cat_catalog (category_id, service_id,cuisine_id,catalog_id) VALUES ('.implode(",",$cat).', '.implode(",",$service).','.implode(",",$cuisine).','$cat_id')";   
$req = mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");   
}  


Я бы так делал, но не пробовал:) возможно это, даже сработает:)

   
 
 автор: kis-kis   (25.10.2007 в 18:44)   письмо автору
 
   для: ronin   (25.10.2007 в 18:30)
 

Сейчас попробую ))

   
 
 автор: ronin   (25.10.2007 в 18:50)   письмо автору
 
   для: kis-kis   (25.10.2007 в 18:44)
 

блин невнимателен нужно { } поснимать

   
 
 автор: kis-kis   (25.10.2007 в 19:07)   письмо автору
 
   для: ronin   (25.10.2007 в 18:30)
 

Parse error: parse error, unexpected ',' в этой строке

$query = "INSERT INTO 2cat_catalog (category_id, service_id,cuisine_id,catalog_id) 
VALUES ('.implode(",",$cat).', '.implode(",",$service).','.implode(",",$cuisine).','$cat_id')";    

   
 
 автор: ronin   (25.10.2007 в 19:42)   письмо автору
 
   для: kis-kis   (25.10.2007 в 19:07)
 

попробуй дабавить кавычки во все пункты, вместо:

'.implode(",",$cat).'

сделать так:

'".implode(",",$cat)."'

я уже ухожу...

   
 
 автор: kis-kis   (25.10.2007 в 20:01)   письмо автору
 
   для: ronin   (25.10.2007 в 19:42)
 

Так тоже не работает ((

   
 
 автор: EXP   (26.10.2007 в 00:17)   письмо автору
 
   для: kis-kis   (25.10.2007 в 20:01)
 

так наверное
<?
$query 
"INSERT INTO 2cat_catalog (category_id, service_id,cuisine_id,catalog_id) 
VALUES ('" 
implode(', '$cat) . "', " 
$cat_id "), ('" implode(', '$service)
 . 
"', " $cat_id "), ('" implode(', 
'
$cuisine) . "', " $cat_id ") ; "
если $cat_id это цифра и тип поля catalog_id (int)

   
 
 автор: ronin   (26.10.2007 в 10:22)   письмо автору
 
   для: EXP   (26.10.2007 в 00:17)
 


foreach ($_POST["cat"] as $cat || $_POST["service"] as $service || $_POST["cuisine"] as $cuisine)   
{  
query...
}

если не прокатит ||, тогда попробовать AND.

   
 
 автор: kis-kis   (26.10.2007 в 11:03)   письмо автору
 
   для: EXP   (26.10.2007 в 00:17)
 

А вывести потом тогда как?

Допустим $categ = "22,23,10,9,5";


$resultc=mysql_query("SELECT * FROM cat_catalog where id = (explode('","', $categ))") or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");
$cat = mysql_fetch_array($resultc);
echo $cat[name];


Так не работает...

   
 
 автор: ronin   (26.10.2007 в 11:29)   письмо автору
 
   для: kis-kis   (26.10.2007 в 11:03)
 

обычно такие данные выводят как массив или для чекбоксов(checkbox) или мультиселект, или радикнопок, это для мультиселекта?

   
 
 автор: kis-kis   (26.10.2007 в 11:53)   письмо автору
 
   для: ronin   (26.10.2007 в 11:29)
 

Нет нужно просто вывести название через запятую ))

   
 
 автор: ronin   (26.10.2007 в 12:10)   письмо автору
 
   для: kis-kis   (26.10.2007 в 11:53)
 

тогда делаете запрос без explode. Просто

$resultc=mysql_query("SELECT * FROM cat_catalog where id = $_POST[cat_id]') or die("<B>Error ".mysql_errno()." :</B> ".mysql_error().""); 
$cat = mysql_fetch_array($resultc); 
echo $cat[category_id];  //название полей  в базе, к которых инфа
echo $cat[service_id]; 
echo $cat[cuisine_id]; 

$_POST[cat_id] - это, если я понял номер покоторому сортируются данные.

   
 
 автор: kis-kis   (26.10.2007 в 12:29)   письмо автору
 
   для: ronin   (26.10.2007 в 12:10)
 

Так выводится только первое, а не все.

Вот например, если $categ = "22,23,10,9,5"; (цифры это идентификаторы категорий), следовательно это массив, состоящий из 5 идентификаторов категорий. Есть таблица с названиями категорий.

Как вывести названия всех категорий через запятую?
Спасибо.

   
 
 автор: ronin   (26.10.2007 в 12:43)   письмо автору
 
   для: kis-kis   (26.10.2007 в 12:29)
 

если честно, то я не понял:)
1) $categ = "22,23,10,9,5 $categ - это поле в таблице?
2)echo $cat[name]; - это что?
в базе в поле типа SET, данные идут через запятые, если их вывести через запрос, они будут выведенны через запятую, если они хранятся в поле name то 2) и выведет то, что храниться в поле name.
если поле, где храниться инфа categ, тогда echo $cat[categ];
explode нужен для разделения и вывода как массива.

   
 
 автор: kis-kis   (26.10.2007 в 13:57)   письмо автору
 
   для: ronin   (26.10.2007 в 12:43)
 

>> 1) $categ = "22,23,10,9,5 $categ - это поле в таблице?
Да, это поле в таблице

>> echo $cat[name]; - это что?
Это название категории, соответсвующее идентификатору (следовательно 22 - это id категории, она имеет название - категория 1, 23 - это id категории, она имеет название - категория 2, ...)

Т.к. $categ состоит из 5 значений, след. нужно вывести 5 названий категорий. Теперь более менее понятно?

   
 
 автор: ronin   (26.10.2007 в 15:37)   письмо автору
 
   для: kis-kis   (26.10.2007 в 13:57)
 

опять я не понял. а если понял, то если имеется таблица категорий, то создается запись, куда входят поля: 1)номер категории, 2) имя категории.
соответственно если имеются пять номеров:"22,23,10,9,5" то и строчек будет пять. Это не массив!

resultc=mysql_query("SELECT * FROM cat_catalog ") or die("<B>Error ".mysql_errno()." :</B> ".mysql_error().""); 
$cat = mysql_fetch_array($resultc); 
echo $cat[name] ",";

если строчек у Вас пять, тогда все должно вывести.или

echo $cat[name].",";

   
Rambler's Top100
вверх

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