Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
 Аватар для Филипп12342
0 / 0 / 0
Регистрация: 26.02.2021
Сообщений: 26

Как сделать чтобы у массива был уникальный идентификатор?

23.01.2024, 06:15. Показов 1953. Ответов 11
Метки js, php (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте помогите пожалуйста разобраться с 2 вещами, есть поп-ап с инпутами
HTML5
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
<div class="pop_up" id="pop_up">
                    <div class="po_pup_container" >
                        <div class="pop_up_body" id="pop_up_body">
                            <p>Внесите данные</p>
                            <form action="php/profileUpdate.php" method="post">
                                <div class="form-field">
                                    
                                    <div class="column-row">
                                       <input type="text" name="link_product" class="link_product" placeholder="Ссылка на товар">
                                        <p>Вставьте ссылку с любой площадки</p>
 
                                         <input type="text" name="name_product" class="name_product" placeholder="Название товара">
                                         <p>Укажите Название товара </p> 
                                    </div>
                                    
 
                                    <div style="margin-top: 20px; display: inline-flex;"class="column-row">
                                        <div>
                                            <p>Стоимость</p>
                                            <input type="text" style=" width: 150px;" name="price_product" class="price_product" placeholder="Товара">
                                        </div>
                                        <div>
                                            <p>Размер</p>
                                            <input type="text" style=" width: 150px;" name="size_product" class="size_product" placeholder="См">
                                        </div>
                                        <div>
                                            <p>Доставка</p>
                                            <input type="text" style=" width: 150px;" name="delivery_product" class="delivery_product" placeholder="По китаю">
                                        </div>
                                        <div>
                                            <p>Цвет</p>
                                            <input type="text" style=" width: 150px;" name="color_product" class="color_product" placeholder="Укажите цвет">
                                        </div>
                                        <div>
                                            <p>Количество</p>
                                            <input type="number" style=" width: 150px;" name="quantity_product" class="quantity_product" step="1" min="0" value="1">
                                        </div>
                                    </div>
                                        <div style="margin-top: 20px;  display: inline-flex;"class="column-row">
                                            <div>
                                                <p>Примечани</p>
                                                <textarea  name="comment_product" class="comment_product" id="" cols="50" rows="10"placeholder="Введите примечание"></textarea>
                                            </div>
                                            <div>
                                                <p>Фото</p>        
                                                <input type="file" name="file_product" class="file_product" multiple="multiple">
                                            </div>
                                        </div>
                                    <button type="submit"  value="Добавить К заказу">Добавить К заказу </button>
                                </div>
                                
                            </form>
                            <div class="pop_up_close" id="pop_up_close"></div>
                    </div>
                </div>
            </div>
данные из этого поп-апа должны сохранятся в массив, но как сделать так что бы у массива был уникальный идентификатор?(Заказов может быть не ограниченное количество)
и 2-ой вопрос как выводить эти массивы сразу после после их создания
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.01.2024, 06:15
Ответы с готовыми решениями:

Как сделать, чтобы формат ввода массива с клавиатуры был : a[1] a[2] a[3] ?
как сделать что бы ввода формат ввода массива с клавиатуры был? : a a a ?

Как сделать чтобы текст заголовка был посередине, а в тексте убрать скролл чтобы был весь текст?
Сам код:https://jsfiddle.net/nyqa7bdu/ Код в print.css @media print { div.ChildrenTop{ width: 1000px; height: 80px; } ...

Как сделать чтобы у массива был индекс, который можно подставлять программно?
Пытаюсь нарисовать модель в opengl, точек, треугольников очень много для описания одного например пишу final float...

11
168 / 146 / 32
Регистрация: 03.09.2018
Сообщений: 499
23.01.2024, 08:05
https://www.php.net/manual/ru/function.uniqid.php
0
 Аватар для Филипп12342
0 / 0 / 0
Регистрация: 26.02.2021
Сообщений: 26
25.01.2024, 10:53  [ТС]
а как его потом считывать и выводить ?
0
168 / 146 / 32
Регистрация: 03.09.2018
Сообщений: 499
25.01.2024, 12:58
Заведите БД
0
24 / 19 / 6
Регистрация: 11.02.2022
Сообщений: 45
31.01.2024, 16:56
Филипп12342, я предполагаю что ему не нужно именно "уникальный" ID, форма похожа на "заказ в магазине", следовательно есть какой то покупатель, который как то идентифицируется(имеет свой ID/телефон/E-Mail), хотя... могу ошибаться, если покупатель "новый" (не зарегистрированный), тогда да, нужен уникальный ID, в остальном, можно привязаться к ID пользователя, добавив "номер заказа", это как вариант.

Филипп12342, что вы хотите в итоге получить от этой формы и куда нужно выводить то что будет введено? Очень мало информации...
0
 Аватар для Филипп12342
0 / 0 / 0
Регистрация: 26.02.2021
Сообщений: 26
04.02.2024, 13:27  [ТС]
Да это похоже на заказ в магазине, у каждого зарегистрированного пользователя свой уникальный id по нему я добавляю в таблицу "corzinaOrder" заказ из формы которая указана выше, и данные выводятся на сайте сразу(как на 1 фото,позиций в заказе может быть множество). после чего пользователь заполняет формы доставки адреса и другой информации(2 фото )
и мне нужно что бы после введения информации все оправлялось в таблицу "allOrder"(берутся данные из формы что на фото 2 + в таблицу вносится номер товара и id заказа выглядит это как на фото 3) и "product"(данные берутся из корзины и удаляются + добавляется id заказа).
Миниатюры
Как сделать чтобы у массива был уникальный идентификатор?   Как сделать чтобы у массива был уникальный идентификатор?   Как сделать чтобы у массива был уникальный идентификатор?  

0
 Аватар для Филипп12342
0 / 0 / 0
Регистрация: 26.02.2021
Сообщений: 26
04.02.2024, 13: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
41
42
43
44
45
46
47
48
$result = mysqli_query($connect,"SELECT * FROM `allorder` WHERE `id_user`='$userId'");
        $rez = mysqli_fetch_assoc($result); //ЗАПОЛНЕНИЕ ПЕРЕМЕННОЙ ВСЕХ ДАННЫХ ИЗ корзины С ПРОВЕРКОЙ НА ID
           
            
           $rez = $rez['id_order']; 
       
           
           $f = 100
    for ($i=1; $i < $f; $i++) { // ЦИКЛ ПОИСКА ПУСТОГО ID 
        
                
        if($i == $rez ){//ПРОВЕРКА НА ПУСТОТУ
           
            $f= $f+1;
       
        }else{
            $CheckCorz=mysqli_query($connect,"SELECT * FROM `corzinaOrder` WHERE `id_user` = $userId");
            while ($row = mysqli_fetch_assoc($CheckCorz)) {
                    
                $numTov=$row['numTov']; 
                $link = $row['link'];
                $name =$row['name'];
                $price =$row['price'];
                $size = $row['size'];
                $delivery = $row['delivery'];
                $color=$row['color'];
                $comment=$row['comment'];
                $quantity=$row['quantity'];
                $file_tovar=$row['file_tovar'];
                mysqli_query($connect,"INSERT INTO `products` (`numTov`, `id_order`, `link`, `name`, `price`, `size`, `delivery`, `color`, `comment`, `quantity`, `file_tovar`, `id_user`)
                VALUES ('$numTov','$i','$link','$name','$price','$size','$delivery','$color','$comment','$quantity','$file_tovar','$userId')");
 
 
                mysqli_query($connect,"DELETE FROM `corzinaOrder` 
                WHERE `numTov` = '$numTov'");
 
                
                mysqli_query($connect,"INSERT INTO `allorder`(`id_order`, `numTov`, `id_user`, `deliveryCity`, `deliveryAdress`, `deliveryFIO`, `deliveryPhone`, `deliveryType`, `deliveryComment`, `insuranced`, `orderPaceges`) 
                VALUES ('$i','$numTov','$userId','$orderCity','$orderAdress','$orderFIO','$orderPhone','$deliveryType','$textareaOrder','$orderInsuranced','$deliveryPaceges')");
                
               
                }   
                
                
                header('location:../order.php');
           
        }
        }
0
 Аватар для Филипп12342
0 / 0 / 0
Регистрация: 26.02.2021
Сообщений: 26
05.02.2024, 16:57  [ТС]
сделал вот так... работает но иногда грузит по минуте.. в чем может быть проблема и как это решить?

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
// Запрос для получения всех id пользователей из таблицы
$sql = "SELECT * FROM allorder WHERE id_user='$userId'";
$result = $connect->query($sql);
 
if ($result->num_rows > 0) {
    // Массив для хранения занятых значений id
    $occupied_ids = array();
 
    // Чтение каждого результата запроса и добавление его в массив занятых значений id
    while ($row = $result->fetch_assoc()) {
        $occupied_ids[] = $row['id_order'];
    }
 
    // Поиск первого не занятого значения id
    for ($i = 1; ; $i++) {
        if (!in_array($i, $occupied_ids)) { 
            $sqlAdd = "SELECT * FROM corzinaOrder WHERE id_user = '$userId'";
            $resultAddCorz = $connect->query($sqlAdd);
 
            while ($rowAdd = $resultAddCorz->fetch_assoc()) {
                $numTov=$rowAdd['numTov']; 
                $link = $rowAdd['link'];
                $name =$rowAdd['name'];
                $price =$rowAdd['price'];
                $size = $rowAdd['size'];
                $delivery = $rowAdd['delivery'];
                $color=$rowAdd['color'];
                $comment=$rowAdd['comment'];
                $quantity=$rowAdd['quantity'];
                $file_tovar=$rowAdd['file_tovar'];
 
                // Используйте подготовленные выражения для защиты от SQL-инъекций
                // Вместо этой строки:
                // mysqli_query($connect,"INSERT INTO products (numTov, id_order, link, name, price, size, delivery, color, comment, quantity, file_tovar, id_user)
                // VALUES ('$numTov','$i','$link','$name','$price','$size','$delivery','$color','$comment','$quantity','$file_tovar','$userId')");
 
                $stmt = $connect->prepare("INSERT INTO products (numTov, id_order, link, name, price, size, delivery, color, comment, quantity,
                    file_tovar,id_user) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
                $stmt->bind_param("sssssssssssi", $numTov,$i,$link,$name,$price,$size,$delivery,$color,$comment,$quantity,
                    $file_tovar,$userId);
                $stmt->execute();
 
                mysqli_query($connect,"DELETE FROM corzinaOrder WHERE numTov = '$numTov'");
 
                mysqli_query($connect,"INSERT INTO `allorder`(`id_order`, `numTov`, `id_user`, `deliveryCity`, `deliveryAdress`, `deliveryFIO`, `deliveryPhone`, `deliveryType`, `deliveryComment`, `insuranced`, `orderPaceges`) 
                VALUES ('$i','$numTov','$userId','$orderCity','$orderAdress','$orderFIO','$orderPhone','$deliveryType','$textareaOrder','$orderInsuranced','$deliveryPaceges')");
            }
            
            header('location:../order.php');
        }
    }
} else {
    $i = 1;
$sqlAdd = "SELECT * FROM corzinaOrder WHERE id_user = '$userId'";
$resultAddCorz = $connect->query($sqlAdd);
while ($rowAdd = $resultAddCorz->fetch_assoc()) {
    $numTov=$rowAdd['numTov']; 
    $link = $rowAdd['link'];
    $name =$rowAdd['name'];
    $price =$rowAdd['price'];
    $size = $rowAdd['size'];
    $delivery = $rowAdd['delivery'];
    $color=$rowAdd['color'];
    $comment=$rowAdd['comment'];
    $quantity=$rowAdd['quantity'];
    $file_tovar=$rowAdd['file_tovar'];
 
    $stmt = $connect->prepare("INSERT INTO products (numTov, id_order, link, name, price, size, delivery, color, comment, quantity,
    file_tovar,id_user) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
        $stmt->bind_param("sssssssssssi", $numTov,$i,$link,$name,$price,$size,$delivery,$color,$comment,$quantity,
            $file_tovar,$userId);
        $stmt->execute();
 
        mysqli_query($connect,"DELETE FROM corzinaOrder WHERE numTov = '$numTov'");
 
        mysqli_query($connect,"INSERT INTO `allorder`(`id_order`, `numTov`, `id_user`, `deliveryCity`, `deliveryAdress`, `deliveryFIO`, `deliveryPhone`, `deliveryType`, `deliveryComment`, `insuranced`, `orderPaceges`) 
              VALUES ('$i','$numTov','$userId','$orderCity','$orderAdress','$orderFIO','$orderPhone','$deliveryType','$textareaOrder','$orderInsuranced','$deliveryPaceges')");
}
header('location:../order.php');
 
}
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,815
05.02.2024, 18:24
Цитата Сообщение от Филипп12342 Посмотреть сообщение
в чем может быть проблема и как это решить?
Сделайте у таблицы allorder поле id_order - AUTO INCREMENT
Сначала делаете запрос на создание заказа, не указывая id, он сам создасться,
Получаете id через $mysqli->insert_id
Потом записываете элементы заказа.
Потом уже очищаете корзину.
Не забудьте все обернуть в транзацию.

Добавлено через 13 минут
Филипп12342, Второй способ, это генерировать UUID. Для этого можно использовать библиотеку https://github.com/ramsey/uuid
uuid имеет формат в виде длинной строки и гарантирует уникальность, что удобно так как id-шники не повторяются в разных таблицах, проще мигрировать данные между Базами и т.д.
0
 Аватар для Филипп12342
0 / 0 / 0
Регистрация: 26.02.2021
Сообщений: 26
05.02.2024, 20:06  [ТС]
можете пожалуйста вкратце объяснить как обернуть в транзакцию? и было бы вообще прекрасно если покажете какой-нибудь пример 1 способа)
0
 Аватар для Филипп12342
0 / 0 / 0
Регистрация: 26.02.2021
Сообщений: 26
06.02.2024, 14:23  [ТС]
сделал вот так но не добавляет в таблицы но удаляет из таблицы корзина... проблема в синтаксесе ? или я что то напутал с полями таблиц?(фото)
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
    mysqli_begin_transaction($connect);
                $query = "INSERT INTO `allorder`(`numTov`, `id_user`, `deliveryCity`, `deliveryAdress`, `deliveryFIO`, `deliveryPhone`, `deliveryType`, `deliveryComment`, `insuranced`, `orderPaceges`) 
                  VALUES ('$numTov','$userId','$orderCity','$orderAdress','$orderFIO','$orderPhone','$deliveryType','$textareaOrder','$orderInsuranced','$deliveryPaceges')";
                if($connect->query($query)==true){
                    $lastId = mysqli_insert_id($connect);
                    echo"id--- " . $lastId;
                } mysqli_rollback($connect);
 
            $sqlAdd = "SELECT * FROM `corzinaOrder` WHERE `id_user` = '$userId'";
            $resultAddCorz = $connect->query($sqlAdd);
 
            while ($rowAdd = $resultAddCorz->fetch_assoc()) {
 
                $orderCity=$_POST['input_order_city'];
                $orderAdress=$_POST['input_order_adress'];
                $orderFIO=$_POST['input_order_FIO'];
                $orderPhone=$_POST['input_order_Phone'];
                $deliveryType = $_POST['deliveryMethod'];
                $orderInsuranced=$_POST['Insuranced'];//страховка
                $deliveryPaceges=$_POST['deliveryPaceges'];
                $textareaOrder=$_POST['textareaOrder'];
 
                $numTov=$rowAdd['numTov']; 
                $link = $rowAdd['link'];
                $name =$rowAdd['name'];
                $price =$rowAdd['price'];
                $size = $rowAdd['size'];
                $delivery = $rowAdd['delivery'];
                $color=$rowAdd['color'];
                $comment=$rowAdd['comment'];
                $quantity=$rowAdd['quantity'];
                $file_tovar=$rowAdd['file_tovar'];
               
                 
               
                mysqli_query($connect,"INSERT INTO `products` (`numTov`, `id_order`, `link`, `name`, `price`, `size`, `delivery`, `color`, `comment`, `quantity`, `file_tovar`, `id_user`)
                      VALUES ('$numTov','$lastId','$link','$name','$price','$size','$delivery','$color','$comment','$quantity','$file_tovar','$userId')");
                
               
                mysqli_query($connect,"INSERT INTO `allorder`(`id_order`, `numTov`, `id_user`, `deliveryCity`, `deliveryAdress`, `deliveryFIO`, `deliveryPhone`, `deliveryType`, `deliveryComment`, `insuranced`, `orderPaceges`) 
                VALUES ('$lastId','$numTov','$userId','$orderCity','$orderAdress','$orderFIO','$orderPhone','$deliveryType','$textareaOrder','$orderInsuranced','$deliveryPaceges')");
            }
            mysqli_query($connect,"DELETE FROM `corzinaOrder` WHERE `id_user` = '$userId'");
            exit();
            
            header('location:../order.php');
Миниатюры
Как сделать чтобы у массива был уникальный идентификатор?   Как сделать чтобы у массива был уникальный идентификатор?  
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,815
06.02.2024, 17:28
Филипп12342, 1) У вас первый запрос на создания заказа вызывается до инициализации переменных. Включите вывод ошибок, включая уровень NOTICE. https://karashchuk.com/PHP/err... up_errors/
2) Вы стартуете транзакцию, и тут же ее откатываете, затем в цикле еще раз создаете заказы в каждой итерации.
3) Запросы могут падать с ошибками на стороне БД. Нужно смотреть текст ошибки https://www.php.net/manual/ru/mysqli.error.php
А лучше, чтоб не приходилось каждый запрос проверять и получать текст ошибки, настроить выбрасывание исключений. https://www.php.net/manual/ru/... t-mode.php

И не нужно смешивать ООП и функциональные стили работы с БД. Выберите что-то одно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.02.2024, 17:28
Помогаю со студенческими работами здесь

Как сделать чтобы Label был сверху картинки и был прозрачен?
Как сделать чтобы label был сверху картинки и он был прозрачен?

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

Как сделать так,чтобы ввод цифры игры или выхода был после двоеточия инпута, но список игр был написан внизу?
import random from random import randint def main(): global a a = 1000 global x x = 0 while (x == 0): ...

Как создать уникальный идентификатор?
Нужно написать класс, который содержит имя служащего и его уникальный идентификатор. Снабдить класс конструктором получающим объект string,...

Как сгенерировать уникальный идентификатор
Добрый вечер. Хочу генерировать уникальный идентификатор. Можно брать unix-время. Но адекватно ли будет использовать его в чистом...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru