Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
0 / 0 / 2
Регистрация: 07.11.2013
Сообщений: 165

Как лучше реализовать большую таблицу? Массивом или по другому?

19.08.2014, 16:28. Показов 5586. Ответов 116
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите как правильно сделать вот такую таблицу? передавать 60 переменных в обработчик или как то можно массивом, если можно на моем примере с массив показать?! или как то загружать всю таблицу в БД

делал примитивно но думаю это банально (?) много кода

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<table style="font-size:11px" border="1px" bordercolor="#FFFFFF">
 
<tr><!--HEAD-->
 
<td class="head_tb">размер</td>
<td class="head_tb"><img src="../admin/imge/color_bl.png"/></td>
<td class="head_tb"><img src="../admin/imge/color_blk.png"/></td>
<td class="head_tb"><img src="../admin/imge/color_g.png"/></td>
<td class="head_tb"><img src="../admin/imge/color_gr.png"/></td>
<td class="head_tb"><img src="../admin/imge/color_w.png"/></td>
<td class="head_tb"><img src="../admin/imge/color_y.png"/></td>
<td class="head_tb"><img src="../admin/imge/color_pn.png"/></td>
<td class="head_tb"><img src="../admin/imge/color_r.png"/></td>
<td class="head_tb"><img src="../admin/imge/color_fl.png"/></td>
<td class="head_tb"><img src="../admin/imge/color_be.png"/></td>
 
</tr><!--!HEAD-->
 
<form action="action.php" method="post">
 
<tr>
 
<td class="size_tb">XS</td>
<td class="size_tb"><input name="xs_blu" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xs_bl" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xs_g" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xs_gr" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xs_w" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xs_y" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xs_p" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xs_r" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xs_fl" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xs_bg" class="input" type="text" value="0"></td>
 
</tr>
 
<tr><!--HEAD-->
 
<td class="size_tb">S</td>
<td class="size_tb"><input name="s_blu" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="s_bl" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="s_g" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="s_gr" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="s_w" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="s_y" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="s_p" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="s_r" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="s_fl" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="s_bg" class="input" type="text" value="0"></td>
 
</tr><!--!HEAD-->
 
<tr><!--HEAD-->
 
<td class="size_tb">M</td>
<td class="size_tb"><input name="m_blu" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="m_bl" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="m_g" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="m_gr" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="m_w" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="m_y" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="m_p" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="m_r" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="m_fl" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="m_bg" class="input" type="text" value="0"></td>
 
</tr><!--!HEAD-->
 
<tr><!--HEAD-->
 
<td class="size_tb">L</td>
<td class="size_tb"><input name="l_blu" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="l_bl" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="l_g" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="l_gr" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="l_w" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="l_y" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="l_p" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="l_r" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="l_fl" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="l_bg" class="input" type="text" value="0"></td>
 
 
</tr><!--!HEAD-->
 
<tr><!--HEAD-->
 
<td class="size_tb">XL</td>
<td class="size_tb"><input name="xl_blu" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xl_bl" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xl_g" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xl_gr" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xl_w" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xl_y" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xl_p" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xl_r" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xl_fl" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xl_bg" class="input" type="text" value="0"></td>
 
 
</tr><!--!HEAD-->
 
<tr><!--HEAD-->
 
<td class="size_tb">XXL</td>
<td class="size_tb"><input name="xxl_blu" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xxl_bl" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xxl_g" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xxl_gr" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xxl_w" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xxl_y" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xxl_p" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xxl_r" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xxl_fl" class="input" type="text" value="0"></td>
<td class="size_tb"><input name="xxl_bg" class="input" type="text" value="0"></td>
 
 
</tr><!--!HEAD-->
<tr>
 
<td><input name="submit" type="submit" value="OK"></input></td>
</tr>
</form>
 
</table>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.08.2014, 16:28
Ответы с готовыми решениями:

Как передать таблицу массивом в js или jQuery?
Добрый день, не подскажете как можно передать содержимое таблиц массивом в javascript или jquery, например у меня есть таблица, и текст в...

Как лучше вывести большую таблицу со множеством группировок?
Добрый день. Много перерыл информации, но так и не нашел каким способом лучше всего выводить большую таблицу. Задача - Есть 4 таблицы...

Как вывести одно значение из массива list? Лучше использовать итератор или как-то по другому?
Здравствуйте! Что бы вывести одно значения из массива list нужно использовать итератор или можно как то по другому?

116
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
19.08.2014, 17:32
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
$size = array("xs", "s", "m", "l", "xl", "xxl");
$index = array("blu", "bl", "g", "gr", "w", "y", "p", "r", "fl", "bg");
$image = array("bl", "blk", "g", "gr", "w", "y", "pn", "r", "fl", "be");
 
echo "<table style=\"font-size:11px\" border=\"1px\" bordercolor=\"#FFFFFF\">";
 
echo "<tr>";
 
echo "<td class=\"head_tb\">размер</td>";
 
for($i = 0; $i < count($image); $i++)
{
    echo "<td class=\"head_tb\"><img src=\"../admin/imge/color_".$image[$i].".png\" /></td>";
}
 
echo "</tr>";
 
echo "<form action=\"action.php\" method=\"post\">";
 
for($i = 0; $i < count($size); $i++)
{
    echo "<tr>";
 
    echo "<td class=\"size_tb\">".strtoupper($size[$i])."</td>";
 
    for($j = 0; $j < count($index); $j++)
    {
        echo "<td class=\"size_tb\"><input name=\"".$size[$i]."_".$index[$j]."\" class=\"input\" type=\"text\" value=\"0\"></td>";
    }
    
    echo "</tr>";
}
 
echo "<tr>";
echo "<td><input name=\"submit\" type=\"submit\" value=\"OK\"></input></td>";
echo "</tr>";
 
echo "</form>";
 
echo "</table>";
1
 Аватар для Voka
207 / 199 / 110
Регистрация: 27.12.2010
Сообщений: 819
Записей в блоге: 1
19.08.2014, 17:37
если мне надо передать 20+ значений то делаю имена инпутов циферные и обрабатываю потом в цикле , например:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
if(isset($_POST['in1']))
{
    for($i=1;$i<=30;++$i)
    {
         echo $_POST['in'.$i];
    }
}
?>
<form method="post">
<input name="in1" type="text">
<input name="in2" type="text">
<input name="in3" type="text">
<input name="in4" type="text">
<input name="in5" type="text">
<input name="in6" type="text">
....
<input name="in30" type="text">
<input type="submit">
</form>
1
0 / 0 / 2
Регистрация: 07.11.2013
Сообщений: 165
19.08.2014, 17:44  [ТС]
а принимать в обработчик что не покажите??

Добавлено через 2 минуты
сорри не показал таблицу имедж не надо то есть

красный жел зел синий
XS
S
L

и тп. Вот такая таблица если туплю сорри в голове все намешалось

Добавлено через 2 минуты
PHP
1
2
$size = array("xs", "s", "m", "l", "xl", "xxl");
$index = array("blu", "bl", "g", "gr", "w", "y", "p", "r", "fl", "bg", "bl", "blk", "g", "gr", "w", "y", "pn", "r", "fl", "be");
и в БД тогда как должно быть по первому примеру???
0
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
19.08.2014, 17:51
Цитата Сообщение от cinema4d Посмотреть сообщение
и в БД тогда как должно быть по первому примеру???
а как сейчас есть? я так понимаю, что там хранятся количество чего-то с цветом и размером
0
0 / 0 / 2
Регистрация: 07.11.2013
Сообщений: 165
19.08.2014, 17:56  [ТС]
делал топорно!!!!)) в бд создал 60 полей как name и с INSERT into загонять их туда к каждой модели но это наверно древний способ )) не пинайте так умею но до этого так много полей не было

да, цель чтоб синий - 10 красный - 0 и тп.
0
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
19.08.2014, 19:13
Цитата Сообщение от cinema4d Посмотреть сообщение
да, цель чтоб синий - 10 красный - 0 и тп.
не знаю, будет ли это работать, писал без проверки но как-то так я это вижу

сначала надо вот это выполнить один раз, только уточнить список цветов
PHP
1
2
3
4
5
6
mysql_query("CREATE TABLE IF NOT EXISTS `sizes` (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), name varchar(5))");
mysql_query("INSERT INTO `sizes` (name) VALUES ('xs'), ('s'), ('m'), ('l'), ('xl'), ('xxl')");
mysql_query("CREATE TABLE IF NOT EXISTS `colors` (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), name varchar(5))");
mysql_query("INSERT INTO `colors` (name) VALUES ('blu'), ('bl'), ('g'), ('gr'), ('w'), ('y'), ('r'), ('fl'), ('bg')");
mysql_query("CREATE TABLE IF NOT EXISTS `products` (model varchar(255), description TEXT, added BIGINT)");
mysql_query("CREATE TABLE IF NOT EXISTS `products_amount` (model varchar(255), size INT, color INT, amount INT)");
а вот попытка создать форму добавления для теста и вывод если что есть
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
if(isset($_POST["submit"]) && $_POST["submit"] == "OK")
{
    $arr = $_POST;
    $model = $arr["modelname"];
 
    unset($arr["submit"]);
    unset($arr["modelname"]);
 
    $sizesinsert = array();
 
    $ressizes = mysql_query("SELECT * FROM sizes ORDER BY id");
 
    if(mysql_num_rows($ressizes) > 0)
    {
        while($rowsizes = mysql_fetch_array($ressizes, MYSQL_ASSOC))
        {
            $sizesinsert[$rowsizes[$name]] = $rowsizes["id"];
        }
    }
                                      
    $colorsinsert = array();
 
    $rescolors = mysql_query("SELECT * FROM colors ORDER BY id");
 
    if(mysql_num_rows($rescolors) > 0)
    {
        while($rowcolors = mysql_fetch_array($rescolors, MYSQL_ASSOC))
        {
            $colorsinsert[$rowcolors["name"]] = $rowcolors["id"];
        }
    }
 
    $query = "INSERT INTO `products_amount` (model, size, color, amount) VALUES ";
 
    $insertarr = array();
 
    foreach($arr as $key=>$value)
    {
        $index = explode("_", $key);
 
        if(count($index) == 2 && !empty($sizesinsert[$index[0]]) && !empty($colorsinsert[$index[1]]))
        {
            $insertarr[] = "('".mysql_real_escape_string($model)."', '".$sizesinsert[$index[0]]."', '".$colorsinsert[$index[0]]."', '".mysql_real_escape_string($value)."')";
        }
    }
 
    if(!empty($insertarr))
    {
        $query = $query.implode(",", $insertarr);
 
        mysql_query("INSERT INTO products (model, description, added) VALUES ('".mysql_real_escape_string($model)."', '', '".time()."')");
        mysql_query($query);
    }
}
 
 
$sizes = array();
 
$ressizes = mysql_query("SELECT id, name FROM sizes ORDER BY id");
 
if(mysql_num_rows($ressizes) > 0)
{
    while($rowsizes = mysql_fetch_array($ressizes, MYSQL_ASSOC))
    {
        $sizes[$rowsizes["id"]] = $rowsizes["name"];
    }
}
                                      
$colors = array();
 
$rescolors = mysql_query("SELECT id, name FROM colors ORDER BY id");
 
if(mysql_num_rows($rescolors) > 0)
{
    while($rowcolors = mysql_fetch_array($rescolors, MYSQL_ASSOC))
    {
        $colors[$rowcolors["id"]] = $rowcolors["name"];
    }
}
 
//пример с добавлением одного наименования
echo "<form action=\"action.php\" method=\"post\">";
 
echo "Наименование: <input type=\"text\" name=\"modelname\" value=\"\" />";
 
 
echo "<table style=\"font-size:11px\" border=\"1px\" bordercolor=\"#FFFFFF\">";
 
echo "<tr>";
 
echo "<td class=\"head_tb\">размер</td>";
 
foreach($colors as $c)
{
    echo "<td class=\"head_tb\"><img src=\"../admin/imge/color_".$c.".png\" /></td>";
}
 
echo "</tr>";
 
foreach($sizes as $s)
{
    echo "<tr>";
 
    echo "<td class=\"size_tb\">".strtoupper($s)."</td>";
 
    foreach($colors as $c)
    {
        echo "<td class=\"size_tb\"><input name=\"".$s."_".$c."\" class=\"input\" type=\"text\" value=\"0\"></td>";
    }
    
    echo "</tr>";
}
 
echo "<tr>";
echo "<td><input name=\"submit\" type=\"submit\" value=\"OK\"></input></td>";
echo "</tr>";
 
echo "</form>";
 
echo "</table>";
 
 
$resproducts = mysql_query("SELECT * FROM products ORDER BY added DESC");
 
if(mysql_num_rows($resproducts) > 0)
{
    while($rowproducts = mysql_fetch_array($resproducts, MYSQL_ASSOC))
    {
        echo "<hr />";
 
        echo "Наименование: ".$rowproducts["model"]."<br />";
 
        $resproductsamounts = mysql_query("SELECT * FROM products_amount WHERE model='".$rowproducts["model"]."' ORDER BY size ASC, color ASC");
 
        if(mysql_num_rows($resproductsamounts) > 0)
        {
            $tablecolorsarr = array(); 
            $values = array();
 
            while($rowproductsamounts = mysql_fetch_array($resproductsamounts, MYSQL_ASSOC))
            {
                $tablecolorsarr[] = $rowproductsamounts["color"];
 
                if(empty($values[$rowproductsamounts["size"]]))
                {
                    $values[$rowproductsamounts["size"]] = array();
                }
 
                $values[$rowproductsamounts["size"]][$rowproductsamounts["size"]] = $rowproductsamounts["amount"];
            }
 
            $tablecolors = array_unique($tablecolorsarr);
 
            echo "<table style=\"font-size:11px\" border=\"1px\" bordercolor=\"#FFFFFF\">";
            echo "<tr>";
 
            echo "<td class=\"head_tb\">размер</td>";
 
            foreach($tablecolors as $c)
            {
                echo "<td class=\"head_tb\"><img src=\"../admin/imge/color_".$colors[$c].".png\" /></td>";
            }
 
            echo "</tr>";
 
            foreach($values as $key=>$productscolors)
            {
                echo "<tr>";
 
                echo "<td class=\"size_tb\">".strtoupper($key)."</td>";
 
                foreach($productscolors as $c)
                {
                    echo "<td class=\"size_tb\">".$c."</td>";
                }
            
                echo "</tr>";
            }
 
            echo "</table>";
        }
    }
}
1
0 / 0 / 2
Регистрация: 07.11.2013
Сообщений: 165
19.08.2014, 19:30  [ТС]
если есть минутка пояснить что происходит для чайника ну запросы я понимаю а как все в скопе пашет только приблизительно!
0
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
19.08.2014, 19:42
Цитата Сообщение от cinema4d Посмотреть сообщение
если есть минутка пояснить что происходит для чайника ну запросы я понимаю а как все в скопе пашет только приблизительно!
по идее оно должно отобразить изначально пустую таблицу с добавлением наименования модели и количествами по полям размер/цвет. собственно, таблицы "sizes" и "colors" -- вспомогательные, там лежат индексы размеров и цветов, ну и идешники, чтобы удобнее было сортировать данные при выборке.

таблица products создана от балды, там только наименование модели сейчас нужно, описание и метка времени добавления добавлены просто так а в products_amounts -- данные по модели о наличии в зависимости от размера и цвета. там поля size и color это значения id в таблицах sizes и colors соответственно

конкретно в этом примере я сделал, чтобы была форма добавления только нового продукта и вывод уже существующих в таблице products после добавления. в принципе обновление данных для модели там будет несложно добавить по аналогии
1
0 / 0 / 2
Регистрация: 07.11.2013
Сообщений: 165
19.08.2014, 19:59  [ТС]
разбираю, но все таки скажите а можно както по деревянному тоже самое написать для тупых))! знаю это время! если оно будет? или я уже тупей некуда как говорится!)
0
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
19.08.2014, 20:11
Цитата Сообщение от cinema4d Посмотреть сообщение
а можно както по деревянному тоже самое написать для тупых
в смысле код проще сделать или описать как оно работает проще?
0
0 / 0 / 2
Регистрация: 07.11.2013
Сообщений: 165
20.08.2014, 00:26  [ТС]
а как в action.php это все принять в обработчик или он тут уже не нужен?? у меня заказы падают по сессии пользователя $customer в basket временно, тоесть туда перевести products_amount ?

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
 
session_start();
 
include_once'bd.php';
 
if(isset($_GET['id']))
{
$id_cat = $_GET['id_cat'];
 echo $id_mod = $_GET['id'];
 $customer = session_id();
 $quantity = 1;
 $datatime = time();
 $sql_add_basket = "INSERT INTO basket (customer, id_mod, quantity, datatime) VALUES ('$customer', $id_mod, $quantity, $datatime)";
 
 $query_add_basket = mysql_query($sql_add_basket) or die (mysql_error());
 
$redicet = $_SERVER['HTTP_REFERER'];
@header ("Location: $redicet");
 
}
Добавлено через 2 минуты
ну если есть возможность код проще в смысле для чайника ) ну может есть какой нить тапорный древний способ ??

Добавлено через 43 минуты
name=\"modelname\" надо передать?

Добавлено через 3 часа 14 минут
serialize ??
0
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
20.08.2014, 10:31
Цитата Сообщение от cinema4d Посмотреть сообщение
а как в action.php это все принять в обработчик или он тут уже не нужен??
а что там вообще происходит. вернее, вопрос такой, что эта таблица должна делать при заполнении ее количеством и нажатии кнопки "ОК"?
код можно сделать проще, если, к примеру, хранить в таблице с количествами примерно такую структуру
 
model
трусы
то есть цвета это колонки таблицы, а размер это строковое значение, которое заполняется вместе с моделью и количеством

Добавлено через 7 минут
вернее вот так
modelsizeblublggr...
трусыxs10987...
0
0 / 0 / 2
Регистрация: 07.11.2013
Сообщений: 165
20.08.2014, 10:45  [ТС]
Да, все верно есть некий товар который при нажатии кнопки в корзину
PHP/HTML
1
<a href='add_basket.php?id=<?=$row_mod["id"]?>'>в заказ</a>
уходит в корзину, но не просто а клиент должен указать кол-во цветов и каких размеров во! а потом в баскет

Добавлено через 5 минут
и покажите ЧАЙНИКУ как моя таблица выглядит вот в таком виде как ниже, до 3х ночи вкуривал по массивам но на своем проще понять

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$color ["bl"] = array (
 
"xs" => $xs,
"s" => ' 1 ',
"m" => ' 15 ',
"l" => ' 20 ',
 
);
 
$color ["w"] = array (
 
"xs" => '5',
"s" => ' 1 ',
"m" => ' 15 ',
"l" => ' 20 ',
 
);
 
$color ["y"] = array (
 
"xs" => '4',
"s" => ' 1 ',
"m" => ' 15 ',
"l" => ' 20 ',
 
);
трусы ДАЖЕ НЕ НАДО САМУ таблицу цветов и размеров привязать к товару и все тоесть выбрал футболку проставил размеры и SUBMINT
0
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
20.08.2014, 11:19
тут еще есть такой нюанс, что не для каждого товара будет полный набор размеров и цветов, соответственно оно в таблице с товарами тоже должно быть, какое доступно и уже в зависимости от этого будет выводиться таблица с выбором цветов и размеров

по таблице с заказом, думаю, что нужно туда добавить поля с размером и цветом (таблицы products и products_amount будут не нужны, я их для примера использовал)
customerid_modsizecolorquantitydatatime
поля size и color с типом данных INT

не совсем мне правда понятно, зачем делать временный инсерт в базу с количеством "1". наверное можно было бы обойтись и без него, а вставку сделать, когда уже выбраны цвета с количествами

сама таблица с выбором почти без изменений, только вместо текстового поля modelname нам будет нужен хидден с id модели
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
if(isset($_GET['id']))
{
    //здесь возможно будет получение информации о продукте по поводу наличия размеров и цветов и последующего исключения их их выбора
 
    $sizes = array();
 
    $ressizes = mysql_query("SELECT name FROM sizes ORDER BY id");
 
    if(mysql_num_rows($ressizes) > 0)
    {
        while($rowsizes = mysql_fetch_array($ressizes, MYSQL_ASSOC))
        {
            $sizes[] = $rowsizes["name"];
        }
    }
                                      
    $colors = array();
 
    $rescolors = mysql_query("SELECT name FROM colors ORDER BY id");
 
    if(mysql_num_rows($rescolors) > 0)
    {
        while($rowcolors = mysql_fetch_array($rescolors, MYSQL_ASSOC))
        {
            $colors[] = $rowcolors["name"];
        }
    }
 
    //пример с добавлением одного наименования
    echo "<form action=\"action.php\" method=\"post\">";
 
    //здесь id модели, который был получен по гету
    echo "<input type=\"hidden\" name=\"model\" value=\"".$_GET["id"]."\">";
 
    echo "<table style=\"font-size:11px\" border=\"1px\" bordercolor=\"#FFFFFF\">";
 
    echo "<tr>";
 
    echo "<td class=\"head_tb\">размер</td>";
 
    foreach($colors as $c)
    {
        echo "<td class=\"head_tb\"><img src=\"../admin/imge/color_".$c.".png\" /></td>";
    }
 
    echo "</tr>";
 
    foreach($sizes as $s)
    {
        echo "<tr>";
 
        echo "<td class=\"size_tb\">".strtoupper($s)."</td>";
 
        foreach($colors as $c)
        {
            echo "<td class=\"size_tb\"><input name=\"".$s."_".$c."\" class=\"input\" type=\"text\" value=\"0\"></td>";
        }
    
        echo "</tr>";
    }
 
    echo "<tr>";
    echo "<td><input name=\"submit\" type=\"submit\" value=\"OK\"></input></td>";
    echo "</tr>";
 
    echo "</form>";
 
    echo "</table>";
}
обработчик
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//обработчик формы при нажатии ОК
session_start();
include_once'bd.php';
 
if(isset($_POST["submit"]) && $_POST["submit"] == "OK")
{
    $arr = $_POST;
    $model = $arr["model"];
 
    $id_mod = $arr["model"];
    $customer = session_id();
    $datatime = time();
 
    unset($arr["submit"]);
    unset($arr["model"]);
 
    $sizesinsert = array();
 
    $ressizes = mysql_query("SELECT * FROM sizes ORDER BY id");
 
    if(mysql_num_rows($ressizes) > 0)
    {
        while($rowsizes = mysql_fetch_array($ressizes, MYSQL_ASSOC))
        {
            $sizesinsert[$rowsizes[$name]] = $rowsizes["id"];
        }
    }
                                      
    $colorsinsert = array();
 
    $rescolors = mysql_query("SELECT * FROM colors ORDER BY id");
 
    if(mysql_num_rows($rescolors) > 0)
    {
        while($rowcolors = mysql_fetch_array($rescolors, MYSQL_ASSOC))
        {
            $colorsinsert[$rowcolors["name"]] = $rowcolors["id"];
        }
    }
 
    $query = "INSERT INTO basket (customer, id_mod, size, color, quantity, datatime) VALUES ";
 
    $insertarr = array();
 
    foreach($arr as $key=>$value)
    {
        $index = explode("_", $key);
 
        if(count($index) == 2 && !empty($sizesinsert[$index[0]]) && !empty($colorsinsert[$index[1]]))
        {
            $insertarr[] = "('".$customer."', '".mysql_real_escape_string($id_mod)."', '".$sizesinsert[$index[0]]."', '".$colorsinsert[$index[1]]."', '".mysql_real_escape_string($value)."', '".$datatime."')";
        }
    }
 
    if(!empty($insertarr))
    {
        $query = $query.implode(",", $insertarr);
        mysql_query($query);
    }
 
    //не уверен, что это тут еще нужно, может быть редирект будет другой, уже не на добавление в корзину, а список продуктов в корзине или что-то подобное
    $redicet = $_SERVER['HTTP_REFERER'];
    @header ("Location: $redicet");
}
1
0 / 0 / 2
Регистрация: 07.11.2013
Сообщений: 165
20.08.2014, 12:00  [ТС]
Спасибо!!!! за подмогу но ньюас неее!!)))) не важно есть или нет если нет там 0 по умолчанию и в карзину например СИНИЙ XS нету ИЛИ СИНЕГО ВООБЩЕ НЕТУ все равно графически он будет но с 0 м!

скажите

а как переменные из POST кидать в массив вот например

PHP
1
2
3
4
5
6
7
8
9
10
$xs = 110;
 
$bl = array (
 
"xs" => $xs,
"s" => ' 1 ',
"m" => ' 15 ',
"l" => ' 20 ',
 
);
а если так
PHP
1
2
3
4
5
6
7
8
$w = array (
 
"xs" => $xs,
"s" => ' 1 ',
"m" => ' 15 ',
"l" => ' 20 ',
 
);
то и там и там $xs = 110;
а как определить к другому тс. подмассиву?

Добавлено через 17 минут
не так написал

PHP
1
2
3
4
5
6
7
8
9
10
$xs = 110;
 
$color ['$bl'] = array (
 
"xs" => $xs,
"s" => ' 1 ',
"m" => ' 15 ',
"l" => ' 20 ',
 
);
и тут xs
PHP
1
2
3
4
5
6
7
8
$color ['$w'] = array (
 
"xs" => $xs,
"s" => ' 1 ',
"m" => ' 15 ',
"l" => ' 20 ',
 
);
0
0 / 0 / 2
Регистрация: 07.11.2013
Сообщений: 165
21.08.2014, 23:46  [ТС]
MAV скажите вот форма кидается при сабмите а как это все с id товаром переслать??

вот так я делал раньше
PHP/HTML
1
<a style = "color:#ffffff" href='add_basket.php?id=<?=$myrow["id"]?>'>bs</a>
Добавлено через 8 часов 14 минут
вот что пришло из аброботчика

Code
1
Array ( [model] => 1 [xs_blu] => 0 [xs_bl] => 5 [xs_g] => 0 [xs_gr] => 0 [xs_w] => 0 [xs_y] => 0 [xs_r] => 0 [xs_fl] => 0 [xs_bg] => 0 [s_blu] => 0 [s_bl] => 0 [s_g] => 0 [s_gr] => 0 [s_w] => 0 [s_y] => 0 [s_r] => 0 [s_fl] => 0 [s_bg] => 0 [m_blu] => 0 [m_bl] => 0 [m_g] => 0 [m_gr] => 0 [m_w] => 0 [m_y] => 0 [m_r] => 0 [m_fl] => 0 [m_bg] => 0 [l_blu] => 0 [l_bl] => 0 [l_g] => 0 [l_gr] => 0 [l_w] => 0 [l_y] => 0 [l_r] => 0 [l_fl] => 0 [l_bg] => 0 [xl_blu] => 0 [xl_bl] => 0 [xl_g] => 0 [xl_gr] => 0 [xl_w] => 0 [xl_y] => 0 [xl_r] => 0 [xl_fl] => 0 [xl_bg] => 0 [xxl_blu] => 0 [xxl_bl] => 0 [xxl_g] => 0 [xxl_gr] => 0 [xxl_w] => 0 [xxl_y] => 0 [xxl_r] => 0 [xxl_fl] => 0 [xxl_bg] => 0 [submit] => OK ) Array ( ) INSERT INTO basket (customer, id_mod, size, color, quantity, datatime) VALUES ('bjep6pufudbg9345f061fm4q85', '1', '1', '1', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '1', '2', '5', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '1', '3', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '1', '4', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '1', '5', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '1', '6', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '1', '7', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '1', '8', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '1', '9', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '2', '1', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '2', '2', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '2', '3', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '2', '4', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '2', '5', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '2', '6', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '2', '7', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '2', '8', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '2', '9', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '3', '1', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '3', '2', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '3', '3', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '3', '4', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '3', '5', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '3', '6', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '3', '7', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '3', '8', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '3', '9', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '4', '1', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '4', '2', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '4', '3', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '4', '4', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '4', '5', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '4', '6', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '4', '7', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '4', '8', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '4', '9', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '5', '1', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '5', '2', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '5', '3', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '5', '4', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '5', '5', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '5', '6', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '5', '7', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '5', '8', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '5', '9', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '6', '1', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '6', '2', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '6', '3', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '6', '4', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '6', '5', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '6', '6', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '6', '7', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '6', '8', '0', '1408646393'),('bjep6pufudbg9345f061fm4q85', '1', '6', '9', '0', '1408646393')
а где кол во не пойму и как это обратно собрать?
0
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
23.08.2014, 09:08
Лучший ответ Сообщение было отмечено cinema4d как решение

Решение

Цитата Сообщение от cinema4d Посмотреть сообщение
а как это все с id товаром переслать??
id товара это $_POST["model"] который получается в
PHP
1
echo "<input type=\"hidden\" name=\"model\" value=\"".$_GET["id"]."\">";
просто при обработке сабмита формы нужно избавиться от двух индексов в $_POST, чтобы обрабатывать только индексы, где лежит количество и чтобы этот идешник и кнопка не мешали. для этого и написано
PHP
1
2
unset($arr["submit"]);
unset($arr["model"]);
Цитата Сообщение от cinema4d Посмотреть сообщение
а где кол во не пойму и как это обратно собрать?
количества лежат во всех элементах $_POST кроме ["submit"] и ["model"], то есть типа ["xs_blu"]
1
0 / 0 / 2
Регистрация: 07.11.2013
Сообщений: 165
23.08.2014, 11:35  [ТС]
подскажите плз, да туплю но не могу собрать это из базы обратно покажите как! кол - во попадает в столбец количество

Миниатюры
Как лучше реализовать большую таблицу? Массивом или по другому?  
0
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
23.08.2014, 12:07
Лучший ответ Сообщение было отмечено cinema4d как решение

Решение

думаю, что-то в этом роде нужно
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
$sizes = array();
 
$ressizes = mysql_query("SELECT id, name FROM sizes ORDER BY id");
 
if(mysql_num_rows($ressizes) > 0)
{
    while($rowsizes = mysql_fetch_array($ressizes, MYSQL_ASSOC))
    {
        $sizes[$rowsizes["id"]] = $rowsizes["name"];
    }
}
                                      
$colors = array();
 
$rescolors = mysql_query("SELECT id, name FROM colors ORDER BY id");
 
if(mysql_num_rows($rescolors) > 0)
{
    while($rowcolors = mysql_fetch_array($rescolors, MYSQL_ASSOC))
    {
        $colors[$rowcolors["id"]] = $rowcolors["name"];
    }
}
 
$res = mysql_query("SELECT * FROM basket WHERE customer='21434fdsfds5' AND id_mod='1' ORDER BY size ASC, color ASC");
 
if(mysql_num_rows($res) > 0)
{
    echo "Модель: 1<br />";
 
    $tablecolorsarr = array(); 
    $values = array();
 
    while($row = mysql_fetch_array($res, MYSQL_ASSOC))
    {
        $tablecolorsarr[] = $row["color"];
 
        if(empty($values[$sizes[$row["size"]]]))
        {
            $values[$sizes[$row["size"]]] = array();
        }
 
        $values[$sizes[$row["size"]]][$colors[$row["color"]]] = $row["quantity"];
    }
 
    $tablecolors = array_unique($tablecolorsarr);
 
    echo "<table style=\"font-size:11px\" border=\"1px\" bordercolor=\"#FFFFFF\">";
    echo "<tr>";
 
    echo "<td class=\"head_tb\">размер</td>";
 
    foreach($tablecolors as $c)
    {
        echo "<td class=\"head_tb\"><img src=\"../admin/imge/color_".$colors[$c].".png\" /></td>";
    }
 
    echo "</tr>";
 
    foreach($values as $key=>$productscolors)
    {
        echo "<tr>";
 
        echo "<td class=\"size_tb\">".strtoupper($key)."</td>";
 
        foreach($productscolors as $c)
        {
            echo "<td class=\"size_tb\">".$c."</td>";
        }
            
        echo "</tr>";
    }
 
    echo "</table>";
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.08.2014, 12:07
Помогаю со студенческими работами здесь

Как лучше: создать одну таблицу стилей css или несколько?
Привет. Попробовал не пихать всё в один файл style.css, а сделать несколько таких файлов: style1.css, style2.css, style3.css. Всё работает...

Как лучше сделать большую базу данных?
Уважаемые знатоки, подскажите, пожалуйста, как лучше сделать большую базу данных. Уже несколько дней сижу и перечитываю все возможные...

Что лучше? Несколько условии или один цикл с массивом?
Всем привет! На сайте есть скрипт с несколькими условиями(довольно таки много условии). И ответ я получаю через 800-850 мс. Как быть,...

Как сохранить большую таблицу в pdf?
Добрый день. Делаю расписание универское. Таблица большая. Хочу сделать ее в pdf. Таблица готова, однако, после сохранения в pdf, она...

Как вместить большую таблицу в Div
День добрый. Помогите решить трабл. Проблема в том что в дифе .centr находиться таблица в которую выгружаются данный с Mysql. Из-за...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru