اخي اعمل ملف واحد اسمه config مثلا وضع به معلومات القاعده ودالة الاتصال بها..
اكرر داله!! لكي تنادي الداله في كل مره تريد الاتصال
كود:
<?php
//database information
$dbname="database";
$dbuser="root";
$dbpass="";
$dbhost="localhost";
//built function to connect to db
function connectdb()
{
global $dbhost,$dbname,$dbuser,$dbpass;
mysql_connect($dbhost,$dbuser,$dbpass)
or die ("couldn't connect to mysql server");
mysql_select_db($dbname)
or die("couldn't select db:$dbname");
}
?>
الان كل مره تريد الاتصال اعمل connectdb();
عند عرض نتائج القاعده:
كود:
connectdb();
$result=mysql_query("select * from TTT");
while($row=mysql_fetch_assoc($result))
{
$id=$row['id'];
$name=$row['name'];
print "$id --- $name<br>";
}
الشرح.. بالبدايه عملنا اتصال بقاعدة البيانات .. نادينا للداله connectdb الي عملناها في ملف الكونفغ.. ولكن تذكر انه يجب عليك ان اعمل include او require للملف في هذه الصفحه!!
ثاني سطر استخرجنا البيانات من القاعده.. والمفتاح هو المتغير result طبعا هذا متغير نحن حددناه!
اخترنا select يعني اختار.. * يعني الكل .. from TTT يعني من الجدول TTT
تستطيع ان تحدد شروط داخل ال select مثلا
كود:
select * from TTT where id ='3'
وشروط متعدده:
كود:
select * from TTT where id='3' and name=$var
وايضا order التي تحدد لنا طريقة العرض.. يعني حسب ال id او حسب ال name ةبالتالي سيعرض حسب الاحرف او الكلمات:
كود:
select * from TTT where id='3' order by id
هنا سيعرض حسب ال id من الصغير للكبير ولو اردت بالعكس يعني من الكبير للصغير فقط تضع الكلمه asc بعد الامر.. وهي تعني من الكبير للصغير..
ملاحظه: عكسها هو desc ولكن بما انه هو الافتراضي فلا نكتبه:
ملاحظه اخرى.. نحن عملنا الشروط المتعدده هي and تستطيع طبها عمل or يعني أو!!
limit هي لتحديد عدد النتائج.. مثلا لو عملت limit 100 يعني اعطيني فقط اول 100 نتيجه حسب الشروط التي وضعناها طبعا
مثال يدمج كل الامور.. لنفرض اننا نريد استخراج البيانات فقط للدوله مصر والكويت.. وفقط او 50 نتيجه
:
كود:
"select * from TTT where country='egypt' or country='kuwait' order by id asc limit 50"
عملنا order by id asc يعني الترتيب حسب حقل ال id ولكن من الكبير للصغير!!
الان بالنسبه لل while فقد عرفنا بداخلها مصفوفه تحمل جميع نتائج الاستعلام. mysql_fetch_assoc يضع النتائج في مصفوفه عناصرها هي اسماء الحقول .. لذلك فقد رايت نتيجه استخراجهم
ملاحظه mysql_fetch_array هي شبيهه بmysql_fetch_assoc ولكن عن طريقها تحمل المصفوفه ايضا العناصر 0..1..2..3 الخ بحيث ان 0 هو الحقل الاول 1 هو الثاني وهكذا
انا شخصيا افضل ال assoc لان الامور ستكون اوضح!
--------------------------------------------------
الحذف:
كود:
connectdb();
$q="delete from TTT where id=5 limit 1";
$r13=mysql_query($q13);
هنا حذفنا الحقل امن الجدول TTT والذي رقم ال id الخاص به هو 5
طبعا في حالات البرمجه الرقم يكون متغير!!.. عادي مكان ال 5 تكتب المتغير
طبعا ستقول لي لماذا عملنا limit 1 بما انه لن يكون اكثر من حقل قيمته 5 ..
طبعا الاي دي هو رقم فريد ولا يتكرر صحيح ؟ ؟
ولكن نعمل limit 1 لزيادة الاطمئنان وزيادة الخير خيرين وايضا لكي يتوقف البرنامج عن البحث عند ايجاده اول سجل يحمل الرقم 5
ربما انت تقارن الان كود الحذف بكون العرض.. انا عملتهم بطريقه مختلفه
ساكتب لك كود الحذف بالطريقه المختصره الي استخدمتها في العرض:
كود:
$q=mysql_query("delete from TTT where id=5 limit 1)";
نختصر السطرين بسطر واحد!! قارن المثالين وستعرف ماذا فعلت .. بالاولى عرفت المتغير وبعدها عملت له mysql_query ولكن هنا عملت ال mysql_query فورا لقيمته!
-----------------------------------------------------------
وضع البيانات في الجدول TTT
طبعا انت تستقبل بيانات (متغيرات) وتضعها في الحقول:
ولا تنسى الاتصال بقاعدة البيانات قبل اي تعامل مع القاعده:
كود:
$q11="insert into TTT values('','$newcat','1')";
$r11=mysql_query($q11);
هنا المتغير الامر insert into TTT يعني : "ضع داخل الجدول TTT "
وبعدها نكتب القيم : هنا انا افترضت ان لدينا 3 حقول الاول هو ال id وضعت به قيمه فارغه لانه طبعا سيكون auto_increment يعني سيضع قيمه بشكل تلقائي لوحده!!
الحق الثاني وضعت به المتغير newcat على فرض ان هذا المتغير الذ استقبلته من النموذج مثلا!!
والاخير وضعت به القيمه 1 لا ادري لماذا .. يمكن ان يكون متغير او لا اعرف اي شئ
ملاحظه يجب ان تكون الادخالات بالترتيب كما هي في القاعده ويجب ان يكون نفس عدد الحقول وان لم ترد ذلك يجب ان تسمي كل حقل باسمه!!
-------------------------------------------------------------------------------
التعديل:
كود:
$q14="update TTT set name='$newcatname' where id=$catid limit 1";
$r14=mysql_query($q14);
نعدل الجدول TTT بان نضع مكان الحقل name القيمه الجديده التي في المتغير newcatname
ولكن هذه التعديلات فقط للحقول للنتائج التي تطابق الشرط يعني id=$catid .. وطبعا مره اخرى كتبنا limit 1 مع اننا نستطيع الاستغناء عنها في هذه الحاله لانه لن يكون نفس id لنتيجتين!!
لاحظ انك لو لم تضع الشرط فسيغير كل الحقول!
------------
هذا تقريبا كل شئ يجب ان تعرفه!!
واتأمل جدا انه ما في عندي اخطاء املائيه او اخطاء غبيه
مع ان البرمجه هي ان تقضي معظم وقتك تحاول ان تكتشف الاخطاء