PDA

View Full Version : لود اطلاعات يك ليست باكس توسط يك ليست باكس ديگه



haniye70
جمعه 15 دی 1391, 13:08 عصر
سلام به همگی دوستان و اساتيد محترم

من نياز به يك سمپل و يا راهنمايي دارم


توضيح:
من يك ليست باكس دارم كه يك سري اطلاعات با value هاي مختلف داره
يك ليست باكس ديگه هم دارم كه توش زير مجموع ها يا زير گروه هاي اطلاعات توي ليست باكس اول است
حالا مي خوام اگر من يكي از گزينه هاي ليست باكس اول رو انتخاب كردم زير گروه هاي اون توي ليست باكس دوم نمايش داده بشه

متشكر ميشوم راهنمايي بفرمايد

mohsen_31369
جمعه 15 دی 1391, 13:20 عصر
برای این کار شما باید از javaScrip استفاده نمایید
فرض کن 2 تا select داری
HTML


<select id="kind">
<option value="1">men</option>
<option value="2">women</option>
</select>
<select id="second" >
</select>


بعد با تغیر select اولی select دومی لود میشود که برای راحتی از jQuery استفاده کن



$("#first").change(function(){
$.getJSON("getName.php",{id: $(this).val(), ajax: 'true'}, function(j){
var options = '';
for (var i = 0; i < j.length; i++) {
options += '<option value="' + j[i].id+ '">' + j[i].name+ '</option>';
}
});
$("#second").html(options);
});


خوب و سمت سرور با jSon باید یه همچیزی رو برگردونه


[{id: 0, name: 'reza'}, {id:1, name: 'ahmad'}, {id:2, name: 'mohsen'}]

parsboy
جمعه 15 دی 1391, 13:22 عصر
سلام عزیزم شما باید برنامه رو اینجوری آنالیز کنی

که تمام اطلاعات لیست باکس اول رو بریزی تو یه دیتابیس بعدن تو لیست باکس دوم باسه هر کدوم از مقدار ها یکی از اون

مقدار های لیست باکس اول رو فراخوانی کنی

haniye70
جمعه 15 دی 1391, 14:10 عصر
سلام دوستان گرامي متشكر از راهنمايي ولي اگر امكان داره يكم واضحتر راهنمايي بفرمايد
اگر امكان داره با سمپل يا كد راهنمايي بفرمايد

اطلاعات من همه از ديتابيس لود ميشن توي ليست باكس ها

mohsen_31369
جمعه 15 دی 1391, 15:11 عصر
نمونه ی کد های html و javaScript رو که گذاشتم
سمت سرور شما باید مقادیر ارسالی را گرفته و پردازش نمایید و سپس در قالب json برای کلاینت ارسال نمایید (فایل getName.php). یه چیز شبیه این کدی که گذاشتم
البته شما باید با ساختار دیتابیس خودتون کوئری بزنید


if(isset($_REQUEST['ajax'])){
$id=mysql_real_escape_string($_REQUEST['id']);
$res=mysql_query("SELECT id,name FROM tbl_name WHERE group=$id");
while ($row=mysql_fetch_assoc($res))
{
$arr[]=$row;
}

echo json_encode($arr);
}

tehro0n
جمعه 15 دی 1391, 15:20 عصر
نمونه ی کد های html و javaScript رو که گذاشتم
سمت سرور شما باید مقادیر ارسالی را گرفته و پردازش نمایید و سپس در قالب json برای کلاینت ارسال نمایید (فایل getName.php). یه چیز شبیه این کدی که گذاشتم
البته شما باید با ساختار دیتابیس خودتون کوئری بزنید


if(isset($_REQUEST['ajax'])){
$id=mysql_real_escape_string($_REQUEST['id']);
$res=mysql_query("SELECT id,name FROM tbl_name WHERE group=$id");
while ($row=mysql_fetch_assoc($res))
{
$arr[]=$row;
}

echo json_encode($arr);
}


اون وقت چطوری این اطلاعات که انکد شده رو با جاوا دیکد کنیم ؟ سمت کلاینت هم توضیح میدی؟

mohsen_31369
جمعه 15 دی 1391, 15:32 عصر
برای این کار شما باید از javaScrip استفاده نمایید
فرض کن 2 تا select داری
HTML


<select id="kind">
<option value="1">men</option>
<option value="2">women</option>
</select>
<select id="second" >
</select>


بعد با تغیر select اولی select دومی لود میشود که برای راحتی از jQuery استفاده کن



$("#first").change(function(){
$.getJSON("getName.php",{id: $(this).val(), ajax: 'true'}, function(j){
var options = '';
for (var i = 0; i < j.length; i++) {
options += '<option value="' + j[i].id+ '">' + j[i].name+ '</option>';
}
});
$("#second").html(options);
});


خوب و سمت سرور با jSon باید یه همچیزی رو برگردونه


[{id: 0, name: 'reza'}, {id:1, name: 'ahmad'}, {id:2, name: 'mohsen'}]


سلام تابع getJson این کارو می کنه

haniye70
جمعه 15 دی 1391, 16:18 عصر
با سلام و تشكر از اقا محسن
اقا محسن اگر امكان داره همين كد هاي خودتون رو كامل كنيد و به صورت يك پروژه ساده قرار بديد
اخه من توانيايي كافي در مورد jQuery و jSon ندارم
متشكر ميشوم كمك كنيد
يه دنيا تشكر

webdesign2
جمعه 15 دی 1391, 16:49 عصر
با سلام به همه دوستان اینم فایل لیست باکس html

haniye70
جمعه 15 دی 1391, 17:12 عصر
با تشكر ولي فايلي كه شما اماده كرديد يك ليست باكس ساده هست
قابليت تعغير رو توي ليست باكس دوم نداره
اگر پست اول رو با دقت بخونيد متوجه ميشويد

رضا قربانی
جمعه 15 دی 1391, 17:41 عصر
سلام به همگی دوستان و اساتيد محترم

من نياز به يك سمپل و يا راهنمايي دارم


توضيح:
من يك ليست باكس دارم كه يك سري اطلاعات با value هاي مختلف داره
يك ليست باكس ديگه هم دارم كه توش زير مجموع ها يا زير گروه هاي اطلاعات توي ليست باكس اول است
حالا مي خوام اگر من يكي از گزينه هاي ليست باكس اول رو انتخاب كردم زير گروه هاي اون توي ليست باكس دوم نمايش داده بشه

متشكر ميشوم راهنمايي بفرمايد

این اسکریپتی رو که کامل و منظم نوشته شده رو دانلود کن همه چی میاد دستت : http://barnamenevis.org/showthread.php?284788-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%A7%D8%AA%D9%88%D9%85%D8%A7%D8%AA%DB%8C%DA%A9-%D8%B4%D9%87%D8%B1%D9%87%D8%A7%DB%8C-%DB%8C%DA%A9-%D8%A7%D8%B3%D8%AA%D8%A7%D9%86

موفق و پیروز باشید

mohsen_31369
جمعه 15 دی 1391, 17:56 عصر
این نمونه ای که خواستی.
اول دیتابیس رو ایمپورت کن بعدش تنظیمات اتصال دیتابس را اصلاح کن
97844

siavashsay
جمعه 15 دی 1391, 20:25 عصر
خوب دوستان حداقل یک فایل درست کنید که راحت بتونن متوجه شن !
ضمنا به jSon هم نیازی نیست ! jQuery به تنهایی همه کارها رو انجام میده !
پس زیاد موضوع رو پیچیده نکنید !
من اینجا 3 تا فایل گذاشتم !
1- فایل PHP که فرم داخل اون هست که بخش نمایش هست ! (list-box-jquery.php )
2- فایل PHP که اطلاعات داخل اون پردازش میشه تو مقدار رو بر میگردونه ! ( getItem.php )
3- فایل SQL که مربوط به دیتابیس هست ! داخلش جدولها ساخته شده و کافیه اون رو Emport کنید و یا ...
در PHPMY ADMIN یک دیتابیس با نام lbItem ساخته و بعد به قسمت SQL رفته و محتویات فایل SQL رو اونجا کپی و OK کنید ! میبینید که به طور خودکار اطلاعات وارد دیتابیس میشه !
--
بعد کافیه که فایل list-box-jqeury.php رو اجرا کنید !
میبینید که 2 تا لیست باکس دارید که در سمت چپی 3 تا گزینه دارید ! PHP - Mysql - Jquey
بروی هر کدوم که کلیک کنید در لیست باکس سمت راست لیست کتابهایی که در هر گروه وجود داره لود میشه !
مثلا اگر روی PHP کلیک کنید در لیست باکس سمت راست 3 تا گزینه میاد که لیست کتابهای مربوط به PHP که در دیتابیس ذخیره شده لود میشه !
php_book1
php_book2
php_book3
و برای MYSQL , Jquery هم همینطور !
حالا شما هر چقدر که کتاب به دیتابیستون اضافه شه اینجا هم لود میشه !
کد ها رو من به صورت سطحی نوشتم - شما سعی کنید در کدهای خودتون رعایت امنیت و بهینه سازی رو داشته باشید !
این هم کد همه صفحهات برای دوستانی که نمیخوان دانلود کنن :
-------
فایل list-box-jquery.php


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>
<script>
$(document).ready(function() {
$("#cat option").click( function () {
var a = $(this).val();
$.post('getItem.php',{id:a},function (cback){
$("#myLB").html(cback);
});
});
});
</script>
</head>
<body>
<table width="300" border="1" align="center">
<tr>
<td width="131"><label for="cat"></label>
<select name="cat" id="cat">
<option value="php">PHP</option>
<option value="mysql">Mysql</option>
<option value="jquery">jQuery</option>
</select></td>
<td width="153"><label for="myLB"></label>
<select name="myLB" id="myLB">
</select></td>
</tr>
</table>
</body>
</html>


کد صفحه پردازش getItem.php


<?php
$cn=mysql_connect("localhost","root","");
$db=mysql_select_db("lbItem",$cn);
$id=$_POST['id'];
$sql=mysql_query("SELECT * FROM `books`");
while($obj=mysql_fetch_object($sql)){
$item=$obj->$id;
echo "<option>$item</option>";
}
?>


کد صفحه SQL


-- phpMyAdmin SQL Dump
-- version 2.11.6
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Jan 06, 2013 at 08:42 AM
-- Server version: 5.0.51
-- PHP Version: 5.2.6

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Database: `lbItem`
--

-- --------------------------------------------------------

--
-- Table structure for table `books`
--

CREATE TABLE `books` (
`php` varchar(100) NOT NULL,
`mysql` varchar(100) NOT NULL,
`jquery` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `books`
--

INSERT INTO `books` (`php`, `mysql`, `jquery`) VALUES
('php_book1', 'mysql_book1', 'jquery_book1'),
('php_book2', 'mysql_book2', 'jquery_book2'),
('php_book3', 'mysql_book3', 'jquery_book3');




باز هم اگر جایی رو متوجه نشدید یا مشکلی بود سوال کنید :)