مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

faarhaang

عضویت از 1396/09/03

درج اطلاعات در دیتابیس به وسیله ی input

  • جمعه 3 آذر 1396
  • 22:32
تشکر میکنم

سلام.

من یک صفحه دارای  دو input دارم که یکی برای وارد کردن متن توسط ادمین سایت هست و یکی دیگه برای قرار دادن لینک فایل ها هست که توسط فایل منجر CKfinder فایل انتخاب و لینک فایل در input  درج میشه.

اطلاعات این 2 input به هم وابسته هستن. مثلا یکی از input ها نام آهنگ هست و input بعدی url آپلود شده آهنگ هست.



if (!isset($_GET['gallery']) && !isset($_GET['etr']) && isset($_GET['music'])){
    ?>
    <form action="server.php?server=music&id=<? echo $_GET['id']; ?>" method="post">
        <p>انتخاب </p>
        <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[]"/><!-- input aval ke admin name ra vared mikonad-->

                    <label>انتخاب فایل</label>
                    <input type="text" name="url[]" id="url1" READONLY/>
                    <span class="n-select" onclick="openPopup(1)">انتخاب فایل</span><!--ba entekhab file url br input vared mishavad-->

                    <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  اینه

<script>
    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++;
        }
    })
</script>

یک جدول هم در دیتابیس وجود داره که 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=utf8";

    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  ذخیره نمیشه

کسی میدونه مشکل من چیه؟

خیلی ممنونم که وقت گذاشتین و خوندین

پاسخ های این پرسش

تعداد پاسخ ها : 0 پاسخ
در حال حاضر هیچ پاسخی ارسال نشده است
کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)