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

[php] جلب بيانات المصفوفة من قاعدة البيانات

محمد المصري12

السؤال

عندي جدول بالشكل التالي

2022-08-16_16-48-00.jpg.19df7c371796912421ba9c598d574951.jpg

و مصفوفة بالشكل التالي

$EN=[
    'main'=>'salma',
    'view_reports'=>'display some system reports',
    'preferred_lang'=>'Select Display Language',
    'success'=>'success',
];

ايه الطريقة الصحيحه اني اخلي المصفوفة تقرا من الداتابيز ؟

توضيح اكتر

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

و السيستيم يقرا الترجمة منهم 

ازاي اقدر أعمل ده

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0
بتاريخ 2 ساعات قال Adnane Kadri:

هل تبحث عن طريقة لتخزين مصفوفة في قواعد البيانات؟

بل العكس أستاذنا. 

انا اعلم كيف يمكن تخزين بيانات المصفوفة

انا اريد جلب بيانات للمصفوفة من الجدول 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ منذ ساعة مضت قال محمد المصري5:

انا اريد جلب بيانات للمصفوفة من الجدول 

  • نجلب البيانات من خلال استعلام 
  • نعرف القيم في المصفوفة من كائن نتيجة الاستعلام
  • نحدد نمط إرجاع من FETCH_ASSOC بالتالي ستكون $result لها نفس الهيكلية التي تبحث عنها
<?php

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
  $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
  $stmt = $conn->prepare("SELECT * FROM table");
  $stmt->execute();

  $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
  if ($result->num_rows > 0) {
    $EN = $result;
    //            أو 
    $EN=[
      'main'=>			$result["main"],
      'view_reports'=>		$result["view_reports"],
      'preferred_lang'=>	$result["preferred_lang"],
      'success'=>		$result["success"],
    ];
  }
} catch(PDOException $e) {
  echo "Error: " . $e->getMessage();
}
$conn = null;

 

بتاريخ 1 دقيقة مضت قال Wael Aljamal:

$stmt = $conn->prepare("SELECT * FROM table");

هنا تأكد من اسم الجدول، و شرط الاستعلام

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 14 ساعات قال Wael Aljamal:
  • نجلب البيانات من خلال استعلام 
  • نعرف القيم في المصفوفة من كائن نتيجة الاستعلام
  • نحدد نمط إرجاع من FETCH_ASSOC بالتالي ستكون $result لها نفس الهيكلية التي تبحث عنها

<?php

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
  $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
  $stmt = $conn->prepare("SELECT * FROM table");
  $stmt->execute();

  $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
  if ($result->num_rows > 0) {
    $EN = $result;
    //            أو 
    $EN=[
      'main'=>			$result["main"],
      'view_reports'=>		$result["view_reports"],
      'preferred_lang'=>	$result["preferred_lang"],
      'success'=>		$result["success"],
    ];
  }
} catch(PDOException $e) {
  echo "Error: " . $e->getMessage();
}
$conn = null;

 

هنا تأكد من اسم الجدول، و شرط الاستعلام

انا شاكر لحضرتك جدا يا باش مهندس 

يمكن الأمر ده لسه جديد ما صادفنيش عشان كده استأذتك تتحملني شويا لحد مفهمه

عندي في قاعدة البيانات العمود langVar و العمود langTranslate 

و الاستعلام بيتحدد بناء على عمود اسمه langName كالتالي

$sql = "SELECT * from lang WHERE langName = 'EN';";

و دي نتيجة الإستعلام

2022-08-16_16-48-00.jpg.afe347760606b40ceebc8cf2da32ada4.jpg

انا عاوز اخرج الناتج بالشكل التالي

 

$EN=[
      $result[langVar]=> $result["langTranslate"], //Getting data from langVar and langTranslate cloumns 
    ];

بحيث النتيجة تظهر معايا كده 

$EN=[
    'main'=>'Main Page',
    'view_reports'=>'display some system reports',
];

هو ده طلبي بالضبط و لكم جميعا خالص تقديري لمساعدتكم الكريمة

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 2 ساعات قال محمد المصري5:

هو ده طلبي بالضبط و لكم جميعا خالص تقديري لمساعدتكم الكريمة

هل حاولت تجميع النتائج في مصفوفة؟ أي تجميع نتائج الاستعلام في مصفوفة

لم أفهم الطريقة التي تريد جلب البيانات بها،

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

طيب انا بعتذر يمكن مش عارف اوضح الاستفسار

ممكن اصيغ السؤال

ازاي اقدر اعمل لوب داخل المصفوفة

يعني المصفوفة اهي

$EN=[
    'main'=>'Main Page',
    'view_reports'=>'display some system reports',
];

لو فرضنا مثلا بطريقة بدائية

ان كلمة main و كلمة view_reports السيستيم هايخدهم من جدول langVar

و كلمة main Page و display some system report  السيستيم هايقراهم من جدول langTranslate 

$conn = new mysqli("localhost","root","","atms");

$query = ' Select * FROM lang WHERE langName = "EN"';

$result = $conn->query($query) or die($conn->error) ;



$EN=[

foreach ($result AS $row){

    $row['langVal']=>$row['langTrans'],
  
}

];

بس طبعا اداني syntax error 

انا حبيت اوضح اللي انا عاوزه بالكود

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ الآن قال محمد المصري5:

لا هي مصفوفة وحدة بس اسمها EN

و بيانات المصفوفة من الجدول

ما هي البيانات؟ اكتب عدة نتائج متتالية (عدة أسطر) كمثال وليس سطر واحد لأفهم عليك 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

مثل هذه

2022-08-16_16-48-00.jpg.1041ecab7d124d5f4b88379dd23526d7.jpg

    'main'=>'Salma', // We will get 'main' from cloumn langVar and 'Salma' Page from column langTrans
    'view_reports'=>'display some system reports',
    'preferred_lang'=>'Select Display Language',
    'success'=>'success',
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1
بتاريخ 1 دقيقة مضت قال محمد المصري5:

مثل هذه

جرب التالي:

$result = $query->fetchAll(\PDO::FETCH_ASSOC);

لأو

while($row = $query->fetch()) {
    $result[] = [
        'newname' => $row['oldname'],
        // etc
    ];
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

جربتها يا استاذي قبل كده بس النتيجة مش هي اللي انا عاوزها

<?php

$conn = new mysqli("localhost","root","","atms");

$query = ' Select * FROM lang WHERE langName = "EN"';

$result = $conn->query($query) or die($conn->error) ;

$EN = array(); // Initialize the array

// Loop through results
while ($row= mysqli_fetch_array($result)) {
    // Add a new array for each iteration
    $EN[] = [
        $row['langVar'] => $row['langTranslate'],
        // etc
    ];
}
print_r($EN);

و الناتج 

Array ( [0] => Array ( [main] => Main Page ) [1] => Array ( [view_reports] => display some system reports ) )

تعديل:

بتاريخ 8 ساعات قال محمد المصري5:

سلام عليكم اخي الفاضل

شكرا جدا لمتابعتك الكريمة

الفكرة ببساطة ان ده الملف بتاع الترجمة


$EN=[
    'main'=>'main Page',
    'view_reports'=>'display some system reports',
    'preferred_lang'=>'Select Display Language',
    'success'=>'success',
];

اللي عالشمال اسم المتغير و اللي عاليمين اسم الترجمة 

لو هاعمله عربي هايبقى بنفس الطريقة

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

انا عاوز اخليه يعمل ده من لوحة التحكم

فعملت جدول اسمه Lang  فيه كود الترجمة و اسمهها ( AR أو EN أو FR) اي حاجة مش مهم

و فيه عمود للمتغير و عمود للترجمة 

اللي انا محتاجه من الجدول ده اسم المتغير و الترجمه اللي قصاده فقط لا غير

و عاوزه جوا المصفوفة بالشكل اللي حضرتك شايفه ده

اللي هايحصل اني بيضيف المتغير في البرنامج بالصيغة دي


 <?= $ml->tr('Main') ?>

يقوم هو رايح للمصفوفة اللي واخده اسم اللغة اللي هو اختارها سواء عربي و لا انجليزي و تدور جواها على متغير main و تجيبلي الترجمة اللي قصاده

المكتبة دي شغاله كويس جدا يدوي ( يعني لما يدخل بيانات المصفوفة بايدي )

لكن اللي انا عاوزه انه يقرا المتغير و ترجمته من قاعدة البيانات نفسها

فكرت في فكرة عقيمة شويا


<?php

$conn = new mysqli("localhost","root","","atms");

$query = ' Select * FROM lang WHERE langName = "EN"';

$result = $conn->query($query) or die($conn->error) ;





$res = [];

if (mysqli_multi_query($conn, $query)) {

    $i = 0;
    do {

        $res[$i] = array();

        if ($result = mysqli_store_result($conn)) {

            while ($row = mysqli_fetch_assoc($result)) {
                array_push($res[$i], $row);
            }
            mysqli_free_result($result);
        }

        $i = $i +1;

    } while (mysqli_next_result($conn));
}

$getA = $res[0][0];
$langVar = $getA['langVar'];
$translation = $getA['langTranslate'];

$users = ["'$langVar'=>'$translation',"];

foreach($users as $user) {
    print_r($user);
}

جابت لي الناتج زي منا عاوز بالضبط لكن اول row في ال table فقط 

يعني لو عندي 10 الاف ترجمه م هاتجيب غير الاولى و بس

يا رب تكون المشكلة وضحت و سامحني ازعجتك

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 9 ساعات قال محمد المصري5:

تعديل:

أنت تقوم بتجميع النتائج في مصفوفة واحدة، نفس ما ستقوم به fetch all 

بقي المرور على الدليل الأول للمصفوفة.

  • حاول طباعة المصفوفة getA لتعرف بنيتها بالدالة print_r ثم تعرف كيف تقرأ القيم منها
  • سأحاول كتابة حلقة على المصفوفة
<?php

for($i= 0; $i< count($res); $i ++) {
  
  $getA = $res[$i][0];
  $langVar = $getA['langVar'];
  $translation = $getA['langTranslate'];

  $users = ["'$langVar'=>'$translation',"];

  foreach($users as $user) {
    print_r($user);
  }
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...