طريقة أنشاء قاعده بيانات mysql و إضافة وتعديل وحذف وترتيب البيانات في الجدول في php
تحتوي قاعدة البيانات على جدول أو اكثر .
إنشاء قاعدة بيانات mysql
يمكن إنشاء قاعدة بيانات من خلال التعبير CREATE DATABASE .
التركيبة
CREATE DATABASE database_nameلاستخدام التعبير يمكن استخدام الوظيفة mysql_query() و بهذه الوظيفة يمكن استخدام لارسال الأوامر الى الاتصال مع MySQL .
مثال
في المثال التالي سنقوم بإنشاء قاعدة بيانات تسمى my_db
<?php
		  $con = mysql_connect("localhost","root","root");
		  if (!$con) {
		  die('Could not connect: ' . mysql_error());
		  }
		  if (mysql_query("CREATE DATABASE my_db",$con))
		  {
		  echo "Database created";
		  } else {
		  echo "Error creating database: " . mysql_error();
		  }
		  mysql_close($con);
		  ?>
		إنشاء جدول
يمكن إنشاء قاعدة بيانات من خلال التعبير CREATE TABLE .
التركيبة
CREATE TABLE table_name ( column_name1 data_type, column_name2 data_type, column_name3 data_type, .... )لإنشاء الأمر يجب اضافة التعبير CREATE TABLE الى الوظيفة mysql_query() .
مثال
في المثال التالي سيتم إنشاء جدول مسمى Persons مع ثلاثة أعمدة . ستكون أسماء الأعمدة كالتالي FirstName و LastName و Age :
<?php
		  $con = mysql_connect("localhost","root","root");
		  if (!$con)
		  {
		  die('Could not connect: ' . mysql_error());
		  }
		  // Create database
		  if (mysql_query("CREATE DATABASE my_db",$con))
		  {
		  echo "Database created";
		  }
		  else
		  {
		  echo "Error creating database: " . mysql_error();
		  }
		  // Create table
		  mysql_select_db("my_db", $con);
		  $sql = "CREATE TABLE Persons
		  (
		  FirstName varchar(15),
		  LastName varchar(15),
		  Age int
		  )";
		  // Execute query
		  mysql_query($sql,$con);
		  mysql_close($con);
		  ?>
		ملاحظة هامة
