-
October 19th, 2019, 16:49
#1
جلوگیری از ثبت داده تکراری در دیتابیس
سلام
وقت بخیر
ببخشید کسی میتونه تو کد زیر بهم کمک کنه؟
من کد زیر رو درست کردم برای اینکه لینک های یک صفحه رو دربیارم و توی دیتابیس ذخیره کنم ولی هرکاری میکنم باز لینک های تکراری ذخره میشن
نمیدونماشتباه رفتم راه رو یا چی باعث شده که تکراری ها ثبت بشن کد اصلی من اینه اینو میخوام گاری کنم لینک تکرای ثبت نکنه توی دیتابیس
لطفا کمکم کنید
کد من:
<?php
$urls = file_get_contents('http://home.ucom.ir');
$dom = new DOMDocument();
@$dom->loadHTML($urls);
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");
for($i = '0' ; $i < $hrefs->length; $i++){
$href = $hrefs->item($i);
$url = $href->getAttribute('href');
$url = filter_var($url, FILTER_SANITIZE_URL);
// validate url
if(!filter_var($url, FILTER_VALIDATE_URL) === false){
echo '<a href="'.$url.'">'.$url.'</a><br />';
$conn =new mysqli('localhost', 'root', '' , 'mylink2');
$sql = $conn->prepare("INSERT INTO site_data (author,title,tags) VALUES (?, ?, ?)");
$author=$url;
$title = $href->nodeValue;
$tags= $url;
$sql->bind_param("sss", $author, $title, $tags);
if($sql->execute()) {
$success_message = "Added Successfully";
} else {
$error_message = "Problem in Adding New Record";
$sql->close();
$conn->close();
}
}}
?>
کد دتابیس:
CREATE TABLE IF NOT EXISTS `site_data` (
`id` int(11) NOT NULL,
`author` varchar(500) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`title` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`tags` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;
-
-
October 19th, 2019 16:49
# ADS
-
October 19th, 2019, 19:09
#2
عضو انجمن
پاسخ : جلوگیری از ثبت داده تکراری در دیتابیس
سلام و عرض ادب
احتراما باید در دیتابیس key تعریف کنید.
یعنی این فیلدی که شما میخواهید تکراری ثبت نشه داخل دیتابیس باید یک نوع ایندکس باشه.
شرکت "
داده پرداز آگرین زاب"به شماره ثبت :671 و شناسه ملی :14005984162 "مسئولیت محدود"
ZABHOST.NET
ارائه دهنده ی خدمات هاستینگ ,سرورمجازی ایران,نمایندگی هاست سی پنل ایران ,دارای نماد اعتماد 2 ستاره
-
تعداد تشکر ها از iran20host به دلیل پست مفید
-
October 20th, 2019, 18:08
#3
پاسخ : جلوگیری از ثبت داده تکراری در دیتابیس
سلام
میشه بیشتر توضیح بدید یا لینکی که آموزش کامل داده همراه با مثال بهم بدید
من هرچی گشتم پیدا نکردم
این کد من باید چه شکلی بشه؟ میشه توی کد تغیر اعمال کنید ممنون میشم
-
-
October 20th, 2019, 20:20
#4
عضو انجمن
پاسخ : جلوگیری از ثبت داده تکراری در دیتابیس
سلام
توی دیتاهایی که ثبت میکنید آدرس url رو هم توی دیتابیس ذخیره کنید
موقع execute یا ذخیره کردن اطلاعات جدید توی دیتابیس, برسی کنید اگر URL توی دیتابیس موجود بود از import کردن صرف نظر کنید
البته میتونید برای اینکار یک کد uniq هم بسازید
مثلاً بجای ذخیره کردن url از عنوان استفاده کنید
-
تعداد تشکر ها از lizard.tiny به دلیل پست مفید
-
October 20th, 2019, 20:29
#5
عضو انجمن
پاسخ : جلوگیری از ثبت داده تکراری در دیتابیس

نوشته اصلی توسط
seosaz
کد دتابیس:
CREATE TABLE IF NOT EXISTS `site_data` (
`ID int NOTNULLUNIQUE,
`author` varchar(500) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`title` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`tags` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;
کد HTML:
ID int NOT NULL UNIQUE
اینو تست بفرمایید.
ویرایش توسط iran20host : October 20th, 2019 در ساعت 20:33
شرکت "
داده پرداز آگرین زاب"به شماره ثبت :671 و شناسه ملی :14005984162 "مسئولیت محدود"
ZABHOST.NET
ارائه دهنده ی خدمات هاستینگ ,سرورمجازی ایران,نمایندگی هاست سی پنل ایران ,دارای نماد اعتماد 2 ستاره
-
تعداد تشکر ها ازiran20host به دلیل پست مفید
-
October 20th, 2019, 21:12
#6
پاسخ : جلوگیری از ثبت داده تکراری در دیتابیس
منظورتون اینه اینجوری بنزنم:
کد:
CREATE TABLE IF NOT EXISTS `site_data` (
`ID` int NOT NULL UNIQUE,
`author` varchar(500) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`title` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`tags` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;
- - - Updated - - -
منظورتون اینه اینجوری بنزنم:
کد:
CREATE TABLE IF NOT EXISTS `site_data` (
`ID` int NOT NULL UNIQUE,
`author` varchar(500) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`title` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`tags` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;
اگه منظورتون اینه با همین روش هم باز همونجوری تکراری ثبت میشه
-
-
October 21st, 2019, 00:59
#7
عضو انجمن
پاسخ : جلوگیری از ثبت داده تکراری در دیتابیس

نوشته اصلی توسط
seosaz
منظورتون اینه اینجوری بنزنم:
کد:
CREATE TABLE IF NOT EXISTS `site_data` (
`ID` int NOT NULL UNIQUE,
`author` varchar(500) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`title` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`tags` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;
- - - Updated - - -
منظورتون اینه اینجوری بنزنم:
کد:
CREATE TABLE IF NOT EXISTS `site_data` (
`ID` int NOT NULL UNIQUE,
`author` varchar(500) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`title` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
`tags` varchar(1000) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;
اگه منظورتون اینه با همین روش هم باز همونجوری تکراری ثبت میشه
عزیز table ID مثال بود اصل کاری بونیک کردن تیبل بود شما باید لینک ها رو هم توی دیتابیس ذخیره کنید و اونم یونیک کنید که مشکلتون برطرف بشه.
شرکت "
داده پرداز آگرین زاب"به شماره ثبت :671 و شناسه ملی :14005984162 "مسئولیت محدود"
ZABHOST.NET
ارائه دهنده ی خدمات هاستینگ ,سرورمجازی ایران,نمایندگی هاست سی پنل ایران ,دارای نماد اعتماد 2 ستاره
-
تعداد تشکر ها از iran20host به دلیل پست مفید
-
October 21st, 2019, 20:51
#8
پاسخ : جلوگیری از ثبت داده تکراری در دیتابیس

نوشته اصلی توسط
iran20host
کد HTML:
ID int NOT NULL UNIQUE
اینو تست بفرمایید.
منظورتون اینه؟
کد:
CREATE TABLE IF NOT EXISTS `site_data` (
`ID` int NOT NULL UNIQUE,
`author` varchar(300) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL UNIQUE,
`title` varchar(300) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL UNIQUE,
`tags` varchar(300) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL UNIQUE
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;
اینم نمیشه چرا باز نمیشه
-
-
October 21st, 2019, 22:26
#9
عضو انجمن
پاسخ : جلوگیری از ثبت داده تکراری در دیتابیس
نمونه کد تکمیل شده طبق نیاز شما : https://vrl.ir/umapyT
-
تعداد تشکر ها از lizard.tiny به دلیل پست مفید
-
October 22nd, 2019, 13:45
#10
پاسخ : جلوگیری از ثبت داده تکراری در دیتابیس
-
تعداد تشکر ها از seosaz به دلیل پست مفید