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

كيف أربط صفحة Html بقاعدة بيانات sql server؟

Saleh Kamal

السؤال

Recommended Posts

  • 1

للربط بين صفحة HTML وقاعدة بيانات MS SQL Server تحتاج لوجود لغة برمجية خادمية أو خلفية Back end.

لفهم الموضوع بشكل أكبر يجب ان نعرف أن موقع الويب يتكون من مكونين

الأول: الواجهة الأمامية Front-End: وهي صفحة HTML وما تحتويه من تنسيقات وصور وكذلك JavaScript، هذه الواجهة، هي وسيلة التواصل بين المستخدم والخادم.

الثاني: الواجهة الخلفية Back-End: وهي الشيفرات المكتوبة بلغة برمجة عالية المستوى مثل PHP, ASP.NET, Node.JS ويتم تخزينها على الخادم وتنفيذها لما يتم طلبها.

مثال شهير: محرك البحث جوجل يتكون من واجهتين الأولى هى الواجهة الأمامية التي نراها (صفحة الجوجل)، والثانية هي شيفرات برمجية مكتوبة على الخادم ويتم تنفيذها عندما تكتب شيئًا في مربع البحث والضغط على زر "بحث"

الخلاصة: يلزمك تعلم لغة برمجة خادمية أو الاستعانة بمبرمج خادمي.

ويتم الاتصال بقواعد بيانات MS SQL Server عن طريق معرفة بيانات الاتصال التي تتكون من اسم الخادم - اسم المستخدم - كلمة المرور، ثم يتم إرسال الأمر المطلوب تنفيذه إلى قاعدة البيانات وهي ترد علينا بالنتائج Result set فنقوم بعرضها على صفحة HTML.

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

  • 1

جرب هذه الأكواد

<?php
    $server = 'DESKTOP-PJDLJNR';
    $database = 'Legacy';
    $username = '';
    $password = '';

    try {
        $connection = new PDO("sqlsrv:Server=$server;Database=$database", $username, $password);
        $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $e) {
        die("Connection failed: " . $e->getMessage());
    }

    $sql_query = 'SELECT * FROM Problemss';
    try {
        $result = $connection->query($sql_query);
    } catch (PDOException $e) {
        die("Query failed: " . $e->getMessage());
    }
?>

<table border="1" width="100%">
    <tr>
        <th>تم</th>
        <th>الحلول</th>
        <th>المشكلة</th>
        <th>م</th>
        <th>الرقم</th>
    </tr>

    <?php while ($row = $result->fetch(PDO::FETCH_ASSOC)) { ?>
    <tr>
        <td><?php echo htmlspecialchars($row['تم'])?></td>
        <td><?php echo htmlspecialchars($row['الحلول'])?></td>
        <td><?php echo htmlspecialchars($row['المشكلة'])?></td>
        <td><?php echo htmlspecialchars($row['م'])?></td>
        <td><?php echo htmlspecialchars($row['الرقم'])?></td>
    </tr>
    <?php
    }
    $connection = null; // close the connection
    ?>
</table>

لاحظ التالي:

1- تم استبدال  mysql_fetch_assoc بالوظيفة fetch لأنها الأحدث

2- لاحظ استخدام try - catch لاصطياد أي أخطاء تنتج بسبب فشل الاتصال او فشل استخراج البيانات.

3- استخدام htmlspecialchars لمنع الهجوم على الموقع باستخدام سكريبت التنقل بين المواقع XSS

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

  • 1

من خلال مراجعة الملف الذي أرفقته يلاحظ أن بعض الأسطر تم تهميشها

هذا الكود مهمش
<!--?php
    $server = 'DESKTOP-PJDLJNR';
    $database = 'Legacy';
    $username = '';
    $password = '';

    try {
    $connection = new PDO("sqlsrv:Server=$server;Database=$database", $username, $password);
    $connection--->

هذا الكود غير مهمش
<?php
    $server = 'DESKTOP-PJDLJNR';
    $database = 'Legacy';
    $username = '';
    $password = '';

    try {
    $connection = new PDO("sqlsrv:Server=$server;Database=$database", $username, $password);
    $connection?>

لاحظ الفرق بين المكتوب بالأعلى وبين الجزء بالأسفل بعد إزالة التهميش منه.

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

  • 0
بتاريخ منذ ساعة مضت قال El Sayed El Tohamy:

للربط بين صفحة HTML وقاعدة بيانات MS SQL Server تحتاج لوجود لغة برمجية خادمية أو خلفية Back end.

لفهم الموضوع بشكل أكبر يجب ان نعرف أن موقع الويب يتكون من مكونين

الأول: الواجهة الأمامية Front-End: وهي صفحة HTML وما تحتويه من تنسيقات وصور وكذلك JavaScript، هذه الواجهة، هي وسيلة التواصل بين المستخدم والخادم.

الثاني: الواجهة الخلفية Back-End: وهي الشيفرات المكتوبة بلغة برمجة عالية المستوى مثل PHP, ASP.NET, Node.JS ويتم تخزينها على الخادم وتنفيذها لما يتم طلبها.

مثال شهير: محرك البحث جوجل يتكون من واجهتين الأولى هى الواجهة الأمامية التي نراها (صفحة الجوجل)، والثانية هي شيفرات برمجية مكتوبة على الخادم ويتم تنفيذها عندما تكتب شيئًا في مربع البحث والضغط على زر "بحث"

الخلاصة: يلزمك تعلم لغة برمجة خادمية أو الاستعانة بمبرمج خادمي.

ويتم الاتصال بقواعد بيانات MS SQL Server عن طريق معرفة بيانات الاتصال التي تتكون من اسم الخادم - اسم المستخدم - كلمة المرور، ثم يتم إرسال الأمر المطلوب تنفيذه إلى قاعدة البيانات وهي ترد علينا بالنتائج Result set فنقوم بعرضها على صفحة HTML.

ممكن التعديل على الكود التالي:

 <?php
    $server = 'DESKTOP-PJDLJNR';
    $database = 'Legacy';
    $username = '';
    $password = '';

    $connection = new PDO("sqlsrv:Server=$server;Database=$database", $username, $password);
    if (!$connection) {
    die(print_r(sqlsrv_errors(), true));
    }

    $sql_query = 'SELECT * FROM Problemss';
    $result = $connection->query($sql_query);
    ?>

    <table border="1" width="100%">
        <tr>
            <th>تم</th>
            <th>الحلول</th>
            <th>المشكلة</th>
            <th>م</th>
            <th>الرقم</th>
        </tr>


        <?php while ($row = mysql_fetch_assoc($result)) { ?>
        <tr>
            <td><?php echo $row['تم']?></td>
            <td><?php echo $row['الحلول']?></td>
            <td><?php echo $row['المشكلة']?></td>
            <td><?php echo $row['م']?></td>
            <td><?php echo $row['الرقم']?></td>
        </tr>
        <?php
        }
        $connection = null; // close the connection
        ?>
    </table>

 

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

  • 0
بتاريخ 10 دقائق مضت قال El Sayed El Tohamy:

جرب هذه الأكواد

<?php
    $server = 'DESKTOP-PJDLJNR';
    $database = 'Legacy';
    $username = '';
    $password = '';

    try {
        $connection = new PDO("sqlsrv:Server=$server;Database=$database", $username, $password);
        $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $e) {
        die("Connection failed: " . $e->getMessage());
    }

    $sql_query = 'SELECT * FROM Problemss';
    try {
        $result = $connection->query($sql_query);
    } catch (PDOException $e) {
        die("Query failed: " . $e->getMessage());
    }
?>

<table border="1" width="100%">
    <tr>
        <th>تم</th>
        <th>الحلول</th>
        <th>المشكلة</th>
        <th>م</th>
        <th>الرقم</th>
    </tr>

    <?php while ($row = $result->fetch(PDO::FETCH_ASSOC)) { ?>
    <tr>
        <td><?php echo htmlspecialchars($row['تم'])?></td>
        <td><?php echo htmlspecialchars($row['الحلول'])?></td>
        <td><?php echo htmlspecialchars($row['المشكلة'])?></td>
        <td><?php echo htmlspecialchars($row['م'])?></td>
        <td><?php echo htmlspecialchars($row['الرقم'])?></td>
    </tr>
    <?php
    }
    $connection = null; // close the connection
    ?>
</table>

لاحظ التالي:

1- تم استبدال  mysql_fetch_assoc بالوظيفة fetch لأنها الأحدث

2- لاحظ استخدام try - catch لاصطياد أي أخطاء تنتج بسبب فشل الاتصال او فشل استخراج البيانات.

3- استخدام htmlspecialchars لمنع الهجوم على الموقع باستخدام سكريبت التنقل بين المواقع XSS

مازال يظهر خطاء  استاذي

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

  • 0
بتاريخ 4 دقائق مضت قال El Sayed El Tohamy:

من خلال مراجعة الملف الذي أرفقته يلاحظ أن بعض الأسطر تم تهميشها

هذا الكود مهمش
<!--?php
    $server = 'DESKTOP-PJDLJNR';
    $database = 'Legacy';
    $username = '';
    $password = '';

    try {
    $connection = new PDO("sqlsrv:Server=$server;Database=$database", $username, $password);
    $connection--->

هذا الكود غير مهمش
<?php
    $server = 'DESKTOP-PJDLJNR';
    $database = 'Legacy';
    $username = '';
    $password = '';

    try {
    $connection = new PDO("sqlsrv:Server=$server;Database=$database", $username, $password);
    $connection?>

لاحظ الفرق بين المكتوب بالأعلى وبين الجزء بالأسفل بعد إزالة التهميش منه.

انا لم افهم ايش تقصد بالضبط استاذي العزيز 

اليك اسم قاعدة البيانات وما يلي:

لقطة الشاشة 2023-12-25 015432.png

قاعدة البيانات.png

اسم الجدول.png

اسماء الحقول.png

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

  • 0
بتاريخ 44 دقائق مضت قال كمال صالح محمد:

هذا الملف home.html يحتوي بعض الأكواد المهمشة commented يجب إزالة التهميش منها كما وضحت في الرسالة السابقة.

كذلك هناك بعض النصائح الخاصة بقواعد البيانات:

1- يفضل جعل أسماء الأعمدة باللغة الإنجليزية

2- إذا كنت تنوي تخزين قيم نصية تحتوي على حروف عربية فاجعل النوع nvarchar وليس varchar

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...