محمد
5 سال پیش توسط محمد مطرح شد
2 پاسخ

ذخیره مقادیر یک آرایه به صورت رندوم در دیتابیس

سلام
1 سوال داشتم
من یه آرایه از اعداد دارم مثلا:
x1=[1,5,6,18,10,52]

حالا چطور میتونم با زدن یک دکمه مثلا generate که یه تابع خاصی که الگوریتم زیر رو انجام بده برام - در واقع الان ایده میخوام واسه الگوریتم

الگوریتم: بیاد اعداد آرایه رو به صورت رندوم جفت جفت بهشون یه عدد خاص نسبت بده و در دیتابیس ذخیره کنه
ینی مثلا
5و10 رو باهم بهشون یه شماره گروه بده (مثلا:1)
6و1 رو باهم بهشون یه شماره گروه بده (مثلا:2)
18و52 ........(مثلا:3)

ساختار جدول دیتابیسم که میخواد ذخیره بشه اینا به صورت زیر هست:

|num1 | num2 | group_id |

| 1 | 5 | 10 |
| 2 | 6 | 1 |


ثبت پرسش جدید
امیرحسین دشتی زاده
@amirhossein.d.z 5 سال پیش آپدیت شد
0

سلام،
شما توی جدولت group_id رو از نوع auto_increment بذار خودش هر دفعه به ترتیب عدد قرار میده.
برای الگوریتمی هم که میخوای توی php من به این صورت نوشتم :

$arr = [4,9,6,3,7,5,2,8];

$getNum = function (&$arr) {
    $len = count($arr);
    $pos = rand(0, $len-1);
    $num = $arr[$pos];
    unset($arr[$pos]);
    $arr = array_values($arr);
    return $num;
};

$sql = '';
while (count($arr) > 0) {
    $num1 = $getNum($arr);
    $num2 = $getNum($arr);

    $sql .= (empty($sql) ? '' : ',') . "($num1, $num2)";
}

$insertSql = "INSERT INTO MyTable (num1, num2) VALUES $sql";
// run $insertSql in database

محمد
@mohammadhs 5 سال پیش مطرح شد
0

حالا در ادامه مثلا یه آرایه دیگه داریم و روی دکمه generate میزنم

مثلا:
x1=[9,4,21,3]

کاری که میخوام بکنه اینه که آخرین شماره گروه ذخیره شده در دیتابیس رو بگیره و از بعد از اون شماره گروه بده ینی تا گروه شماره 3 با آرایه قبلی توی جدول پر شد.. حالا سطر جدید جدول به صورت زیر باشه

3و9 باهم شماره گروه 4 بگیرن
21و4 باهم شماره گروه 5 بگیرن


امیرحسین دشتی زاده
@amirhossein.d.z 5 سال پیش آپدیت شد
0

سلام،
شما توی جدولت group_id رو از نوع auto_increment بذار خودش هر دفعه به ترتیب عدد قرار میده.
برای الگوریتمی هم که میخوای توی php من به این صورت نوشتم :

$arr = [4,9,6,3,7,5,2,8];

$getNum = function (&$arr) {
    $len = count($arr);
    $pos = rand(0, $len-1);
    $num = $arr[$pos];
    unset($arr[$pos]);
    $arr = array_values($arr);
    return $num;
};

$sql = '';
while (count($arr) > 0) {
    $num1 = $getNum($arr);
    $num2 = $getNum($arr);

    $sql .= (empty($sql) ? '' : ',') . "($num1, $num2)";
}

$insertSql = "INSERT INTO MyTable (num1, num2) VALUES $sql";
// run $insertSql in database

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام