نمایش نتایج 1 تا 6 از 6

نام تاپیک: مشکل در کوئری گروهی

  1. #1

    Question مشکل در کوئری گروهی

    سلام خدمت دوستان
    من سوالم رو به صورت یک مثال مطرح میکنم
    من سمت دیتابیس ی جدول دو ستونه دارم که یک ستون نام دانشجو و ستون دیگه نمره اون دانشجو هستش...
    حالا من میخوام مثلا ی تعداد دانشجو رو که اسمشون رو داخل یک آرایه ریختم بفرستم سمت دیتا بیس و دونه دونه نمرات رو بگیره و مثلا یک نمره به نمرش اضافه بکنه و باز توو دیتا بیس ذخیره بکنه (update) کنه

    من راه های زیادی امتحان کردم ولی بعضی اوقات قاطی میکنه مثلا به ترتیب نمرات رو نمیگره بعضی ها رو اصلا بر نمیگردونه بعضی ها رو نمرش رو که مثلا برای آرایه خونه 2 هست رو نمره آرایه خونه 3 رو بر میگردونه ...
    شما دوستان چه راه حلی برای اراسل و دریافت گروهی به سمت دیتابیس دارید ...
    دیتابیس سمت سرور mysql میباشد

    پیشاپیش از پاسخ شما متشکرم ....
    آخرین ویرایش به وسیله ms_online : دوشنبه 14 مرداد 1398 در 23:00 عصر

  2. #2
    مدیر بخش آواتار محمد رضا فاتحی
    تاریخ عضویت
    مهر 1387
    محل زندگی
    کهنسالترین موجود زنده در شهر منه
    پست
    1,181

    نقل قول: مشکل در کوئری گروهی

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

    ________________________

  3. #3
    کاربر دائمی آواتار Nevercom
    تاریخ عضویت
    دی 1387
    محل زندگی
    بستک
    سن
    35
    پست
    1,118

    نقل قول: مشکل در کوئری گروهی

    الان مساله‌ی اصلی روش ارسال اطلاعات به سرور هست که بشه بر اساس اون کوئری رو اجرا کرد ؟ (گمان نمیکنم این باشه)
    یا مشکل در نوشتن کوئری هست ؟

    چون از دید من مشکلی نباید وجود داشته باشه، لیست رو در یه JsonArray بفرستید (یا حتی یه String که با ٫ از هم جدا شدن) و بعد هم از این لیست در کوئری استفاده کنید (اپراتور IN).

    بنظرم لازمه مشکلتون رو بهتر تشریح کنید و شاید تکه هایی از کد فعلیتون رو هم قرار بدید

  4. #4

    نقل قول: مشکل در کوئری گروهی

    سلام
    ممنون از پاسخ
    مشکل اینجاست وقتی داده ها بر میگردن مثلا اولی رو 2تا بهش اضافه میکنه میشه 10 بقیه داده هایی که تووو آرایه اولی بهش گفتی برو مقدارش بیار تا اضافه کنم و اپدیت کنم همشونو میده ده !!
    یعنی داده های بعدی رو اصلا نمیاره داخل حلقه و تابع جمع و کل مقادیر داخل آرایه رو با مقدار اولی آپذیت میکنه ...



    : سمت سرور
    $codemeli = $panel->checkPost($_POST['codemeli']);
    $time_operation = $panel->checkPost($_POST['time_operation']);
    $date_operation = $panel->checkPost($_POST['date_operation']);
    $count_turn_new = $panel->checkPost($_POST['count_turn_new']);
    $count_turn = $panel->checkPost($_POST['count_turn']);
    $date_turn = $panel->checkPost($_POST['date_turn']);
    $code_marja = $panel->checkPost($_POST['code_marja']);

    $sql = $pdo->prepare("SELECT * FROM `report_doctors` WHERE date_turn = :date AND codemeli_dr = :codemeli");
    $sql->bindParam(":codemeli",$codemeli);
    $sql->bindParam(":date",$date_turn);
    $sql->execute();
    $rowcount = $sql->rowCount() ;
    if($rowcount > 0 )
    {
    $sql = $pdo->prepare("UPDATE `report_doctors` SET count_turn = :count_turn WHERE date_turn IN(:date) AND codemeli_dr = :codemeli order by date_turn asc");
    $sql->bindParam(":count_turn",$count_turn);
    $sql->bindParam(":codemeli",$codemeli);
    $sql->bindParam(":date",$date_turn);
    $sql->execute();
    }

    else
    {

    $sql = $pdo->prepare("INSERT INTO `report_doctors`(`code_marja`,`date`,`date_turn`, `time`, `count_turn`, `count_rezerv`, `count_cancell`, `count_delete`, `codemeli_dr`, `type`)
    VALUES (:code_marja,:date_operation,:date_turn,:time_oper ation,:count_turns,'0','0','0',:codemeli_dr,'1')") ;

    $sql->bindParam(":date_operation",$date_operation);
    $sql->bindParam(":time_operation",$time_operation);
    $sql->bindParam(":count_turns",$count_turn_new);
    $sql->bindParam(":date_turn",$date_turn);
    $sql->bindParam(":codemeli_dr",$codemeli);
    $sql->bindParam(":code_marja",$code_marja);
    $sql->execute();
    $rowcount = $sql->rowCount() ;
    if($rowcount > 0 )
    {
    echo "ok";

    }
    else
    {
    echo 'no' ;
    }

    }



    کد سمت اندروید



    for (int i = 0; i < AutoTurnRatingsDoctor.mySelectedDates.size(); i++)
    {


    int finalI = i;
    for (int j = 0; j < countTurnList.size(); j++) {
    int finalj = j;


    StringRequest request = new StringRequest(1, ContactUtils.sendTurnUrl, response ->
    {
    if (response.trim().equals("no"))
    {
    Toast.makeText(context, ContactUtils.noData, Toast.LENGTH_SHORT).show();
    }
    else
    {
    if (finalj == 0)
    {
    SpecialFunction.DialogTaeedTurn(context, null, PanelDoctor.name + " عزیز" +
    " شما " + AutoTurnRatingsDoctor.countTurns + " شما " + AutoTurnRatingsDoctor.mySelectedDates.size()
    + " تاریخ با کد " + code_marja + " ثبت کرده اید", 1);
    }
    }
    }, error ->
    {
    SpecialFunction.parseVolleyError(context, error);
    }) {
    @Override
    protected Map<String, String> getParams() throws AuthFailureError {
    Map<String, String> stringMap = new HashMap<String, String>();
    stringMap.put("key", "reportInsertDoctor");
    stringMap.put("code_marja", code_marja);
    stringMap.put("date_turn", AutoTurnRatingsDoctor.mySelectedDates.get(finalI)) ;
    stringMap.put("time_operation", SpecialFunction.getTimeNow());
    stringMap.put("date_operation", SpecialFunction.getDatePersian());
    stringMap.put("count_turn_new", String.valueOf(AutoTurnRatingsDoctor.countTurns / AutoTurnRatingsDoctor.mySelectedDates.size()));
    stringMap.put("count_turn", countTurnList.get(finalj) + "");




    stringMap.put("codemeli", S_codemeli);
    return stringMap;
    }
    };
    request.setRetryPolicy(ContactUtils.RETRY_POLICY);
    AppSingleton.getInstance(context).addToRequestQueu e(request);
    }
    }



  5. #5
    کاربر دائمی آواتار Nevercom
    تاریخ عضویت
    دی 1387
    محل زندگی
    بستک
    سن
    35
    پست
    1,118

    نقل قول: مشکل در کوئری گروهی

    تو کد شما (سمت سرور) من حلقه‌ای نمی‌بینم و در کوئری هم جمع یا افزایش مقدار فیلد رو نمی‌بینم. در ابتدا یه SELECT دارید که از نتیجه‌ی کوئری هیچ استفاده‌ای نمیشه (فقط چک میکنید که اگر نتیجه ای دریافت شده باشه، عملیات آپدیت انجام بشه). در آپدیت هم میگید که مقدار فیلد count_turn رو دقیقن برابر مقداری قرار بده که از سمت کلاینت ارسال شده (و نه اینکه با مقدار فعلیش جمع بشه)

    رفتار مدنظر شما چیه ؟ من کدهاتون رو دیدم، اما هنوز هم دقیق توضیح ندادید که هدف نهایی چیه. تا مشخص نباشه هدف شما چیه، نمیشه تشخیص داد که منطق کدتون ایرادی داره یا نه.

  6. #6

    نقل قول: مشکل در کوئری گروهی

    کد اضافه کردن توی کلاینت همزمان ک مقدار رو میگیرم با جیسون توی ارایه میریزم همون جا اضافه میکنم

    JSONArray jsonArray = response.getJSONArray(ContactUtils.text.dataJsonObjectName);
    JSONObject jsonObject = jsonArray.getJSONObject(0);
    countTurnList.add(jsonObject.getInt("count_turn") + AutoTurnRatingsDoctor.countTurns);

    خط سوم را نگاه کنید من هم میگیرم از سرور هم همزمان جمع میکنم با مقداری ک از صفحه قبل میاد

    قسمتی ک برای ابدیت کردن هست توی کلاینت دو تا حلقه تو در تو دارم یکیش برا تاریخ هاس یکی همین مقداری ک توی ارایه ریختمم و جمع کردم

    حلقه رو نمیشه برد سمت سرور چون امکان پذیر نیست

    در ضمن مقدار ارایه به عنوان مثال این ارایه تاریخ ها از صفحه قبل گرفتم ک اگه بیش از دو تا تاریخ در ارایه باشه بخوام توی قسمت تابعی ک دو تا حلقه داره ک عملیات ابدیت رو انجام بده مقدار turn_turn توی جدول کب عنوان مثال توی جدول سه تا سطر با تاریخ های مجزا و ی ستون ب نام count_turn هست مقدار دهی از قبل شده میخوام ستون همین count_turn با مقداری ک توی کلاینت اندرویذ اضافه مکینم توی این ستون ابدیت بشه بر اساس تاریخ هایی ک توی ارایه هست میدم اما مشکل اینجاست که اگه من توی سطر اول جدول ستون count_turn عدد 50 باشه و توی کلاینت این عدد 50 رو ک گرفتم با ی عددی اضافه کنم و برگردونم توی سرور و ابدیت بشه این ک بیاد بذاره توی سطر اول میاد ب هر سه سطر ک تاریخ ها رو از کلاینت گرفتم ابدیت میکنه در صورتی ک من گفتم تاریخ اولی یا همون سطر اولی عدد 50 بشه 70 و سطر دومی اگه عدد 80 بود بشه 100 و الی اخر ک این طور نیست میاد همون عدد اول ک شده 70 ب بقیه هم 70 میده
    آخرین ویرایش به وسیله ms_online : چهارشنبه 16 مرداد 1398 در 01:41 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •