PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : ثبت یک آرایه در یک فیلد از جدول mysql



<?php?>
April 30th, 2016, 15:02
بعد از ساختن دسته بندی مطالب نوبت به ایجاد صفحه ( ایجاد پست ) رسیدم .
همه چیز اوکیه - و وقتی کاربر برای پستش دسته انتخاب میکنه ( id دسته های مورد نظر رو میریزم داخل یک ارایه ) . شما فرض کنید یک پست در چنتا دسته باشه . مثلا یک پست هم در زمینه سلامت باشه هم در زمینه ورزش و هم در زمینه بدنسازی .
حالا موقع ثبت آرایه مورد نظر در بانک اطلاعاتی میرسه . هر کاری میکنم نمیتونم همه id های داخل ارایه رو تو mysql ثبت کنم . از foreach هم استفاده کردم فقط id اخرین دسته انتخابی ثبت میشه .

miladtnt
April 30th, 2016, 15:15
اخرش رو متوجه نشدم foreach برا چیه

- - - Updated - - -

<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);

echo json_encode($arr);
?>

The above example will output:

{"a":1,"b":2,"c":3,"d":4,"e":5}

<?php?>
April 30th, 2016, 15:16
$category_id=$_POST['category_id'];

foreach($category_id as $cat){

}
if($a==1 && $b==1 && $c==1 && $d==1 && $e==1 && !empty($time) && !empty($date) && !empty($level)){
$record=$connect->prepare("INSERT INTO `db_post` (`title`,`text`,`description`,`keywords`,`time`,`d ate`,`author_id`,`category_id`) VALUES (?,?,?,?,?,?,?,?)");
$record->bindValue(1,$post['title']);
$record->bindValue(2,$post['text']);
$record->bindValue(3,$post['description']);
$record->bindValue(4,$post['keywords']);
$record->bindValue(5,$time);
$record->bindValue(6,$date);
$record->bindValue(7,$level);
$record->bindValue(8,$cat);
if($record->execute()){
$success='پست شما با موفقیت در وبسایت ثبت شده است .';
}
else{
header('location: post.php');
die;
}
}

miladtnt
April 30th, 2016, 15:16
ارایه رو json کنین اونو تو دیتابیس ذخیره کنین ! وقتیم از دیتابیس درمیارید json_decode استفاده کنین

T.Toosi
April 30th, 2016, 15:16
کدی که نوشتید قرار دهید، به جای آرایه برای دسته بندی، implode کنید با کارکتر , ،حجم کمتری در دیتابیس میگیرد.

miladtnt
April 30th, 2016, 15:24
$category_id=$_POST['category_id'];

foreach($category_id as $cat){

}
if($a==1 && $b==1 && $c==1 && $d==1 && $e==1 && !empty($time) && !empty($date) && !empty($level)){
$record=$connect->prepare("INSERT INTO `db_post` (`title`,`text`,`description`,`keywords`,`time`,`d ate`,`author_id`,`category_id`) VALUES (?,?,?,?,?,?,?,?)");
$record->bindValue(1,$post['title']);
$record->bindValue(2,$post['text']);
$record->bindValue(3,$post['description']);
$record->bindValue(4,$post['keywords']);
$record->bindValue(5,$time);
$record->bindValue(6,$date);
$record->bindValue(7,$level);
$record->bindValue(8,$cat);
if($record->execute()){
$success='پست شما با موفقیت در وبسایت ثبت شده است .';
}
else{
header('location: post.php');
die;
}
}



این روش درستی نیست همه دسته هاتون که تو ارایه هستن رو اینجور ذخیره کنین

- - - Updated - - -

دوست عزیز نمیدونم تو کلاس های هسته جلوش گرفته شده یا نه ولی این روش کدنویسیتون sql injection داره ها:)

<?php?>
April 30th, 2016, 15:40
از sql injection با یک تابع هنگام ورودی جلوگیری شده . بخشی از کد رو اینجا گذاشتم .
این تمام کد صفحه ایجاد مطلب هست :
http://paste.ofcode.org/scghhzeiycWX6b3AwDD4qd

<?php?>
April 30th, 2016, 16:44
حل شد از همه دوستان ممنونم