اذهب إلى المحتوى

السؤال

نشر

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

لدي دالة لجلب البيانات من قاعدة بيانات MySQL  من خلال اسم العميل أقوم بكتابة اسم العميل في حقل text filed  واحصل على النتائج في حقول متعددة من  text filed 

على سبيل المثال لدي Text Field بعد جلب النتائج يعرض لدي عنوان العميل

أيضا Text Field مختلف يعرض عمر العميل ...الخ

المشكلة الان الـ Text Field الذي اقم بالبحث من خلاله لو قمت بكتابة اسم أحمد سوف  احصل على اول بيانات أحمد في ترتيب جدول البيانات ولكن قد أكون ارغب بالحصول على بيانات عميل اسمه أحمد مختلف 

بمعنى ان قاعدة البيانات يوجد فيه اكثر من اسم أحمد واحد / طبعا كتابة الاسم الثاني والثالث ليس حل قد أكون فقط اعرف اول اسم من اسم العميل.

هل توجد طريقة على سبيل المثال اضع مؤشر الماوس في Text Field الخاص بخانة البحث واقوم بضغط سهم ( الذهاب الى الأسفل من الكيبورد) ثم احصل على بيانات أحمد التالي من قاعدة البيانات ؟

 

الدالة التي تجلب البيانات لدي :

  _fetchData() async {
     var response = await http.get(
        Uri.parse("http:********************"),
        headers: {"Accept": "application/json"}
        );

    setState(() {
      var convertDataToJson = json.decode(response.body);
      data = convertDataToJson['result'];
      if (data.length >0){
      txtName = data[0]['Name'];
      txtNumber= data[0]['Number'];
      txt['Adress'];= data[0]['Adress'];

     
      }else{
     

      }
    });
  }

ملف php :

<?php

header('access-control-allow-origin: *');
header('Access-Control-Allow-Headers: *');

require_once 'con.php';

$Name=$_GET['Name'];

$sql="SELECT * FROM empl left join tcity  ON empl.Idcity = tcity  Idcity where empl.Name  LIKE  '%$Name%' ";
$con -> set_charset("utf8");
$stmt = $con->prepare($sql); 
$stmt->execute();
$result = $stmt->get_result();

$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 !"));


?>

 

Recommended Posts

  • 1
نشر

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

يمكنك المرور على المصفوفة data

      data = convertDataToJson['result'];

ولكل كائن منها تقوم بإنشاء عنصر من قائمة و تعرض بيانات المستخدم.

شيفرة تقريبية:

create list 

usersList

for(var user in data){
  txtName = user['Name'];
  txtNumber= user['Number'];
  txt['Adress'] = user['Adress'];
  
  new ListItem {txtName, txtNumber, .. }
  
  usersList.append(ListItem)
}

 

  • 0
نشر
بتاريخ 4 ساعات قال Wael Aljamal:

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

يمكنك المرور على المصفوفة data


      data = convertDataToJson['result'];

ولكل كائن منها تقوم بإنشاء عنصر من قائمة و تعرض بيانات المستخدم.

شيفرة تقريبية:


create list 

usersList

for(var user in data){
  txtName = user['Name'];
  txtNumber= user['Number'];
  txt['Adress'] = user['Adress'];
  
  new ListItem {txtName, txtNumber, .. }
  
  usersList.append(ListItem)
}

 

مرحبا بك اخي الكريم

المشكله ليست في النتائج اخي هو شغال 100% ولكني احتاج اعمل طريقة لتغير بين السجلات

بمعنى تغير البيانات المعروضه بشكل متسلسل 

 

احمد الاول وبياناته ثم يمكنني الانتقال بسهم وعرض احمد الثاني وبياناته ثم احمد الثالث بمعنى الانتقال بين السجلات هذا الفكره التي احاول تطبيقها

  • 0
نشر
بتاريخ 6 ساعات قال مروان مروان3:

بمعنى تغير البيانات المعروضه بشكل متسلسل 

يمكن استعمال PageView.builder لوضع كل عنصر لوحده في العرض و يمكن التنقل بينهم

SizedBox(
  height: 200,
  child: PageView.builder(
  controller: controller,
  scrollDirection: Axis.horizontal,           // حدد الجهة التي تريدها
  itemCount: 15,                 // data.length
  itemBuilder: (context, index) => Padding(
  padding: EdgeInsets.all(6),
  child: Container(
    decoration: BoxDecoration(
    borderRadius: BorderRadius.circular(20),
    color: Colors.red,
      ),
        child: Center(child: Text(index.toString())),
          ),
            ),
              ),
                )

ويمكن عمل ListView.builder

SizedBox(
  height: 200,
  child: ListView.builder(
  scrollDirection: Axis.horizontal,
  itemCount: 15,
  itemBuilder: (context, index) => Padding(
  padding: EdgeInsets.all(6),
  child: Container(
    width: MediaQuery.of(context).size.width * .90,     // 90 بالمئة من عرض الصفحة
    decoration: BoxDecoration(
      borderRadius: BorderRadius.circular(20),
      color: Colors.red,
        ),
          child: Center(child: Text(index.toString())),  // قيمة الاين
            ),
              ),
                ),
                  )

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...