• 0

كيف يتم الاستعلام عن اعلى id في قاعدة البيانات من خلال flutter

السلام عليكم ورحمة الله وبركاته

تحيه طيبه للجميع.

لدي استفسار لو تكرمتو. قمت بعمل دالة للاستعلام عن حقل id من قاعدة بيانات mysql 

كود الاستعلام كالتالي:

 Future<String> getLogin() async {
    var response = await http.get(Uri.encodeFull("http://xxxxxxxxx/Noti.php"),);
    setState(() {
      var convertDataToJson = json.decode(response.body.toString());
     data = convertDataToJson['result'];
      if (data != null) {
        User_ID =int.parse(data[0]['id']);
       
        
      }

    }
    );



  }

وملف PHP كالتالي:

<?php
require_once 'connt.php';



$query="SELECT * FROM addcomment";

$result = mysqli_query($con,$query);

$array = array();

while ($row  = mysqli_fetch_assoc($result))
{
    $array[] = $row;
}


echo ($result) ?
json_encode(array("code" => 1, "result"=>$array)) :
json_encode(array("code" => 0, "message"=>"Data not found !"));


?>

 

 

الكود الذي تم ادرجه في الاعلى يعمل ولكن انا احتاج اني احصل على استعلام اعلى رقم ID من الحقل مهما كان موقعه او ترتيبه عشان كذا عملت الكود بشكل التالي:

<?php
require_once 'connt.php';



$query="SELECT MAX( id ) FROM addcomment";

$result = mysqli_query($con,$query);

$array = array();

while ($row  = mysqli_fetch_assoc($result))
{
    $array[] = $row;
}


echo ($result) ?
json_encode(array("code" => 1, "result"=>$array)) :
json_encode(array("code" => 0, "message"=>"Data not found !"));


?>

ولكن واجهتني المشكله التالية لما استعملت الكود اعلاه:

E/flutter (29294): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: Invalid argument(s): The source must not be null
E/flutter (29294): #0      int.parse (dart:core-patch/integers_patch.dart:51:25)
E/flutter (29294): #1      AddCommentsState.getLogin.<anonymous closure> (package:flutter_apptestqeuriy/Ready.dart:89:22)
E/flutter (29294): #2      State.setState (package:flutter/src/widgets/framework.dart:1240:30)
E/flutter (29294): #3      AddCommentsState.getLogin (package:flutter_apptestqeuriy/Ready.dart:85:5)
E/flutter (29294): <asynchronous suspension>
E/flutter (29294): #4      AddCommentsState.initState.<anonymous closure> (package:flutter_apptestqeuriy/Ready.dart:58:9)
E/flutter (29294): #5      interval.function (package:flutter_apptestqeuriy/Ready.dart:16:9)
E/flutter (29294): #6      _rootRun (dart:async/zone.dart:1182:47)
E/flutter (29294): #7      _CustomZone.run (dart:async/zone.dart:1093:19)
E/flutter (29294): #8      _CustomZone.runGuarded (dart:async/zone.dart:997:7)
E/flutter (29294): #9      _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1037:23)
E/flutter (29294): #10     _rootRun (dart:async/zone.dart:1190:13)
E/flutter (29294): #11     _CustomZone.run (dart:async/zone.dart:1093:19)
E/flutter (29294): #12     _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:1021:23)
E/flutter (29294): #13     Timer._createTimer.<anonymous closure> (dart:async-patch/timer_patch.dart:18:15)
E/flutter (29294): #14     _Timer._runTimers (dart:isolate-patch/timer_impl.dart:397:19)
E/flutter (29294): #15     _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:428:5)
E/flutter (29294): #16     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)
E/flutter (29294): 

 

هل يعلم احد حل للمشكلة بحيث اني احصل على اعلى ID  في حقل ID?

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 1

مرحبا أخي, عليك أن تقوم بتغيير ال QUERY الموجودة في الملف التاني على الشكل التالي:

<?php
require_once 'connt.php';


$query="SELECT * FROM addcomment WHERE id = (SELECT MAX(id) FROM addcomment)";

$result = mysqli_query($con,$query);

$array = array();

while ($row  = mysqli_fetch_assoc($result))
{
    $array[] = $row;
}


echo ($result) ?
json_encode(array("code" => 1, "result"=>$array)) :
json_encode(array("code" => 0, "message"=>"Data not found !"));


?>

وبذلك تكون قد عدت بجميع البيانات لأكبر ID موجود في الجدول.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 1

الخطأ الذي يظهر لك يدل على أن معامل ()int.parse  قيمته مساوية ل null. 

من الحتمل أنك قمت بجلب البيانات بطريقة غير صحيحة، يمكنك أن تقوم بطباعة البيانات التي تحضرها من قاعدة البيانات حتى تتأكد من أنها البيانات الصحيحة حتى قبل أن تستخدمها في التطبيق.

حتى نقوم بجلب الصف الذي له أعلى id من قاعدة البيانات mysql نقوم بالاستعلام باستخدام الأمر  التالي:

SELECT * FROM addcomment ORDER BY id DESC LIMIT 0, 1

إذا كنت تريد ال id فقط يمكنك استخدام التالي "مع العلم أن طريقة الاستعلام الخاصة بك صحيحة":

SELECT MAX(ID) FROM tablename LIMIT 1

 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0
بتاريخ 37 دقائق مضت قال Yomna Raouf:

الخطأ الذي يظهر لك يدل على أن معامل ()int.parse  قيمته مساوية ل null. 

من الحتمل أنك قمت بجلب البيانات بطريقة غير صحيحة، يمكنك أن تقوم بطباعة البيانات التي تحضرها من قاعدة البيانات حتى تتأكد من أنها البيانات الصحيحة حتى قبل أن تستخدمها في التطبيق.

حتى نقوم بجلب الصف الذي له أعلى id من قاعدة البيانات mysql نقوم بالاستعلام باستخدام الأمر  التالي:


SELECT * FROM addcomment ORDER BY id DESC LIMIT 0, 1

إذا كنت تريد ال id فقط يمكنك استخدام التالي "مع العلم أن طريقة الاستعلام الخاصة بك صحيحة":


SELECT MAX(ID) FROM tablename LIMIT 1

 

ربي يعطيك الف صحه وعافيه شاكر لك

بتاريخ 25 دقائق مضت قال ayoubridouani:

مرحبا أخي, عليك أن تقوم بتغيير ال QUERY الموجودة في الملف التاني على الشكل التالي:


<?php
require_once 'connt.php';


$query="SELECT * FROM addcomment WHERE id = (SELECT MAX(id) FROM addcomment)";

$result = mysqli_query($con,$query);

$array = array();

while ($row  = mysqli_fetch_assoc($result))
{
    $array[] = $row;
}


echo ($result) ?
json_encode(array("code" => 1, "result"=>$array)) :
json_encode(array("code" => 0, "message"=>"Data not found !"));


?>

وبذلك تكون قد عدت بجميع البيانات لأكبر ID موجود في الجدول.

زادك الله من واسع علمه وفضله 

الطريقة ناجحة 100/100 شكرا لك

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0
بتاريخ 6 دقائق مضت قال مروان مروان3:

ربي يعطيك الف صحه وعافيه شاكر لك

زادك الله من واسع علمه وفضله 

الطريقة ناجحة 100/100 شكرا لك

على الرحب والسعة أخي, الطريقة التي نجحت معك تسمى ب subqueries من هنا لو أردت أن تدرس عليها قليلا.

بالتوفيق.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0
بتاريخ 17 ساعات قال ayoubridouani:

على الرحب والسعة أخي, الطريقة التي نجحت معك تسمى ب subqueries من هنا لو أردت أن تدرس عليها قليلا.

بالتوفيق.

حقيقي رغم اني دارس ماده كامله بالاضافة الى تنفيذ كم مشروع سابقا بستخدام هذا للغة من الربط بين قواعد البيانات ولكن هذا كانت اول مره اشوف هذا الطريقة او اعرف عنها 

كل الشكر لك ي غالي

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن