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

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

19.08.2014, 16:28. Показов 5458. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru