PDA

View Full Version : درج نشدن اطلاعات در دیتابیس به وسیله ی input



faarhaang
جمعه 03 آذر 1396, 22:54 عصر
سلام.
من یک صفحه دارای دو input دارم که یکی برای وارد کردن متن توسط ادمین سایت هست و یکی دیگه برای قرار دادن لینک فایل ها هست که توسط فایل منجر CKfinder فایل انتخاب و لینک فایل در input درج میشه.
اطلاعات این 2 input به هم وابسته هستن. مثلا یکی از input ها نام آهنگ هست و input بعدی url آپلود شده آهنگ هست.




[PHP]if (!isset($_GET['gallery']) && !isset($_GET['etr']) && isset($_GET['music'])){
?>
<form action="server.php?server=music&id=<? echo $_GET['id']; ?>" method="post">

<div class="n-add-gallery">
<a id="n-add" href="#">اضافه کردن مداحی جدید<i class="fa fa-plus-square-o" aria-hidden="true"></i></a>
</div><!--add-->

<div class="main">
<span id="n-music">

<div class="n-img1">
<label>نام </label>
<input type="text" id="name1" name="name[]"/>

<label>انتخاب فایل</label>
<input type="text" name="url[]" id="url1" READONLY/>
<span class="n-select" onclick="openPopup(1)">انتخاب فایل</span>
<span class="n-del"><i onclick="dele(1)" class="fa fa-trash fa-2x" aria-hidden="true"></i></span>

</div><!--n-img-->
</span><!--add-gallery-->

<div id="n-insert"><button>ذخیره </button></div>

</div><!--main-->
</form>
<?
}
?>





به صورت پیشفرض 2 عدد input وجود داره و ادمین با زدن دکمه add میتونه تعداد input زیاد کنه.
کد jquery اینه ((متاسفانه هر کاری کردم با تگ js نشون نمیداد دیگه jquery کردم :لبخند:. البته مشکل از این فایل نیست))








var i=2;
$('#n-add').click(function () {
var input=$('#url'+(i-1)+' ').val();
if (input!="") {
$('#n-music').append('<div class="n-img'+i+'">\n' +
' <label>نام مداحی</label>\n' +
' <input type="text" id="name'+i+'" name="name[]""/>\n' +
' <label>انتخاب فایل</label>\n' +
' <input type="text" name="url[]" id="url'+i+'" READONLY/>\n' +
' <span class="n-select" onclick="openPopup('+i+')">انتخاب فایل</span>\n' +
' <span class="n-del"><i onclick="dele('+i+')" class="fa fa-trash fa-2x" aria-hidden="true"></i></span>\n' +
' </div>');
i++;
}
})







یک جدول هم در دیتابیس وجود داره که 4 تا فیلد داره.
`music_id`, `music`, `name`, `newcoll_id`
music_id کلید اصلی هست و newcoll_id کلید خارجی هست.
input اول یک آرایه از نام میشه و input دوم آرایه ای از لینک هست.
زمانی که ادمین دکمه ذخیره بزنه باید جفت آرایه ها به همراه عدد کلید خارجی در دیتابیس ذخیره شود.

oop.php کلاسی هست برای connect شدن به دیتابیس





<?php
class db {

public $connect;
private $username = "root";
private $password = "";
private $dsn="mysql:host=localhost;dbname=etrharam_db;charset=ut f8";

public function __construct(){
$this->connect= new PDO($this->dsn,$this->username,$this->password);
return $this->connect;
}/*connection*/

public function Idu($query,$data){
$pre=$this->connect->prepare($query);
foreach($data as $index=>$val){
$pre->bindValue($index+1,$val);
}
$pre->execute();
}/*idu*/

}

?>





کد php برای ذخیره اطلاعات در جدول دیتابیس
server.php





<?php
ob_start();
session_start();
include ("oop.php");
$oop=new db();

if (isset($_GET['server'])){
$server=$_GET['server'];

if ($server=='music'){
$id_music=$_GET['id'];
$music=$_POST['url'];
$names=$_POST['name'];
foreach (array_combine($music,$names) as $url => $name){
$query="INSERT INTO `music_tbl`(`music`, `name`, `newcoll_id`) VALUES (?,?,?)";
$data=array($url,$name,$id_music);
$res=$oop->Idu($query,$data);
print_r($res);
}//foreach
header('location:dashboard.php');
}//if ($server=='music'){
}





مشکل من در فایل server.php هست.
اگر ادمین سایت 2 تا input اول که نام و لینک هست پر کنه یک سطر از جدول دیتابیس پر میشه.
و اگر add بزنه و باز هم اطلاعات پر کنه این کد جواب میده.
اما اگر تعداد از این بیشتر بشه فقط 4 تا input آخر در دیتابیس ذخیره میشه ( که تو دیتابیس میشه 2 تا سطر ).
آرایه names برای نام هست و آرایه music برای url هست.
شرط حلقه foreach در فایل server.php به این تغییر میدم
foreach ($music as $url) تمامی url ها در جدول ذخیره میشه اما اطلاعات آرایه names ذخیره نمیشه
کسی میدونه مشکل من چیه؟
خیلی ممنونم که وقت گذاشتین و خوندین

binyaft
شنبه 04 آذر 1396, 17:28 عصر
کد ظاهرا درسته اما شما چک کنید ببینید 1.تمام مقادیر با حلقه foreach خونده میشن؟ 2. با mysql_error که خطائی هست یا نه؟