مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

boot man

عضویت از 1395/11/19

سوال: چگونگی درگیری دو تیبل برای ارسال یک مطلب php

  • سه شنبه 19 بهمن 1395
  • 23:17
تشکر میکنم


من یکی دو ماهی هست برنامه نویسی یاد گرفتم الان یک مشکل دارم
من میخوام خروجی لینک بشکل زیر باشه
domain.com/Y5PkEx/title
من میخوام وقتی دارم یک پست ارسال کنم به دیتا بیس (در تیبل پست)
یکی برای تیبل پست و دیگری برای کد 6 کارکتری رندم
به این صورت که من از فانکشن زیر استفاده میکنم




function randstring62($len)

{

    $str = "";

    $a = str_shuffle("abcdefghijklmnopqrstuvwxyzABCDEFGHIJK  LMNOPQRSTUVWXYZ0123456789");

    $str .= substr($a, 1, $len);

    return $str;

}

randstring62(6);
و کد مخصوص رو میسازم
اما من نمیخوام این کد رو عینا ببرم ردیف تیبل پست و در فیلد مثلا idcode قرار بدیم
میخوام ابتدا این کد رو ببره تو یک تیبل به نام strings_six قرار بده و بعد آی دی اون رو برداره و بزاره در فیلد idcode ردیف پست ارسالی در تیبل پست

الان کمی برام گنگه اون لحظه ارسال فرم مطلب چطور ابتدا این کد رندوم که بایدم یکتا باشه رو بفرستم در تیبل strings_six و آی دیش رو بگیرم و بزارم داخل فیلد idcode در ردیف پست ارسال شده در تیبل پست

ممنون میشم لطف کنید بهترین حالت ممکن رو بهم پیشنهاد بدین

پاسخ های این پرسش

تعداد پاسخ ها : 1 پاسخ
کاربر سایت

farshadfarokhi

عضویت از 1395/11/20

  • پنجشنبه 21 بهمن 1395
  • 09:27

سلام

برای انجام اینکار اول اون کد رندوم رو باید تولید کنی و بعد کد رو با یک select روی جدول strings_six بررسی کنی که وجود داره یا نه. اگر وجود داشت یک کد دیگه تولید کنی. اینجا باید توجه کنی که این مراحل تا پیدا شدن یک کد منحصربفرد باید ادامه پیدا کنه.

بعد از پیدا شدن، اون کد رو توی جدول strings_six باید insert کنی. حالا برای پیدا کردن id جدول strings_six چند تا راه وجود داره، مثالها رو با pdo میزنم:

۱. بعد از insert کردن توی جدول یک کوئری دیگه بزنی روی جدول و آخرین id رو برگردونی:

try {

    $_mHandler = new PDO("mysql:host=localhost;dbname=database_name", "username","password");

    $statement_handler = $_mHandler->prepare("SELECT id FROM strings_six ORDER BY id DESC LIMIT 1" );

    $execResult = $statement_handler->execute();

    $result = $statement_handler->fetch();

    var_dump($result);

} catch (PDOException $e) {

        echo "error:" . $e->getMessage();

}

۲. مانند مثال بالا یک کوئری بزنی ولی دفعه از توابع mysql استفاده کنی:

try {

    $_mHandler = new PDO("mysql:host=localhost;dbname=database_name", "username","password");

    $statement_handler = $_mHandler->prepare("SELECT LAST_INSERT_ID()" );

    $execResult = $statement_handler->execute();

    $result = $statement_handler->fetch();

    var_dump($result);

} catch (PDOException $e) {

        echo "error:" . $e->getMessage();

}

۳. از توابع خود pdo استفاده کنی:

try {

   $_mHandler = new PDO("mysql:host=localhost;dbname=database_name", "username","password");

   $statement_handler = $_mHandler->prepare("INSERT INTO strings_six (`code`) VALUES ('random_code')" );

            $execResult = $statement_handler->execute();

            var_dump($_mHandler->lastInsertId());

} catch (PDOException $e) {

        echo "error:" . $e->getMessage();

}

که پیشنهاد من راه سوم هست.

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)