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

السؤال

نشر

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

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
نشر
بتاريخ منذ ساعة مضت قال محمد المصري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
نشر

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

<?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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...