logo
logo
تبلیغ کلیکی تاپ سایت 98

پروژه php و mysql به روش شی گرایی

پروژه php و mysql به روش شی گرایی
هدایت عباسی آموزش php

در این بخش از آموزش php از تاپ سایت 98 قصد داریم به آموزش کامل دیتابیس با روش شی گرایی ( MySQLi Object-oriented ) بصورت پروژه محور بپردازیم. کدهای آماده درج ، ویرایش ، حذف و نمایش اطلاعات در اختیار شما عزیزان قرار می گیرد

برای کار با دیتابیس در php بایستی ابتدا ساخت دیتابیس ، جدول و دستورات mysql را یاد گرفته باشید.

آموزش کامل sql و mysql

شروع پروژه php و mysql به روش شی گرایی

برای شروع پروژه php و mysql به روش شی گرایی ( MySQLi Object-oriented ) بایستی یک دیتابیس بنام testphp1 در phpmyadmin ایجادکنید.

سپس یک جدول بنام topsite98 بسازید.

برای ساخت جدول در phpmyadmin می بایست در بخش create table نام جدول را تایپ کنید سپس تعداد فیلدها را مشخص کنید.

در انتها روی دکمه Go کلیک کنید تا جدول ساخته شود.

من یک جدول نام topsite98 ساختم که شامل 3 فیلد id ( از نوع عددی و auto increment  است که خودکار عدد را وارد نمایید)  و فیلد fname  که رشته ای و از نوع varchar  و مقدار 100 است و فیلد numb که از نوع int می باشد.

از منوی phpmyadmin و از طریق insert چند رکورد در آن وارد نمایید.

باز کردن و اجرای فایل php

برای باز کردن و اجرای فایل php بایستی حتما xampp را استارت کنیم.

سپس در مرورگر آدرس فایل را قرار دهید مثلا

localhost/projeh/display.php

توجه نمایید نمی توانید مانند html فایل ها را باز و اجرا کنید.

حتما باید پوشه مثلا projeh در xampp و پوشه htdocs باشد.

فایل display.php نیز در پوشه projeh باشد.

ارتباط با دیتابیس با روش شی گرایی

برای ارتباط با دیتابیس با روش شی گرایی ( MySQLi Object-oriented ) می توانید از کد زیر استفاده نمایید.

یک فایل با نام connect.php ایجاد کنید و کد زیر را در فایل کپی کنید.

مثال

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "testphp1";
$conn = new mysqli($servername, $username, $password,$dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>

متغیر $servername نام سرور است که در کامپیوتر و لوکال localhost می باشد.

متغیر $username که نام یوزر است و بصورت پیش فرض root می باشد. در phpmyadmin در بخش user accounts می توانید یوزر جدید نیز تعریف کنید.

متغیر $password رمز عبور دیتابیس است که بصورت پیش فرض خالی می باشد. اما در هاست معمولا نام کاربری و رمز عبور قوی تعریف می کنید.

متغیر $dbname نام دیتابیس می باشد.

new mysqli

برای اتصال به دیتابیس و ساخت کانکشن جدید از new mysqli استفاده می کنیم.

همان طور که در مثال بالا مشاهده کردید در آن نام سرور ، یوزرنیم ، پسورد ، نام دیتابیس قرار می گیرید و اتصال به دیتابیس را برقرار می کند.

خطای اتصال به دیتابیس

از $conn->connect_error برای چک کردن ارور یا خطا کانکشن یا ارتباط با دیتابیس استفاده می شود.

 مثلا من نام دیتابیس را اشتباه وارد کردم و خطای زیر رخ داد.

Warning: mysqli::__construct(): (HY000/1049): Unknown database 'testphp10' in C:\xampp\htdocs\HTML982\pro2\connect.php on line 6 Connection failed: Unknown database 'testphp10'

خطای نام سرور را در زیر می بینید.

من بجای localhost از localhost2 استفاده کردم تا این خطا رخ هد.

Warning: mysqli::__construct(): php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\xampp\htdocs\HTML982\pro2\connect.php on line 6
Warning: mysqli::__construct(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\xampp\htdocs\HTML982\pro2\connect.php on line 6 Connection failed: php_network_getaddresses: getaddrinfo failed: No such host is known.

خطای یوزرنیم

من بجای root از root2 استفاده کردم و خطای زیر رخ داد.

اگر با چنین خطایی مواجه شدید حتما هر 4 (نام سرور ، یوزر ، پسورد و نام دیتابیس) گزینه را چک کنید.

Warning: mysqli::__construct(): (HY000/1045): Access denied for user 'root2'@'localhost' (using password: NO) in C:\xampp\htdocs\HTML982\pro2\connect.php on line 6 Connection failed: Access denied for user 'root2'@'localhost' (using password: NO)

خطای پسورد

من عمدا رمز عبور یا پسورد اشتباه وارد کردم و خطای زیر رخ داد.

Warning: mysqli::__construct(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES) in C:\xampp\htdocs\HTML982\pro2\connect.php on line 6 Connection failed: Access denied for user 'root'@'localhost' (using password: YES)

نمایش داده ها در php با روش شی گرایی

حال به سراغ نمایش داده ها در php با روش شی گرایی ( MySQLi Object-oriented ) می رویم.

یک فایل بنام display.php بسازید و کد زیر را در آن ذخیره نمایید.

مثال

<?php
echo "<a href='insert.php'>insert data</a><br><br>";
include_once 'connect.php';

$sql = "SELECT id, fname, numb FROM topsite98";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$id = $row["id"];
echo "id: " . $row["id"]. " - Name: " . $row["fname"]. " " . $row["numb"]. " - <a href='del.php?id=$id'>del</a>"." - <a href='edit.php?id=$id'>edit</a>"."<br>";
}
} else {
echo "0 results";
}
$conn->close();
?>

در ابتدا من یک لینک به فایل insert.php داده ام که بعدا ایجاد خواهیم کرد و برای درج رکورد استفاده می کنیم.

سپس با دستور include_once فایل connect.php را به این فایل متصل می کنیم.

برای جلوگیری از کدهای اضافی از این روش استفاده می کنیم و نیاز نیست که کد اتصال به دیتابیس را در همه صفحات قرار دهیم.

حال با دستور select اطلاعات جدول topsite98 را نمایش می دهیم.

$conn->query($sql)

از دستور $conn->query($sql) برای اجرای کوئری استفاده می کنم نتایج در متغیر $result ذخیره می شود.

num_rows

از num_rows برای شمردن رکوردها استفاده می کنیم.

با دستور if بررسی می کنیم که آیا رکوردی در جدول topsite98 وجود دارد یا خیر. اگر وجود داشت به خط بعد می رود در غیر این صورت نمایش می دهد نتیجه صفر .

fetch_assoc()

اگر بیش از صفر رکورد داشته باشیم ، تابع fetch_assoc ()  تمام نتایج را در یک آرایه قرار می دهد که می توانیم از طریق حلقه while آن را چاپ کنیم

هر رکورد در متغیر $row قرار داده می شود و می توانید با دستور echo چاپ کنیم.

ما به غیر از چاپ اطلاعات جدول در کنار آنها یک لینک برای حذف و یک لینک برای ویرایش اطلاعات جدول قرار داده ایم.

دریافت اطلاعات فرم در php

حال به سراغ دریافت اطلاعات فرم در php و درج رکورد در جدول با روش شی گرایی ( MySQLi Object-oriented ) می رویم.

یک فایل بنام insert.php ایجاد نمایید. کد زیر را در آن کپی کنید.

مثال

<html>
<head>
<meta charset="UTF-8">
<title>Insert a Record from MySQL Database</title>
</head>
<body>
<?php
if(isset($_POST['insbtn'])) {
include_once 'connect.php';
$fname = $_POST['fname'];
$numb = $_POST['numb'];
$sql = "INSERT INTO topsite98 (fname, numb) VALUES ('$fname' , $numb)";

if ($conn->query($sql) === TRUE) {
echo "<script>alert('new record successfully');</script>";
echo "<script>location.href = 'display.php';</script>";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
}else {
?>
<form method = "post" action = "<?php $_PHP_SELF ?>">
<input name="fname" type="text" placeholder="نام">
<input name="numb" type="text" placeholder="نمره">
<input name="insbtn" type="submit" value="درج">
</form>
<?php
}
?>
</body>
</html>

پس از اجرای فایل ، یک فرم مشاهده می کنید که نام و نمره را از شما می گیرد.

اگر روی دکمه submit یا درج کلیک کنید ابتدا فایل connect.php باز می شود.

سپس اطلاعات از طریق $_POST در متغیر قرار می گیرد.

دستور Insert Into

دستور  Insert Into برای درج رکورد در جدول دیتابیس استفاده می شود.

توجه کنید متغیر رشته ای در تک کوتیشن قرار داده ام.

حتما نام جدول و فیلدها را با دقت وارد نمایید.

اگر کوئری به درستی اجرا شود و درج اطلاعات با موفیت تمام شود یک پیغام new record successfully نمایش داده می شود و سپس به صفحه display.php ریدایرکت می شوید و رکورد جدید نمایش داده می شود.

حذف رکورد با شی گرایی ( MySQLi Object-oriented )

برای حذف رکورد با شی گرایی ( MySQLi Object-oriented ) می توانید از کد زیر استفاده نمایید.

ابتدا یک فایل با نام del.php بسازید و کد زیر را در آن ذخیره نمایید.

در هنگام نمایش اطلاعات جدول ، یک لینک به فایل del.php داده شده و در کنار لینک علامت سوال و id قرار داده شده است.

هنگامی که روی لینک del کلیک می شود در مرورگر مشاهده می کنید که در کنار فایل del.php یک علامت سوال و یک عدد قرار دارد که شماره id است و ما id را می گیریم و حذف را بر اساس id انجام میدهیم.

فایل connect.php فراموش نشود.

پس از اینکه حذف رکورد با موفقیت انجام شد یک alert نمایش داده می شود و به صفحه نمایش اطلاعات جدول ریدایرکت می شوید تا نتیجه کار را ببینید.

مثال

<?php
include_once 'connect.php';
$id=$_GET['id'];
$sql = "DELETE FROM topsite98 WHERE id=$id";
if ($conn->query($sql) === TRUE) {
echo "<script>alert('delete record successfully');</script>";
echo "<script>location.href = 'display.php';</script>";
} else {
echo "Error deleting record: " . $conn->error;
}
$conn->close();
?>

ویرایش رکورد در php با روش شی گرایی

برای ویرایش رکورد با شی گرایی ( MySQLi Object-oriented ) می توانید از کد زیر استفاده نمایید.

کد را در یک فایل edit.php کپی و ذخیره کنید .

ما در صفحه نمایش اطلاعات ، یک لینک قرار داده ایم که شما را به صفحه ویرایش اطلاعات می برد.

هنگام ارسال id را نیز ارسال می شود.

ویرایش اطلاعات بر اساس id انجام میشود.

ابتدا اطلاعات در فرم نمایش داده می شود و سپس می توانید آنها را ویرایش کنید و پس از زدن دکمه ، ویرایش انجام میشود و شما به صفحه نمایش اطلاعات ریدایرکت می شوید تا نتیجه را ببینید.

ابتدا باید فایل connect.php برای اتصال دیتابیس به صفحه لینک شود.

پس از زدن دکمه ویرایش ، اطلاعات با $_POST در متغیرهایی ذخیره می شود و با دستور update ویرایش اطلاعات انجام می شود.

سپس یک alert نمایش داده شده و به صفحه نمایش اطلاعات ریدایرکت می شوید تا نتیجه را ببینید.

مثال

<?php
include_once 'connect.php';
$id = $_GET['id'];
if(isset($_POST['editbtn'])) {
$fname = $_POST['fname'];
$numb = $_POST['numb'];
$id1 = $_POST['iduser'];
$sql = "UPDATE topsite98 SET fname='$fname' ,numb=$numb, id=$id1 WHERE id=$id";
if ($conn->query($sql) === TRUE) {
echo "<script>alert('update record successfully');</script>";
echo "<script>location.href = 'display.php';</script>";
} else {
echo "Error updating record: " . $conn->error;
}
}else {
$sql = "SELECT id, fname, numb FROM topsite98 where id=$id";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Update Record</title>
</head>
<body>
<form method="post" action="<?php $_PHP_SELF ?>">
<input name="idhidden" type="hidden" value="<?php echo $row['id']?>">
<input name="iduser" type="text" value="<?php echo $row['id']?>">
<input name="fname" type="text" value="<?php echo $row['fname']?>">
<input name="numb" type="text" value="<?php echo $row['numb']?>">
<input name="editbtn" type="submit" value="ویرایش">
</form>
</body>
</html>

امیدواریم این پروژه php برای شما مفید باشد.

موفق باشید.

اگر به دنبال کار پاره وقت هستید با ما تماس بگیرید.

اگر سوال یا نظری دارید در بخش کامنت ها بنویسید.اگر موضوع خاصی مد نظر شماست که در سایت موجود نیست در بخش کامنت ها بنویسید

کسب و کار
دوره های آموزشی دوره های آموزشی

نظرات کاربران

از دیدگاه مرتبط با موضوع استفاده نمایید.

از تبلیغ سایت یا شبکه اجتماعی خودداری فرمایید.

برای پاسخ گویی بهتر در سایت ثبت نام نمایید و سپس سوال خود را مطرح فرمایید.