جلوگیری از ثبت داده تکراری در دیتابیس
سلام
وقت بخیر
ببخشید کسی میتونه تو کد زیر بهم کمک کنه؟
من کد زیر رو درست کردم برای اینکه لینک های یک صفحه رو دربیارم و توی دیتابیس ذخیره کنم ولی هرکاری میکنم باز لینک های تکراری ذخره میشن
نمیدونماشتباه رفتم راه رو یا چی باعث شده که تکراری ها ثبت بشن کد اصلی من اینه اینو میخوام گاری کنم لینک تکرای ثبت نکنه توی دیتابیس
لطفا کمکم کنید
کد من:
<?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 ;
پاسخ : جلوگیری از ثبت داده تکراری در دیتابیس
سلام و عرض ادب
احتراما باید در دیتابیس key تعریف کنید.
یعنی این فیلدی که شما میخواهید تکراری ثبت نشه داخل دیتابیس باید یک نوع ایندکس باشه.
پاسخ : جلوگیری از ثبت داده تکراری در دیتابیس
سلام
میشه بیشتر توضیح بدید یا لینکی که آموزش کامل داده همراه با مثال بهم بدید
من هرچی گشتم پیدا نکردم
این کد من باید چه شکلی بشه؟ میشه توی کد تغیر اعمال کنید ممنون میشم
پاسخ : جلوگیری از ثبت داده تکراری در دیتابیس
سلام
توی دیتاهایی که ثبت میکنید آدرس url رو هم توی دیتابیس ذخیره کنید
موقع execute یا ذخیره کردن اطلاعات جدید توی دیتابیس, برسی کنید اگر URL توی دیتابیس موجود بود از import کردن صرف نظر کنید
البته میتونید برای اینکار یک کد uniq هم بسازید
مثلاً بجای ذخیره کردن url از عنوان استفاده کنید
پاسخ : جلوگیری از ثبت داده تکراری در دیتابیس
نقل قول:
نوشته اصلی توسط
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
اینو تست بفرمایید.
پاسخ : جلوگیری از ثبت داده تکراری در دیتابیس
منظورتون اینه اینجوری بنزنم:
کد:
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 ;
اگه منظورتون اینه با همین روش هم باز همونجوری تکراری ثبت میشه
پاسخ : جلوگیری از ثبت داده تکراری در دیتابیس
نقل قول:
نوشته اصلی توسط
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 مثال بود اصل کاری بونیک کردن تیبل بود شما باید لینک ها رو هم توی دیتابیس ذخیره کنید و اونم یونیک کنید که مشکلتون برطرف بشه.
پاسخ : جلوگیری از ثبت داده تکراری در دیتابیس
نقل قول:
نوشته اصلی توسط
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 ;
اینم نمیشه چرا باز نمیشه
پاسخ : جلوگیری از ثبت داده تکراری در دیتابیس
نمونه کد تکمیل شده طبق نیاز شما : https://vrl.ir/umapyT
پاسخ : جلوگیری از ثبت داده تکراری در دیتابیس
ممنون دستتون درد نکنه
:53::53::53:
- - - Updated - - -
ممنون دستتون درد نکنه
:53::53::53:
- - - Updated - - -
نقل قول:
نوشته اصلی توسط
lizard.tiny
ممنون دستتون درد نکنه
:53::53::53: