• php
  • 8052
  • 20-3-2008
  • السلام عليكم ورحمة الله وبركاته
    الجزء الثالث يتكلم عن كيفية إضافة النصوص الى قواعد البيانات .
    طبعا سبق وذكرت أننا نبدأ ببرمجة لوحة التحكم للسكربت أولا أو بما يعرف ساحة الأدمن .
    عموما هالحين طال عمرك روح لمجلد السيرفر اللي راكب بجهازك وانشيء مجلد جديد فلنفرض ان إسم المجلد سيكون story ثم اضف بداخل المجلد مجلد ثاني بإسم admin وهذا المجلد سيتم وضع جميع ملفات التحكم بالسكربت ان شاء الله .
    بما أننا قمنا بزراعة هذه الجداول في قاعدة البيانات
    CREATE TABLE `story_cat` (
    `id` int(11) NOT NULL auto_increment,
    `name` varchar(99) NOT NULL default '',
    `image` varchar(99) NOT NULL default '',
    `sub` int(10) NOT NULL default '0',
    `order_cat` int(10) NOT NULL default '0',
    PRIMARY KEY (`id`)
    ) TYPE=MyISAM ; CREATE TABLE `story` (
    `id` int(11) NOT NULL auto_increment,
    `name` varchar(255) NOT NULL default '',
    `text` longtext NOT NULL,
    `cat` int(11) NOT NULL default '0',
    `writer` varchar(255) NOT NULL default '',
    `vis` int(11) default '0',
    `vote` int(11) NOT NULL default '0',
    `count` int(11) NOT NULL default '0',
    `date` varchar(255) NOT NULL default '0',
    `order_story` int(11) NOT NULL default '0',
    PRIMARY KEY (`id`)
    ) TYPE=MyISAM ;
    لابد أن نجري إتصال من ملف php الى القاعدة حتى نتمكن من الاضافه والتعديل والحذف وخلافه . >>>>>> هيا فلــنعمل ملف إتصال بقاعدة البيانات :
    بمجلد story انشيء ملف php بإسم config.php وسنكتب به كود الإتصال بقاعدة البيانات .
    وهو كالتالي :
    $localhost = "localhost";
    $userdb = "root";
    $passdb = "";
    $namedb = "story";
    $connect = @mysql_connect($localhost,$userdb,$passdb)
    or die ("no connect database");
    $xx= @mysql_select_db ($namedb,$connect) or die ("no select database");
    المتغير $localhost هو إسم السيرفر وغالبا يأتي اسمه localhost .
    المتغير $userdb هو إسم مستخدم قاعدة البيانات .
    المتغير $passdb هو الرقم السري لقاعدة البيانات .
    المتغير $namedb هو إسم قاعدة البيانات . أما المتغير $connect فلا تغير به شي وهو يحتوي على الداله mysql_connect الخاصه في الاتصال في قاعدة البيانات وايضا المتغير $xx لاتغير به شيء وهو يحتوي على الدالة mysql_select_db بحيث يتم تحديد إسم القاعدة المستخدمه . وهكذا إنتهينا من كتابة ملف الاتصال بقاعدة البيانات config.php . ============== والآن بمجلد admin انشيء ملف بإسم section.php وهو خاص بإضافة الأقسام لقاعدة البيانات :
    قم بعمل نموذج إدخال بيانات يحتوي حقول جدول الأقسام الذي بالقاعدة !! إليك بالنموذج كاملا :
    <form method="post" action="section_insert.php">
    <div align="center">
    <center>
    <table border="1" cellpadding="2" style="border-collapse: collapse" bordercolor="#111111" width="98%" id="AutoNumber1" dir="rtl">
    <tr>
    <td width="100%" colspan="2">
    <p align="center">إضافة قسم جديد</td>
    </tr>
    <tr>
    <td width="20%">إسم القسم :</td>
    <td width="80%"><input size="60" name="name"></td>
    </tr>
    <tr>
    <td width="20%">صورة القسم :</td>
    <td width="80%"><input size="60" name="image" dir="ltr"></td>
    </tr>
    <tr>
    <td width="20%">ترتيب القسم :</td>
    <td width="80%"><input size="60" name="order_cat"></td>
    </tr>
    <tr>
    <td width="20%">قسم رئيسي أو فرعي :</td>
    <td width="80%">
    <select size="1" name="sub">
    <OPTION value="0" selected>قسم رئيسي</OPTION>
    <?php
    include("../config.php");
    $sql = mysql_query ("SELECT id,name FROM story_cat where sub='0' order by id desc")
    or die ("error");
    while($cat=mysql_fetch_array($sql))
    {
    echo "<OPTION value='$cat[id]'>$cat[name]</OPTION>";
    }
    ?>
    </select>
    </td>
    </tr>
    <tr>
    <td width="100%" colspan="2">
    <p align="center"><input type="submit" value="إضافة" name="xxx"></td>
    </tr>
    </table>
    </center>
    </div>
    </form>
    نقوم بشرح النموذج بإختصار :
    السطر الأول للكود هو :
    <form method="post" action="section_insert.php">
    بحيث ان طريقة ارسال البيانات هي post أي ارسال البيانات مباشرة من الخانات الموجوده .
    وأما الـ action وهي الصفحة التي يتم توجيه البيانات لها وفي مثالنا تم توجيهها الى الصفحه section_insert.php يعني لازم ننشيء ملف جديد بإسم section_insert.php ونكتب فيه أكواد الاستقبال للبيانات .>> سنتكلم به لاحقا . حقول النص المكتوبه والمتمثله في اسم القسم وصورة القسم وترتيب القسم تكتب هكذا :
    <input size="60" name="name">
    <input size="60" name="image">
    <input size="60" name="order_cat">
    مايهمنا في هذا الكود هو اسم الحقل name !!
    شوف أسماء الحقول اللي بالكود هي name,image,order_cat هي التي يتم استخدامها في كود استقبال البيانات في صفحة ادخال البيانات للقاعدة ...... أعتقد تم فهم السالفه .
    وبالنسبة للقائمة المنسدله اللي مكتوب فيها قسم رئيسي فهذي ان تركت الخيار على ماهو عليه أي (( قسم رئيسي )) فسيتم اضافة رقم 0 تلقائيا وأما اذا إخترت احد الأقسام الموجوده بالقائمة فسيتم إضافة رقم القسم الذي اختره وسيصبح قسم فرعي ...... نعطي مثال بسيط : فرضا اضفنا قسم بإسم
    (( قصص إسلاميه ويحمل المفتاح الاساسي 1 )) >> قسم رئيسي .
    وقسم آخر :
    (( قصص واقعية ويحمل المفتاح الاساسي 2 )) >> قسم رئيسي .
    ثم إضفنا قسم جديد مثلا سميناه (( قصص الصحابه )) ثم اخترنا من القائمه القسم
    ((قصص إسلاميه )) وهكذا سيتم عرض قسم قصص الصحابه داخل قسم قصص إسلاميه ... وهكذا ووأما الاستعلام الخاص فهو بالكود السابق وسنفصله تفصيلا :
    include("../config.php");
    $sql = mysql_query ("SELECT id,name FROM story_cat where sub='0' order by id desc")
    or die ("error");
    while($cat=mysql_fetch_array($sql))
    {
    echo "<OPTION value='$cat[id]'>$cat[name]</OPTION>";
    }
    أولا ادرجنا ملف الاتصال بقاعدة البيانات ولاحظ المسار تبع الملف
    include("../config.php");
    ثانيا قمنا بإستخدم SELECT لجلب البيانات من قاعدة البيانات للاقسام الرئيسيه ... وقمنا بإستخدام where لتحديد عرض اقسام معينه فقط بحيث جلعنا جلب البيانات فقط اذا كان الحقل sub=0 فقط ... ثم فتحنا دالة التكرار while لعرض جميع النتائج . والآن انتهينا من شرح الكود كاملا ان شاء الله ============== والآن ننشيء ملف جديد بإسم section_insert.php بمجلد admin حيث ان هذا الملف سيكون خاص في استقبال البيانات من النموذج السابق ثم تفحصها ثم ادراجها لقاعدة البيانات . نكتب به الكود التالي :
    include("../config.php"); $name = addslashes($_POST['name']);
    $image = addslashes($_POST['image']);
    $order_cat = addslashes($_POST['order_cat']);
    $sub = $_POST['sub']; if ($name == ""){
    echo "<div align='center'>لم تقم بإدخال إسم للقسم <a href='javascript:history.back(1)'>عودة للخلف</a></div>";
    }else{
    $query = @mysql_query ("INSERT INTO story_cat (name,image,sub,order_cat)
    VALUES
    ('$name','$image','$sub','$order_cat')") or die ("error query");
    echo "<p align=center>تمت الاضافه بنجاح</p>";
    echo "<META HTTP-EQUIV='refresh' CONTENT='1; URL=section.php'>";
    }
    في بداية الكود ادرجنا ملف الاتصال بالقاعده وهذا ضروري جدا لكل ملف اذا كان يتم التعامل مع قاعدة البيانات به .
    include("../config.php");
    ثم استقبلنا البيانات من النموذج عن طريق المصفوفه POST >>> ألا تذكر في كود النموذج الذي بالأعلى ان تم ارسال البيانات عن طريق post وها نحن استقبلناها كما ارسلناها .
    $name = addslashes($_POST['name']);
    $image = addslashes($_POST['image']);
    $order_cat = addslashes($_POST['order_cat']);
    $sub = $_POST['sub'];
    ولو تلاحظ أننا استخدما الداله addslashes في بعض المتغيرات !!! لمــاذا ياترى ؟
    ببساطه لزيادة الأمان لقاعدة البيانات أولا وفائدتها إضافة سلاش (/) اذا كان النص المرسل يحتوي على (") أو (') وستكون النتيجه هكذا (/") أو (/') . ثم عملنا شرط بحيث ان اذا كان لايوجد اسم للقسم لن يتم ادراج بيانات في القاعدة وسيتم طباعة رساله تفيد انه لم تقم بكتابة اسم للقسم . واذا كتب الاسم فسيتم عمل INSERT أي ادراج البيانات للقاعده وسيتم عرض رساله بنجاح العمليه وسيتم توجيك تلقائيا لصفحة الإضافة للأقسام .
    وهذا كود التوجيه للصفحه :
    echo "<META HTTP-EQUIV='refresh' CONTENT='1; URL=section.php'>";
    والآن انتهينا من عمل صفحات اضافة الاقسام والاقسام الفرعية .
    وتجد الامثله بالمرفقات . والله ولي التوفيق
    كن أول من يقيم الموضوع
    12345