- يجب اختيار قاعدة البيانات قبل إنشاء الجدول حيث يمكن اختيار قاعدة البيانات من خلال الوظيفة mysql_select_db() .
- عند إنشاء حقل قاعدة بيانات بنوع varchar , يجب تحديد الحد الأقصى للطول في الحقل مثل varchar(15) .
- تحدد نوع البيانات نوع العمود الذي سيقوم بحمل البيانات فيها .
الحقول Primary Keys و Auto Increment
يجب أن يحتوي كل حقل على وسم أساسي Primary Keys .
يستخدم primary key لتحديد فريد ومميز للصفوف في الجدول . يجب أن يكون primary key فريد ضمن الجدول بالاضافة بأن primary key لايجب أن يكون فارغ null لأن محرك قاعدة البيانات يحتاج الى قيمة لتحديد مكان الصف في الجدول .
في المثال التالي سيتم تحديد حقل لعنوان id للجدول personID مثل حقل primary key . غالباً مايكون primary key يحتوي على رقم ID و غالباً مايكون مع AUTO_INCREMENT . تزيد AUTO_INCREMENT تلقائياً قيمة الحقل برقم واحد في كل مرة يزيد عدد الصفوف . وذلك للتأكد بأن primary key ليس فارغاً null يجب تحديد ضبط بأن القيمة غير فارغة NOT NULL .
مثال
$sql = "CREATE TABLE Persons ( personID int NOT NULL AUTO_INCREMENT, PRIMARY KEY(personID), FirstName varchar(15), LastName varchar(15), Age int )"; mysql_query($sql,$con);
ادراج بيانات الى جدول قاعدة البيانات
تستخدم INSERT INTO لإدراج صف جديد في الجدول .
التركيبة
من الممكن كتابة التعبير INSERT INTO من خلال طريقتين .
لايحدد الشكل الأول اسماء الأعمدة حيث سيتم ادراج البيانات فقط قيمهم :
INSERT INTO table_name VALUES (value1, value2, value3,...)
يحدد الشكل الثاني كلاً من اسماء الأعمدة و قيمهم التي سيتم ادراجها :
INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)لاستخدام التعابير السابقة بشكل جيد يمكن استخدام الوظيفة mysql_query() حيث سيتم ارسال الأوامر و الطلبات الى الاتصال الخاص مع MySQL .
مثال
في الدرس السابق قمنا بإنشاء جدول باسم Persons مع ثلاثة أعمدة Firstname و Lastname و Age كما سنقوم باستخدام نفس الجدول في هذا المثال . يضيف المثال التالي صف جديد للجدول Persons :
<?php
	  $con = mysql_connect("localhost","root","root");
	  if (!$con)
	  {
	  die('Could not connect: ' . mysql_error());
	  }
	  mysql_select_db("my_db", $con);
	  mysql_query("INSERT INTO Persons (FirstName, LastName, Age)
	  VALUES ('Root', 'Griffin', '35')");
	  mysql_query("INSERT INTO Persons (FirstName, LastName, Age)
	  VALUES ('Glenn', 'Quagmire', '33')");
	  mysql_close($con);
	  ?>
	ادراج بيانات من نموذج الى قاعدة البيانات
الآن سنقوم بإنشاء نموذج HTML والذي بدوره سيقوم بإضافة صف جديد للجدول Persons .
هنا كود نموذج HTML :
<html> <body> <form action="insert.php" method="post"> Firstname: <input type="text" name="firstname" /> Lastname: <input type="text" name="lastname" /> Age: <input type="text" name="age" /> <input type="submit" /> </form> </body> </html>
عند ضغط المستخدم على زر الارسال في نموذج HTML سيتم ارسال المعلومات الى الملف insert.php .
يقوم الملف insert.php بالاتصال بقاعدة البيانات ثم يحوّل المعلومات المسجلة في النموذج الى متغيرات $_POST .
ثم يرسل mysql_query() أمراً الى INSERT INTO ليتم ادراج صف جديد الى جدول Persons .
هناالكود الموجود في صفحة insert.php :
<?php
	  $con = mysql_connect("localhost","root","root");
	  if (!$con)
	  {
	  die('Could not connect: ' . mysql_error());
	  }
	  mysql_select_db("my_db", $con);
	  $sql="INSERT INTO Persons (FirstName, LastName, Age)
	  VALUES
	  ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";
	  if (!mysql_query($sql,$con))
	  {
	  die('Error: ' . mysql_error());
	  }
	  echo "1 record added";
	  mysql_close($con)
	  ?>
	اختيار البيانات من جدول قاعدة البيانات
يستخدم التعبير SELECT لاختيار البيانات من قاعدة البيانات .
التركيبة
SELECT column_name(s) FROM table_nameلاستخدام التعبير يمكن استخدام الوظيفة mysql_query() و بهذه الوظيفة يمكن استخدام لارسال الأوامر الى الاتصال مع MySQL .
مثال
يختار المثال التالي جميع البيانات المخزنة في جدول Persons ( تستخدم الاشارة * لاختيار جميع البيانات الموجودة في الجدول ) :
<?php
	  $con = mysql_connect("localhost","root","root");
	  if (!$con)
	  {
	  die('Could not connect: ' . mysql_error());
	  }
	  mysql_select_db("my_db", $con);
	  $result = mysql_query("SELECT * FROM Persons");
	  while($row = mysql_fetch_array($result))
	  {
	  echo $row['FirstName'] . " " . $row['LastName'];
	  echo "<br />";
	  }
	  mysql_close($con);
	  ?>
	يخزن المثال السابق البيانات العائدة من خلال الوظيفة mysql_query() في المتغير $result . ثم سنقوم باستخدام mysql_fetch_array() لاسترجاع الصف الثاني من صفوف الجدول . أما الحلقة while فإنها ستدور حول جميع الصفوف في جدول البيانات وتقدم النتيجة .
لعرض النتيجة لجميع الصفوف يمكن استخدام متغير $row كالتالي :
($row['FirstName'] and $row['LastName'])
ستظهر النتيجة كالتالي :
Ahmad Jasem Samer Masri Fuad Alasad
عرض النتيجة في جدول HTML
يختار المثال التالي نفس البيانات في المثال السابق لكن سيتم عرض البيانات في جدول HTML كالتالي :
<?php
	  $con = mysql_connect("localhost","root","root");
	  if (!$con)
	  {
	  die('Could not connect: ' . mysql_error());
	  }
	  mysql_select_db("my_db", $con);
	  $result = mysql_query("SELECT * FROM Persons");
	  echo "<table border='1'>
	  <tr>
	  <th>Firstname</th>
	  <th>Lastname</th>
	  </tr>";
	  while($row = mysql_fetch_array($result))
	  {
	  echo "<tr>";
	  echo "<td>" . $row['FirstName'] . "</td>";
	  echo "<td>" . $row['LastName'] . "</td>";
	  echo "</tr>";
	  }
	  echo "</table>";
	  mysql_close($con);
	  ?>
	ستظهر النتيجة على المتصفح كالتالي
| FirstName | LastName | 
|---|---|
| Ahmad | Jasem | 
| Samer | Masri | 
| Fuad | Alasad | 
عبارة WHERE
تستخدم عبارة WHERE لتحديد صف معين في جدول قاعدة البيانات .
التركيبة
SELECT column_name(s) FROM table_name WHERE column_name operator valueلإنشاء كود PHP لاستخدام التعبير السابق يمكن استخدام mysql_query() و هي تستخدم لارسال الأوامر أو الطلبات الى اتصال MySQL .
مثال
يختار المثال التالي جميع الصفوف من الجدول Persons حيث WHERE الاسم Ahmad
<?php
	  $con = mysql_connect("localhost","root","root");
	  if (!$con)
	  {
	  die('Could not connect: ' . mysql_error());
	  }
	  mysql_select_db("my_db", $con);
	  $result = mysql_query("SELECT * FROM Persons
	  WHERE FirstName=Ahmad");
	  while($row = mysql_fetch_array($result))
	  {
	  echo $row['FirstName'] . " " . $row['LastName'];
	  echo "<br />";
	  }
	  ?>
	ستظهر النتيجة على المتصفح كالتالي
Ahmad Jasem
الترتيب Order By
تستخدم الترتيب ORDER BY لترتيب البيانات المعروضة من قاعدة البيانات .
عند استخدام ORDER BY يكون الترتيب تصاعدي بشكل تلقائي ولكن ان أردت الترتيب بشكل آخر مكن استخدام الكلمة DESC والتي تشكل ترتيب تنازلي .
التركيبة
SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESCمثال
يختار المثال التالي جميع البيانات في الجدول Persons ثم يقوم بترتيب الجدول حسب العمر تصاعدياً :
<?php
	  $con = mysql_connect("localhost","root","root");
	  if (!$con)
	  {
	  die('Could not connect: ' . mysql_error());
	  }
	  mysql_select_db("my_db", $con);
	  $result = mysql_query("SELECT * FROM Persons ORDER BY age");
	  while($row = mysql_fetch_array($result))
	  {
	  echo $row['FirstName'];
	  echo " " . $row['LastName'];
	  echo " " . $row['Age'];
	  echo "<br />";
	  }
	  mysql_close($con);
	  ?>
	ستظهر النتيجة على المتصفح كالتالي
Ahmad Jasem33 Samer Masri35
الترتيب من خلال عمودين
أيضاً من الممكن ترتيب أكثر من عمود . عند استخدام الترتيب من خلال أكثر من عمود فإن العمود التاني سيتم استخدامه اذا كانت القيمة الأولى متساوية :
SELECT column_name(s) FROM table_name ORDER BY column1, column2
تحديث البيانات في قاعدة البيانات
تستخدم خاصية التحديث UPDATE للتعديل على البيانات الحالية في الجدول .
التركيبة
UPDATE table_name SET column1=value, column2=value2,... WHERE some_column=some_value
ملاحظة : لاحظ بأن التعبير WHERE يحدد أي الصف أو الصفوف الذي ينبغي تحديثه لكن بينما اذا لم تستخدم WHERE عندها سيتم تحديث جميع الصفوف .
لإنشاء كود PHP لاستخدام التعبير السابق يمكن استخدام mysql_query() و هي تستخدم لارسال الأوامر أو الطلبات الى اتصال MySQL .
مثال
في دروس سابقة قمنا بإنشاء جدول اسمه Persons وها هنا يظهر كالتالي
| FirstName | LastName | Age | 
|---|---|---|
| Ahmad | Jasem | 33 | 
| Samer | Masri | 35 | 
| Fuad | Alasad | 40 | 
سيقوم المثال التالي بتحديث بعض البيانات في الجدول Persons :
<?php
	  $con = mysql_connect("localhost","root","root");
	  if (!$con)
	  {
	  die('Could not connect: ' . mysql_error());
	  }
	  mysql_select_db("my_db", $con);
	  mysql_query("UPDATE Persons SET Age = '36'
	  WHERE FirstName = 'Ahmad' AND LastName = 'Jasem'");
	  mysql_close($con);
	  ?>
	بعد التحديث سيبدو الجدول كالتالي
| FirstName | LastName | Age | 
|---|---|---|
| Ahmad | Jasem | 36 | 
| Samer | Masri | 35 | 
| Fuad | Alasad | 40 | 
حذف بيانات من قاعدة البيانات
يستخدم التعبير DELETE FROM لحذف بيانات من جدول قاعدة البيانات .
التركيبة
DELETE FROM table_name WHERE some_column = some_value
ملاحظة : لاحظ بأن التعبير WHERE يستخدم مع تركيبة الحذف DELETE لتحديد معين أي البيانات التي سيتم حذفها من الجدول ولكن ان لم تستخدم WHERE سيتك حذف جميع صفوف الجدول .
لإنشاء كود PHP لاستخدام التعبير السابق يمكن استخدام mysql_query() و هي تستخدم لارسال الأوامر أو الطلبات الى اتصال MySQL .
مثال
لاحظ الجدول في هذا المثال التالي
| FirstName | LastName | 
|---|---|
| Ahmad | Jasem | 
| Samer | Masri | 
| Fuad | Alasad | 
يحذف المثال التالي البيانات من الجدول Persons حيث where الكنية LastName='Griffin' :
<?php
	  $con = mysql_connect("localhost","root","root");
	  if (!$con)
	  {
	  die('Could not connect: ' . mysql_error());
	  }
	  mysql_select_db("my_db", $con);
	  mysql_query("DELETE FROM Persons WHERE LastName='Masri'");
	  mysql_close($con);
	  ?>
	بعد الحذف سيصبح الجدول كالتالي
| FirstName | LastName | 
|---|---|
| Ahmad | Jasem | 
| Fuad | Alasad |