PDA

View Full Version : سوال: مشکل delete



capitan_nemesis
پنج شنبه 31 مرداد 1398, 12:58 عصر
به اسم پدر و با سلام

یه مشکل در delete دارم و با سرچ فراوان و تست کد های فراوان به هیچ نتیجه ایی نریسیم

اینم لیست
http://s4.picofile.com/file/8370249568/register_list.php.html

اینم خود کد
http://s3.picofile.com/file/8370250100/register_delete.php.html

اینم عکس از خود delete
http://uupload.ir/files/qgjh_delete_thumb.png (http://uupload.ir/view/qgjh_delete.png)

هر چی بلد بودم نوشتم دیگه نمیدونم چی بنویسم

capitan_nemesis
پنج شنبه 31 مرداد 1398, 13:51 عصر
<?php
require_once "connection.php";

try {

$conn = new connection;
$conn->openConnet();

if(!$conn){
die("error connection");

}else {
$delete = filter_input(INPUT_POST, "delete", FILTER_SANITIZE_SPECIAL_CHARS);
$id = filter_input(INPUT_POST, "id", FILTER_SANITIZE_NUMBER_INT);

if (isset($delete))
{
if(isset($id) && is_numeric($id) && $id > 0)
{
$query = "DELETE FROM user WHERE id = :id";
$stmt = $conn->prepare($query);
$stmt->bindParam(":id",$id);
$result = $stmt->execute();
if ($result)
{
echo ("Record Successfully Deleted");
}
if(!$result->rowCount())
{
echo "Deletion failed";

}
} else {
header("Location: ../register_list.php");
}
}
}
$conn->closeConnect();

} catch (PDOException $e) {
echo ("error". $e->getMessage());
}

plague
پنج شنبه 31 مرداد 1398, 18:21 عصر
امیدوارم ناراحت نشی رک میگم

ولی سعی کن درست سوال بپرسی که انقد بی جواب نمونه سوالات
شما نه اررورت رو گزاشتی نه مشکل رو گفتی نه خروجی های برنامت رو گفتی , چجوری قراره کسی کمت کنه وقتی معلوم نیست مشکلت چیه


وظیفه شماست که شفاف و کامل مشکلت از جمله اررو ها و خروجی برنامت رو بگی تا کسی که کمک میکنه با یک نگاه متوجه بشه مشکل از کجاست و کمکت کنه
نه اینکه بگی این فایلا برید در بیارید برام که مشکل چیه ... کمتر کسی وقتش رو داره کدای شما رو اجرا و تست کنه تا ببینه مشکل چیه بعد بره حلشون کنه

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

capitan_nemesis
پنج شنبه 31 مرداد 1398, 19:06 عصر
امیدوارم ناراحت نشی رک میگم

ولی سعی کن درست سوال بپرسی که انقد بی جواب نمونه سوالات
شما نه اررورت رو گزاشتی نه مشکل رو گفتی نه خروجی های برنامت رو گفتی , چجوری قراره کسی کمت کنه وقتی معلوم نیست مشکلت چیه


وظیفه شماست که شفاف و کامل مشکلت از جمله اررو ها و خروجی برنامت رو بگی تا کسی که کمک میکنه با یک نگاه متوجه بشه مشکل از کجاست و کمکت کنه
نه اینکه بگی این فایلا برید در بیارید برام که مشکل چیه ... کمتر کسی وقتش رو داره کدای شما رو اجرا و تست کنه تا ببینه مشکل چیه بعد بره حلشون کنه

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


آخه وقتی اررور نمیده چه ارروری بزارم
دارم api مینویسم و یه یه لیست گذاشتم که تمام user ها رو مشخص کنه که در register_list میبینید و قسمتی داره که دکمه هستش با کلیک میکنم قسمت register_delete میره ولی هیچ عملی انجام نمیده

این قسمت لیست رو نشون میده


<!DOCTYPE html>
<html>
<head>
<link href="css/register_list.css" rel="stylesheet" type="text/css"/>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>register list</title>
</head>
<body>
<div class="tab">
<form action="php/register_delete.php" method="post">
<table border = "1">
<tr>
<th>id</th>
<th>username</th>
<th>password</th>
<th>email</th>
<th>image</th>
<th>message</th>
<th>brithday</th>
<th>group</th>
<th>action</th>
</tr>

<?php
require_once "php/connection.php";

$conn = new connection;
$conn->openConnet();

if (!$conn) {
die("error connection");

}else {
$query = "SELECT * FROM `user`";
$stmt = $conn->prepare($query);
$stmt->execute();

foreach($stmt as $row)
{
echo("<tr>");
echo('<td>'.$row["id"]."</td>");
echo('<td>'.$row["username"]."</td>");
echo("<td>".$row["password"]."</td>");
echo("<td>".$row["email"]."</td>");
echo("<td>".'<img src="$row["image"]" height="100" width="100">'."</td>");
echo("<td>".$row["message"]."</td>");
echo("<td>".$row["brithday"]."</td>");
echo("<td>".$row["group"]."</td>");
echo ("<td>".'<input type="hidden" name="id" value="$row["id"]"><button type="submit" name="delete" value="submit">delete</button>'."</td>");
echo("</tr>");
}
}
$conn->closeConnect();
?>
</table>
</form>
</div>
</body>
</html>




این قسمت کد delete هستش

<?php
require_once "connection.php";

try {

$conn = new connection;
$conn->openConnet();

if(!$conn){
die("error connection");

}else {
$delete = filter_input(INPUT_POST, "delete", FILTER_SANITIZE_SPECIAL_CHARS);
$id = filter_input(INPUT_POST, "id", FILTER_SANITIZE_NUMBER_INT);

if (isset($delete))
{
if(isset($id) && is_numeric($id) && $id > 0)
{
$query = "DELETE FROM user WHERE id = $id";
$stmt = $conn->prepare($query);
$stmt->bindParam(":id",$id);
$result = $stmt->execute();
if ($result)
{
echo ("Record Successfully Deleted");
}
if(!$result->rowCount())
{
echo "Deletion failed";

}
} else {
header("Location: ../register_list.php");
}
}
}
$conn->closeConnect();

} catch (PDOException $e) {
echo ("error". $e->getMessage());
}


متاسفانه اررور نمیده که بزارم پس هیچی
عمل انجام نمیده اصلا
خیلی هم سرچ کردم ولی متاسفانه در سایت های فارسی از هم کپی میکنند کدی که کار کنه نمیزارند
سایت انگلیسی هم خیلی گشتم ولی بازم هیچ عملی انجام نمیشه
کد رو از youtube نوشتم که کدش رو هم میبینید اونم حذف نمیکنه رکورد به رکورد نه در آن واحد

peymang
پنج شنبه 31 مرداد 1398, 20:06 عصر
منم یه راهنمایی می کنم ربطی به سوالت نداره ولی امیدوارم کمکت کنه

1. کد نویسیت اسپاگتی هست و بقیه فقط برای خواندن کدت باید کلی( حداقل 10 دقیقه) وقت بزارن تا متوجه بشن چی نوشتی و خودت هم بعد از چند وقت روی کدت نگاه کنی نمی فهمی چی نوشتی و باید مثل مفسر خط به خطش رو دوباره مرور کنی

2. همه دستورات رو خودت داری می نویسی و هر دستور رو هر بار تکرار می کنی، که باعث افزایش تعداد خطوط برنامت میشه و در نتیجه خطا زیاد و خطایابی سخت میشه

3. بیشتر از این سرت رو درد نمیارم ...

راه حل اینه که از یه فریمورک استفاده کنی یا حداقل از یک معماری ( مثلا mvc ) برای کد زدن پیروی کنی
پیشنهاد من codeigniter یا laravel است.

plague
شنبه 02 شهریور 1398, 16:37 عصر
اگه خروجی نمیده هیچی خوب همین رو باید بگی
شما فقط گفتی مشکل دارم ... بگو اجرا میکنم مثلا هیچ اتفاقی نمیفته و خروجی یا ارروری نمیده


وقتی کدت خروجی مد نظرت رو نمیده و نمیدونی مشکل از کجاست
در جاهای مختلف echo یا var_dump بزار که متوجه بشی فرم ارسالیت تا کجا میره و کجا نمیره

مثلا اینجا


$delete = filter_input(INPUT_POST, "delete", FILTER_SANITIZE_SPECIAL_CHARS);


$delete رو var_dump کن ببین چی هست توش
شما کلی if داری تو کدت که یکی از اینا ممکنه اجرا نشه
توی if هات مخصوصا یه خروجی بزار که متوجه بشی کدوما اجرا میشه و کدوما اجرا نمیشه

در ضمن شما همه فیلد هات رو توی یک form گزاشتی و همه فیلد ها یک نام دارن


<input type="hidden" name="id" value="$row["id"]">





شما نمیتونی فیلد با نام تکراری داشته باشی توی یک فرم
مثل اینه که 100 نفر با اسم علی داشته باشی یجا بعد بگی علی حذف بشه ... مشخصه که معلوم نیست کدوم رو میگی
توی فرم هم وقتی فیلد با نام تکراری داشته باشی فقط آخریش رو در نظر میگیره


باید برای هر فیلد یک فرم مجزا داشته باشی