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

Таблица на PHP с массивами

27.09.2019, 11:27. Показов 1650. Ответов 27

Студворк — интернет-сервис помощи студентам
Привет ребя, мне надо массив такого типа превратить в таблицу:
array (
0 =>
array (
'Product name' => '"Product 1"',
'Qty' => '5',
'Warehouse' => 'WH1
',
),
1 =>
array (
'Product name' => '"Product 2"',
'Qty' => '5',
'Warehouse' => 'WH1',
),
)
Вот ссылка как должно ето выглядить:
Не получается у меня превратить етот масив в таблицу, помогите неуку. И еще: дочерных массивов может быть больше чем 2 ( может 3 может 5 ) и надо как то через цикл что бы он перебирал все существующие масиви, заранее спасибо

Добавлено через 1 минуту
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.09.2019, 11:27
Ответы с готовыми решениями:

Работа с массивами php
Возникли проблемы с этим заданием.Многомерный ассоциативный массив с данными, каждый элемент должен содержать в себе Имя, Фамилию,Отчество,...

Работа с массивами PHP
Недавно начал изучать php и столкнулся с трудностями в этом задание.Нужно заполнить одномерный массив случайными данными(10 элементов,...

работа с массивами в php
Здравствуйте! Есть вот такая задача - необходимо преобразовать массив <?php $test = array( ...

27
0 / 0 / 0
Регистрация: 27.09.2019
Сообщений: 16
27.09.2019, 11:30  [ТС]
Не смог залить ссылку, кинул скриншот
Миниатюры
Таблица на PHP с массивами  
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
27.09.2019, 15:10
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
<?php
$arr = array(
    0 =>
    array(
        'Product_name' => '"Product 1"',
        'Qty' => '5',
        'Warehouse' => 'WH1',
    ),
    1 =>
    array(
        'Product_name' => '"Product 2"',
        'Qty' => '5',
        'Warehouse' => 'WH1',
    ),
);
 
 
?>
<table border="1">
    <tr>
        <td>Product name</td>
        <td>Qty</td>
        <td>Warehouse</td>
    </tr>
    <?php foreach($arr as $a){ ?>
    <tr>
        <td><?php echo $a['Product_name']; ?></td>
        <td><?php echo $a['Qty']; ?></td>
        <td><?php echo $a['Warehouse']; ?></td>
    </tr>
    <?php } ?>
</table>
1
0 / 0 / 0
Регистрация: 27.09.2019
Сообщений: 16
27.09.2019, 17:04  [ТС]
Спасибо конечно, но есть один нюанс: этот массив я предоставил как пример, сам массив должен извлекатся из файла ( я буду сохранять прошлую таблицу и вызывать ее при перезагрузке сайта для обновление ), так что метод типа вашего не совсем уместен. Вызывать массив я буду функцией $base_file = file("base/array1.txt"); поэтому стоит использовать переменную $base_file , если в код вписать print_r($file_base) получим то что я уже кинул ранее, и все должно быть написано в php даже сам html
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
27.09.2019, 17:12
Цитата Сообщение от zhulu4 Посмотреть сообщение
Вызывать файл я буду функцией $base_file = file("base/array1.txt");
ну и в чем проблема?
перебирайте $base_file в цикле
Цитата Сообщение от zhulu4 Посмотреть сообщение
и все должно писатся в php даже сам html
а нафига html выводить при помощи php? чтобы читать код не удобно было?
1
0 / 0 / 0
Регистрация: 27.09.2019
Сообщений: 16
27.09.2019, 17:32  [ТС]
Пишу в php а не html потому что у меня стоит if, как это работает? При загрузке файла на сервер создается переменная и туда вставлются данные с файла, а дальше стоит условие if/else : если переменная не пустая данные берутся оттуда и формируется таблица, если переменная пустая и тут уже должен быть код который вы скинули, else срабатывает тогда, когда файл не был загружен после перезагрузки страницы и данные надо брать с сервера только, и ваш код выдает Illegal string offset если я вставлю в ваш код свою переменную массива
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
27.09.2019, 17:36
лучше покажите весь код
0
0 / 0 / 0
Регистрация: 27.09.2019
Сообщений: 16
27.09.2019, 18:01  [ТС]
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
<!DOCTYPE html>
<html>
    <head>
      <meta charset="utf-8">
      <title>Моя сторінка на PHP для завдання!</title>
    </head>
    <body>
      <h1>
        <center> Таблиця залишків продуктів на складі </center>
      </h1>
 
      <?php
 
 
$base_file = file("base/array1.txt");
//var_dump($base_file);
 
 
//echo build_table($base_file);
 
if (($_FILES['Userbase']['name']!="")){
 
 $target_dir = "upload/";
 $file = $_FILES['Userbase']['name'];
 $path = pathinfo($file);
 $filename = $_FILES['Userbase']['name'];
 
 $ext = $path['extension'];
 $temp_name = $_FILES['Userbase']['tmp_name'];
 $path_filename_ext = $target_dir.$filename;
 
if (file_exists($path_filename_ext)) {
 echo "Sorry, file already exists.";
 }else{
 
 move_uploaded_file($temp_name,$path_filename_ext);
 echo "Congratulations! File Uploaded Successfully.";
 
 
 
 
  $record = [];
  if ($file_lines = file("upload/" . $filename)) {
        
    foreach ($file_lines as $key => $value) {
      $arr = explode("\n", trim($value));
    array_push($record,explode(',', $value));
    }
}
 }
}
 
    function build_table($array1){                              
    $html = '<center><table border="1" align="center" width="15%" height="50"></center>'; 
    $html .= '<tr>';                                    
    if(isset($array1) && !empty($array1)){
      foreach($array1[0] as $key=>$value){              
            $html .= '<th>' . htmlspecialchars($key) . '</th>'; 
        }
    }
    $html .= '</tr>'; 
 
    foreach( $array1 as $key=>$value){ 
        $html .= '<tr>';
        foreach($value as $key2=>$value2){
                    $html .= '<td>' . htmlspecialchars($value2) . '</td>';  
        }   
        $html .= '</tr>';
    }
 
 
    $html .= '</table>';
    return $html; 
    } 
  $array1 = [];
    if(isset($record)){
      foreach ($record as $key => $value) {
 
        $array = [];
        $array['Product name'] = $value[0];
        $array['Qty'] = $value[1];
        $array['Warehouse'] = $value[2];
      array_push($array1, $array);
      }
    }else{
    // Тут надо считать $file_base
     }
    if(sizeof($array1) != 0){
        echo build_table($array1);  
        file_put_contents('base/array1.txt', var_export($array1, TRUE)); 
    }
    ?>
        <p align="center"> Оновлення продуктів на складі </p>
      <p align="center"> Select *csv file! </p> 
        
        <form align="center" enctype="multipart/form-data" method="post">
        <p><input type="file" name="Userbase">
        <input type="submit" value="Send file"></p>
        </form> 
 
 
    </body>
</html>
Знаю что все через костыли, но я еще новичок и многому нужно поучится
Есть закоментированые дампы что бы проверить доходят ли данные

Добавлено через 23 минуты
Вообщем, что должен делать етот код: принимать файл и вынимать с него данные и формировать таблицу ( после перезагрузки таблица должна сохранять свои значение ), при последующей загрузке файлов значение qty и warehouse должны ссумироватся, а если значение qty станет 0 или меньше ета строка должна исчезать, все делается на чистом php и ничего более, файлы для подгрузки формата .cvs и представляют собой строки типа "Product 1",5,WH1 , каждная строка с нового рядка
0
0 / 0 / 0
Регистрация: 27.09.2019
Сообщений: 16
27.09.2019, 18:18  [ТС]
Предоставляю вам файлы для теста
Вложения
Тип файла: rar тестовіCSV.rar (467 байт, 1 просмотров)
0
0 / 0 / 0
Регистрация: 27.09.2019
Сообщений: 16
27.09.2019, 18:22  [ТС]
Вот скрин с вирустотала что там ничего нету
0
0 / 0 / 0
Регистрация: 27.09.2019
Сообщений: 16
27.09.2019, 18:24  [ТС]
Воот
Миниатюры
Таблица на PHP с массивами  
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
28.09.2019, 11:09
Цитата Сообщение от zhulu4 Посмотреть сообщение
значение qty и warehouse должны ссумироватся,
qty да, а как суммировать warehouse, это же строка?
Цитата Сообщение от zhulu4 Посмотреть сообщение
а если значение qty станет 0 или меньше
если суммировать, как может получиться 0 или меньше? в qty будут и отрицательные числа?
0
0 / 0 / 0
Регистрация: 27.09.2019
Сообщений: 16
28.09.2019, 11:25  [ТС]
При подгрузке файлов будут строки, в которых qty может быть допустим -7 и так получится что сумарно 0, тогда строка должна исчезнуть
Го в пп, обясниш мне что и как я сделал не так, окей?
Ссумировать warehouse? (wh) смотри: если есть 2 строки Product 1, только с разными wh ( допустим 1 и 2 ), тогда должна получится 1 строка product 1 с cсумарным qty и warehouse должно ровняться WH1, WH2, как то так
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
28.09.2019, 11:26
а зачем сохранять загружаемые файлы, вы их потом как-то используете?
0
0 / 0 / 0
Регистрация: 27.09.2019
Сообщений: 16
28.09.2019, 11:32  [ТС]
Сохранять надо таблицу, которая изменится в самом конце, что бы после перезагрузки страницы можна было открыть сайт и увидить ту самую таблицу, с которой последний раз работали ( данные должны где то хранится же )
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
28.09.2019, 11:35
Цитата Сообщение от zhulu4 Посмотреть сообщение
Сохранять надо таблицу, которая изменится в самом конце
это ясно, я о файлах из которых берутся данные для обновления
0
0 / 0 / 0
Регистрация: 27.09.2019
Сообщений: 16
28.09.2019, 11:38  [ТС]
Я об етом даже не думал, в задание не говорилось нужно сохранять файлы или нет, вы думаете рациональнее будет удалять файлы после их чтение?
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
28.09.2019, 17:12
Лучший ответ Сообщение было отмечено zhulu4 как решение

Решение

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
<?php
$base_file = trim(file_get_contents("base/array1.txt"));
$base_file_modification = [];
 
if (!empty($base_file)) {
    foreach (file(("base/array1.txt")) as $bf) {
        $val = explode(',', $bf);
        $base_file_modification[$bf[0]] = $val;
    }
}
 
if (isset($_FILES['Userbase']['name'])) {
    $new_data = file_get_contents($_FILES['Userbase']['tmp_name']);
 
    if (empty(trim($new_data))) {
        echo "Файл пуст";
    } else {
        $new_data_modification = [];
 
        foreach (file($_FILES['Userbase']['tmp_name']) as $nd) {
            $val = explode(',', $nd);
            $new_data_modification[$val[0]][] = $val;
        }
 
        foreach ($new_data_modification as $k => $v) {
            foreach ($v as $vv) {
                if (isset($base_file_modification[$k])) {
                    $base_file_modification[$k][2] = $base_file_modification[$k][2] + ($vv[2]);
                } else {
                    $base_file_modification[$k] = $vv;
                }
 
                if ($base_file_modification[$k][2] <= 0) {
                    unset($base_file_modification[$k]);
                }
            }
        }
 
        if (!empty($base_file_modification)) {
            $output = $base_file_modification;
            $handle = fopen('base/array1.txt', 'w');
            foreach ($base_file_modification as $bfm) {
                fwrite($handle, implode(',', $bfm));
            }
 
            fclose($handle);
            header("Refresh: 0");
        } else {
            $output = $base_file_modification;
        }
    }
} else {
    if (!empty($base_file_modification)) {
        $output = $base_file_modification;
    } else {
        $output = false;
    }
}
 
?> 
<html>
    <head>
        <title>Главная страница</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf8"/>
    </head>
 
    <body>
        <h1>
            <center> Таблиця залишків продуктів на складі </center>
        </h1>
 
        <?php if (isset($output) && $output) { ?>
            <table border="1">
                <tr>
                    <td>product name</td>
                    <td>qty</td>
                    <td>Warehouse</td>
                </tr>
                <?php foreach ($output as $o) { ?>
                    <tr>
                        <td><?php echo $o[1]; ?></td>
                        <td><?php echo $o[2]; ?></td>
                        <td><?php echo $o[3]; ?></td>
                    </tr>
                <?php } ?>
            </table>
            <?php } else { ?>
            <p>Нет данных о товарах</p>
        <?php } ?>
 
        <p align="center"> Оновлення продуктів на складі </p>
        <p align="center"> Select *csv file! </p> 
 
        <form align="center" enctype="multipart/form-data" method="post">
            <p><input type="file" name="Userbase">
                <input type="submit" value="Send file"></p>
        </form>
    </body>
</html>
Добавлено через 1 минуту
данные в файле должны быть как то так
2,Product 2,-1,WH2
добавил впереди идентификатор товара
1
0 / 0 / 0
Регистрация: 27.09.2019
Сообщений: 16
28.09.2019, 17:31  [ТС]
Пасибо за помощь, сейчас попытаюсь разобратся что к чему, но только вопрос: у меня данные типа Product 2,-1,WH2 зачем ета еще 2 впереди, и не подскажешь курсы/книги что бы я поднял свой уровень пхп, безмерно тебе благодарен за помощь, правда =)
При подгрузке файла ничего не происходит, с чем ето может быть связано?
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
28.09.2019, 17:37
Цитата Сообщение от zhulu4 Посмотреть сообщение
зачем ета еще 2 впереди,
Цитата Сообщение от fanatikus Посмотреть сообщение
добавил впереди идентификатор товара
id товара

Добавлено через 1 минуту
Цитата Сообщение от zhulu4 Посмотреть сообщение
При подгрузке файла ничего не происходит, с чем ето может быть связано?
без понятия
у меня работает
проверено
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.09.2019, 17:37
Помогаю со студенческими работами здесь

Денвер не хочет работать с массивами в php
Денвер не хочет работать с массивами в php, нужно решение &lt;?php $arr = ; var_dump($arr); ?&gt; Parse error: syntax...

Таблица в php
Есть таблица &lt;?php $rows = 5; $cols = 5;

PHP и таблица
у меня есть на странице запрос к базе на выборку определенных записей. как сделать чтобы вывод новой записи был в отдельной строке таблице?...

Таблица php
Всем привет. Есть таблица,нужно чтобы например если строка =5 а ячейка 6 она была красным если нет то другое создал вот такой код все...

php таблица
Здравствуйте, есть таблица $query = &quot;SELECT * FROM products $wh&quot;; $query1 = &quot;select * from type&quot;; $result1 =...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru