Array, проблем с въвеждането му в mySQL

redbulldog

Registered
Здравейте.

Имате ли някаква идея как да вмъкна масив, като този в базата данни:

Код:
Array ( 
	[0] => Array ( [edno] => Stoinost [dve] => Stoinost2)
	[1] => Array ( [edno] => Stoinost3 [dve] => Stoinost4)
	[2] => Array ( [edno] => Stoinost5 [dve] => Stoinost6)
	[3] => Array ( [edno] => Stoinost7 [dve] => Stoinost8)
	[4] => Array ( [edno] => Stoinost9 [dve] => Stoinost10)
)


Благодаря предваритело!!!

:?:
 
Идеи бол, въпроса е ти как искаш да го вмъкнеш. В смисъл, кое къде трябва да е ?
Иначе най-лесния начин е serialize(), ръгаш в една колона и след това unserialize().
 
Може и така:

PHP:
<?php

$Masiv = array();

//Pulnem masiva

foreach($Masiv as $Ar) {

mysql_query('INSERT INTO `table` (`pole`) VALUES ('$Ar')');

}

-------------------------------


Ако искаш всичките резултати да ги качиш в един запис ползвай:

PHP:
<?php

$Masiv = array();

//Pulnem masiva

/** Така ще създадеш един стринг, който ще съдържа всички записи от масива, разделени от едно празно място */
$Ar = implode(' ', $Masiv);

mysql_query('INSERT INTO `table` (`pole`) VALUES ('$Ar')');
 
а ако искаш просто да добавиш масива като масив в базата ползвай

PHP:
$array = array(...);
$arr = serialize($array);//магическото пробразуване
mysql_query('INSERT INTO `table` (`pole`) VALUES ('$arr')');

А за до вземеш

PHP:
$query = mysql_query("SELECT * FROM table");
$row = mysql_fetch_assoc($query);
$arr = unserialize($row['pole']);
print_r($arr);
 
Идеята е следната. Всеки "ред" от масива да е ред от таблицата.

Код:
Array (
   [0] => Array ( [edno] => Stoinost [dve] => Stoinost2)
   [1] => Array ( [edno] => Stoinost3 [dve] => Stoinost4)
   [2] => Array ( [edno] => Stoinost5 [dve] => Stoinost6)
   [3] => Array ( [edno] => Stoinost7 [dve] => Stoinost8)
   [4] => Array ( [edno] => Stoinost9 [dve] => Stoinost10)
)

тоест:

DB
Код:
id                         |    edno            |       dve            
-----------------------------------------------------
Auto increment    |   Stoinost       |   Stoinost2
.
.
.
.
.
Auto increment    |    Stoinost 9  |  Stoinost 10
-------------------------------------------------------
 
eddyy93 каза:
Може и така:

PHP:
<?php

$Masiv = array();

//Pulnem masiva

foreach($Masiv as $Ar) {

mysql_query('INSERT INTO `table` (`pole`) VALUES ('$Ar')');

}

-------------------------------

Ако искаш всичките резултати да ги качиш в един запис ползвай:

PHP:
<?php

$Masiv = array();

//Pulnem masiva

/** Така ще създадеш един стринг, който ще съдържа всички записи от масива, разделени от едно празно място */
$Ar = implode(' ', $Masiv);

mysql_query('INSERT INTO `table` (`pole`) VALUES ('$Ar')');


Ако може една-две забележки.

1. Трябва му цикъл в цикъла, защото числовите индекси съдържат масиви
2. Втория пример не е много практически добър. По-добре е да сериализира масива и да го запише и после да го десериализира.

П.П. За 1 точка сега забелязвах, че това ти е била целта.



П.П.2 Авторе, и те това е което искаш :D ...
PHP:
$arr = array(...);

foreach($arr as $a){
      foreach($a as $k=>$v){
                mysql_query("INSERT INTO `table`(`{$k}`) VALUES ('{$v}')");
      }
}
 
Първо да Ви благодаря за помощта! :?:

Но има проблем. При въвеждането в базата данни се получават по няколко празни редове. Някакви идеи ?

Пък и има редове на които има само да речем ID, на други само текст.

Получава се така, че всеки параметър от масива се записва на отделен ред.
 
Нещо не ти разбрах проблема. Това, което съм ти дал зависи според върнатия ти масив. Ако масива ти има празни елементи, то ще има празни редове и в базата данни.
Но това за ID-то не го разбрах.
 
Имам следния масив:
Код:
Array ( [0] => Array ( [scheduleId] => [dateId] => 11 [tvId] => 3 [showname1] => Досиетата Х - сериал, с. 2 [time] => 00:00 ) [1] => Array ( [scheduleId] => [dateId] => 11 [tvId] => 3 [showname1] => Преди обед /п./ [time] => 01:50 ) [2] => Array ( [scheduleId] => [dateId] => 11 [tvId] => 3 [showname1] => Някой те наблюдава /п./ - сериал [time] => 03:40 ) [3] => Array ( [scheduleId] => [dateId] => 11 [tvId] => 3 [showname1] => Такъв е животът : Истинските герои /п./ [time] => 04:30 ) [4] => Array ( [scheduleId] => [dateId] => 11 [tvId] => 3 [showname1] => Кухнята на Звездев /п./ [time] => 05:30 ) [5] => Array ( [scheduleId] => [dateId] => 11 [tvId] => 3 [showname1] => Горките родители на богатите деца /п./ - сериал [time] => 05:50 ) [6] => Array ( [scheduleId] => [dateId] => 11 [tvId] => 3 [showname1] => Тази сутрин - информационно предаване с водещи Анна Цолова и Виктор Николаев [time] => 06:45 ) [7] => Array ( [scheduleId] => [dateId] => 11 [tvId] => 3 [showname1] => Преди обед - дневно токшоу [time] => 09:30 ) [8] => Array ( [scheduleId] => [dateId] => 11 [tvId] => 3 [showname1] => Кухнята на Звездев - кулинарно шоу с Иван Звездев [time] => 11:30 ) [9] => Array ( [scheduleId] => [dateId] => 11 [tvId] => 3 [showname1] => bTV Новините - обедна емисия [time] => 12:00 ) [10] => Array ( [scheduleId] => [dateId] => 11 [tvId] => 3 [showname1] => Шоуто на Слави /п./ [time] => 12:30 ) [11] => Array ( [scheduleId] => [dateId] => 11 [tvId] => 3 [showname1] => Женско царство - сериал [time] => 13:30 ) [12] => Array ( [scheduleId] => [dateId] => 11 [tvId] => 3 [showname1] => Някой те наблюдава - сериал [time] => 15:00 ) [13] => Array ( [scheduleId] => [dateId] => 11 [tvId] => 3 [showname1] => Горките родители на богатите деца - сериал [time] => 16:00 ) [14] => Array ( [scheduleId] => [dateId] => 11 [tvId] => 3 [showname1] => bTV Новините [time] => 17:00 ) [15] => Array ( [scheduleId] => [dateId] => 11 [tvId] => 3 [showname1] => Лице в лице - публицистично предаване с водещи Цветанка Ризова и Димитър Цонев [time] => 17:30 ) [16] => Array ( [scheduleId] => [dateId] => 11 [tvId] => 3 [showname1] => Любов извън закона - сериал [time] => 18:00 ) [17] => Array ( [scheduleId] => [dateId] => 11 [tvId] => 3 [showname1] => bTV Новините - централна емисия [time] => 19:00 ) [18] => Array ( [scheduleId] => [dateId] => 11 [tvId] => 3 [showname1] => Пепел от рози - сериал [time] => 20:00 ) [19] => Array ( [scheduleId] => [dateId] => 11 [tvId] => 3 [showname1] => bTV Новините - късна емисия [time] => 22:00 ) [20] => Array ( [scheduleId] => [dateId] => 11 [tvId] => 3 [showname1] => Шоуто на Слави - вечерно токшоу [time] => 22:30 ) [21] => Array ( [scheduleId] => [dateId] => 11 [tvId] => 3 [showname1] => Модерно семейство - сериал, с. 2 [time] => 23:30 ) )

Съдържа програмата на БТВ за днес. Искам да запиша предаванията по ред. Тоест всеки от отделните масиви да е рад, но се получава нещо много странно.

Това е php кода
PHP:
            foreach ($html->find('div.item_tvshow') as $schedule) {
                $item['scheduleId'] = null;
                $item['dateId'] = htmlspecialchars($_POST['dateId']);
                $item['tvId'] = htmlspecialchars($_POST['tvId']);
                $item['showname1'] = $schedule->find('div.showname1', 0)->plaintext;
                $item['time'] = $schedule->find('div.time', 0)->plaintext;

                $schedules[] = $item;
            }

            //  print_r($schedules);

            foreach ($schedules as $a) {
                foreach ($a as $k => $v) {
                    mysql_query("INSERT INTO `schedule`(`{$k}`) VALUES ('{$v}')");
                }
            }

ето и резутата със снимка от phpmyadmin:

2603f1acc5964277.png
 

Back
Горе