PDA

View Full Version : سوال: انتقال مقدار



numberone1
سه شنبه 20 اردیبهشت 1390, 22:10 عصر
سلام
يه كد جاوا اسكريپت دارم كه توش 2 تا مقدار داره ميخوام بعد از زدن كليد submit اون 2تا مقدار توي ديتابيس ثبت بشن.
1.مشكلم اينه كه نحوه انتقالشونو بوسيله ajax يا jquery يا هر چيز ديگه بلد نيستم و
2.هم اينكه نميدونم چجوري بايد حتما بعد زدن submit اين 2 تا مقدار ثبت بشن؟
اين كد ها رو هم دارم كه دقيقا مرتبطه به همين برنامه اي كه دارم استفاده ميكنم ولي بلد نيستم ازشون استفاده كنم .
اون 2تا مقداري هم كه گفتم lat & lng هستند كه بايد توي ديتابيس ثبت بشن.
لطفا راهنمائي كنيد

function updateMarkerStatus(str) {
document.getElementById('markerStatus').innerHTML = str;
}

function updateMarkerPosition(latLng) {
document.getElementById('info').innerHTML = [
latLng.lat(),
latLng.lng()
].join(', ');
}

function updateMarkerAddress(str) {
document.getElementById('address').innerHTML = str;
}

Keramatifar
سه شنبه 20 اردیبهشت 1390, 22:16 عصر
شما باید مقادیر مورد نظر رو درون hidden field هایی که درون from هستند، قرار دهید و با submit شدن مقادیر رو ارسال کنید

ghasemweb
سه شنبه 20 اردیبهشت 1390, 22:18 عصر
چند راه حل هست
1 . اگه فقط همين دو داده است ميتونيد از همين كد جاوا داده ها را به صورت get به صفحه php بفرستيد و از طريق اسكرپت php داده ها تو با دستور get بگيري و ذخيره كني
2 . اگه فرم داريد ميتونيد اين دو داده رو تو كنترلي كه خاصيت hidden داره با باقي داده فرم به صفحه php بفرستيد و ذخيره كنيد
3. اگه با اي جكس خواستي اونم نوضيح ميدم

numberone1
سه شنبه 20 اردیبهشت 1390, 22:24 عصر
چند راه حل هست
1 . اگه فقط همين دو داده است ميتونيد از همين كد جاوا داده ها را به صورت get به صفحه php بفرستيد و از طريق اسكرپت php داده ها تو با دستور get بگيري و ذخيره كني
2 . اگه فرم داريد ميتونيد اين دو داده رو تو كنترلي كه خاصيت hidden داره با باقي داده فرم به صفحه php بفرستيد و ذخيره كنيد
3. اگه با اي جكس خواستي اونم نوضيح ميدم
ميشه همين 2 مورد اول توضيح بدي؟
اين 2 متغير ثابت نيستن و ممكنه توسط كاربر مقدرشون عوض شه
ولي شما لطف كنيد 2 مورد اول توضيح بديد ممنون ميشم .
مقادير به اينصورت هستند

var latLng = new google.maps.LatLng(35.711585,51.406928);

numberone1
سه شنبه 20 اردیبهشت 1390, 22:26 عصر
شما باید مقادیر مورد نظر رو درون hidden field هایی که درون from هستند، قرار دهید و با submit شدن مقادیر رو ارسال کنید
مقادير ثابت نيستند و ممكنه تغيير كنند
ميشه يه مثال بزنيد؟
مرسي

ghasemweb
سه شنبه 20 اردیبهشت 1390, 23:57 عصر
روش اول به اين صورت ميشه البته نحوه ذخيره سازي توسط 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>test page</title>
</head>
<script language="javascript">
function send_data()
{
var a='aaaa';
var b='bbbb';
var new_url;
new_url="index.php?do=save&a="+a+"&b="+b;
window.location=new_url;
}
</script>
<body>

<input type="button" value=" Save " onclick="send_data()" />
</body>
</html>

ghasemweb
چهارشنبه 21 اردیبهشت 1390, 00:25 صبح
اگه مشكلت با اين حل نشد باز توضيح ميدم اگه خواستيد.

موفق باشيد

numberone1
چهارشنبه 21 اردیبهشت 1390, 14:50 عصر
من فرم دارم توي صفحه و مقادير ارسالي به فرم و بصورت پست ميفرستم اگه ميشه راه حل دومي كه hidden fild هست و برام توضيح بديد ممنون ميشم

ghasemweb
چهارشنبه 21 اردیبهشت 1390, 19:30 عصر
شما داخل فرم دو تا کنترل به صورت زیر اضافه کن:


<input type="hidden" name="v1" value="0" id="vv1">

بعدش باید از طریق کد جاوا اسکریپت مقداری رو که میخوای رو به این کنترل بفرستی تا به همراه باقی مقادیر فرم ارسال بشه


document.getElementById('vv1').value=value;

numberone1
چهارشنبه 21 اردیبهشت 1390, 21:44 عصر
شما داخل فرم دو تا کنترل به صورت زیر اضافه کن:


<input type="hidden" name="v1" value="0" id="vv1">بعدش باید از طریق کد جاوا اسکریپت مقداری رو که میخوای رو به این کنترل بفرستی تا به همراه باقی مقادیر فرم ارسال بشه


document.getElementById('vv1').value=value;
نشد متاسفانه
اون 2تا عدد و نشون نميده !! :ناراحت:
شما مطمئن هستيد بايد از همين پارامتر ها استفاده كنم؟؟
اون 2تا فانكشن كه بالاتر گذاشتم نميشه استفاده كرد؟

ghasemweb
چهارشنبه 21 اردیبهشت 1390, 22:00 عصر
اگه امكانش هست سورس كدتو قرار بده كه واست كاملش كنم

numberone1
چهارشنبه 21 اردیبهشت 1390, 23:01 عصر
اگه امكانش هست سورس كدتو قرار بده كه واست كاملش كنم
مرسي دوست عزيز
اين كل كد جاوا اسكريپت هست

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
var geocoder = new google.maps.Geocoder();

function geocodePosition(pos) {
geocoder.geocode({
latLng: pos
}, function(responses) {
if (responses && responses.length > 0) {
updateMarkerAddress(responses[0].formatted_address);
} else {
updateMarkerAddress('Cannot determine address at this location.');
}
});
}

function updateMarkerStatus(str) {
document.getElementById('markerStatus').innerHTML = str;
}

function updateMarkerPosition(latLng) {
document.getElementById('info').innerHTML = [
latLng.lat(),
latLng.lng()
].join(', ');
}

function updateMarkerAddress(str) {
document.getElementById('address').innerHTML = str;
}

function initialize() {
var latLng = new google.maps.LatLng(35.711585,51.406928);
var map = new google.maps.Map(document.getElementById('mapCanvas '), {
zoom: 15,
center: latLng,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var marker = new google.maps.Marker({
position: latLng,
title: 'Point A',
map: map,
draggable: true
});

// Update current position info.
updateMarkerPosition(latLng);
geocodePosition(latLng);

// Add dragging event listeners.
google.maps.event.addListener(marker, 'dragstart', function() {
updateMarkerAddress('Dragging...');
});

google.maps.event.addListener(marker, 'drag', function() {
updateMarkerStatus('Dragging...');
updateMarkerPosition(marker.getPosition());
});

google.maps.event.addListener(marker, 'dragend', function() {
updateMarkerStatus('Drag ended');
geocodePosition(marker.getPosition());
});
document.getElementById('vv1').value=value;
}

// Onload handler to fire off the app.
google.maps.event.addDomListener(window, 'load', initialize);
</script>
<style type="text/css">
#mapCanvas {
width: 500px;
height: 400px;
float: left;
}
#infoPanel {
float: left;
margin-left: 10px;
}
#infoPanel div {
margin-bottom: 5px;
}
</style>

خط 65 كد شماست كه توي پست قبلي داده بودين.

ghasemweb
چهارشنبه 21 اردیبهشت 1390, 23:18 عصر
ببينيد شما منظور من رو از پست قبلي متوجه نشدي!

شما بايستي تو فرم اصليتون دو تا تكست باكس مخفي ايجاد كني با نام هاي مختلف و هم بهش آيدي بدي كه تو پست قبلي گذاشتم نمونه اش رو بعدش از طريق آيدي كه به اين دو تكست باكس دادي از داخل توابع جاوا اسكريپت ميتوني مقدار يا value مورد نظر رو به اين دو تكست باكس بفرستي كه قاطي فرمت ارسال بشه. شما از طريق كد زير ميتوني به تكست باكس مقدار ارسال كني من كه نميدونم شما كدوم مقدار و عدد رو ميخواي ذخيره كني و الا تو اين سورست ميذاشتم كاملشو.

مقدار رشته اي:

document.getElementById('n1').value="مقدار مورد نظر";

مقدار يك متغير:

document.getElementById('n1').value=name motaghaeir;

ghasemweb
چهارشنبه 21 اردیبهشت 1390, 23:25 عصر
يادم رفت بگم كه document.getElementById('n1') روشي است براي دسترسي به تگها آبجكت هاي html كه بتوني تغييراتي توش ايجاد كني و اگه دقت كني من تو اين مثال از طريق id كه مقدارش n1 هست بهش مقدار ميدم كه مثال زير رو اگه اجرا كني ميفهمي كامل


<script type="text/javascript">

function setValue()
{
var a=10;
var b=5;
var c;
c=a*b;
document.getElementById('ali').value=c;
document.getElementById('name').value="ghasem";
}

</script>

<input type="text" id="ali" >
<input type="text" id="name" >
<input type="button" value=" Test " onClick="setValue()">

numberone1
چهارشنبه 21 اردیبهشت 1390, 23:42 عصر
ببخشيد ولي من اصلا متوجه نشدم
اين اسكريپت نقشه گوگل هست كه كاربر ها يك نقطه رو ميتونن انتخاب كنن روي نقشه و من مختصات عرض و طول جغرافيائي شو ميخوام توي ديتابيس ثبت كنم
مختصات هم توي متغير LatLng تعريف ميشه. من اين متغير و ميخوام مقدارشو توي ديتابيس ثبت كنم؟
اون كنترلري كه شما گفتين و نفهميدم توي كدوم قسمت بايد ازش استفاده كنم؟
ميشه روي همين اسكريپت بگيد؟
ممنون

numberone1
پنج شنبه 22 اردیبهشت 1390, 00:08 صبح
اينجوري امتحان كردم نشد

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
var geocoder = new google.maps.Geocoder();

function geocodePosition(pos) {
geocoder.geocode({
latLng: pos
}, function(responses) {
if (responses && responses.length > 0) {
updateMarkerAddress(responses[0].formatted_address);
} else {
updateMarkerAddress('Cannot determine address at this location.');
}
});
}

function updateMarkerStatus(str) {
document.getElementById('markerStatus').innerHTML = str;
}

function updateMarkerPosition(latLng) {
document.getElementById('info').innerHTML = [
latLng.lat(),
latLng.lng()
].join(', ');
}

function updateMarkerAddress(str) {
document.getElementById('address').innerHTML = str;
}

function initialize() {
var latLng = new google.maps.LatLng(35.711585,51.406928);
var map = new google.maps.Map(document.getElementById('mapCanvas '), {
zoom: 15,
center: latLng,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var marker = new google.maps.Marker({
position: latLng,
title: 'Point A',
map: map,
draggable: true
});

// Update current position info.
updateMarkerPosition(latLng);
geocodePosition(latLng);

// Add dragging event listeners.
google.maps.event.addListener(marker, 'dragstart', function() {
updateMarkerAddress('Dragging...');
});

google.maps.event.addListener(marker, 'drag', function() {
updateMarkerStatus('Dragging...');
updateMarkerPosition(marker.getPosition());
});

google.maps.event.addListener(marker, 'dragend', function() {
updateMarkerStatus('Drag ended');
geocodePosition(marker.getPosition());
});
document.getElementById('vv1').value=latLng;
}

// Onload handler to fire off the app.
google.maps.event.addDomListener(window, 'load', initialize);
</script>




<input type="hidden" name="v1" value="0" id="vv1">

numberone1
پنج شنبه 22 اردیبهشت 1390, 01:04 صبح
اين ارور مياد همش
Notice: Undefined variable: _post


document.getElementById('lat').value=latLng.lat();
document.getElementById('lng').value=latLng.lng();

<input type="hidden" name="lat" value="" id="lat">
<input type="hidden" name="lng" value="" id="lng">
<input type="submit" name="submit" class="button" value="ثبت مشخصات" onClick="initialize()"/>

ghasemweb
پنج شنبه 22 اردیبهشت 1390, 01:49 صبح
من از كدهات متوجه نشدم كجا و كدوم خط مقدار ميگره ولي كد هاي بالا درسته اون دوخط اول رو بذار لابه لاي كد جاوا اسكرپتت ولي اون اروري كه داده رو كامل نذاشتي به گمونم البته ارور نيست و يه نكته رو متذكر شده.

numberone1
پنج شنبه 22 اردیبهشت 1390, 16:07 عصر
من از كدهات متوجه نشدم كجا و كدوم خط مقدار ميگره ولي كد هاي بالا درسته اون دوخط اول رو بذار لابه لاي كد جاوا اسكرپتت ولي اون اروري كه داده رو كامل نذاشتي به گمونم البته ارور نيست و يه نكته رو متذكر شده.
ارور براي اينه كه توي فرم اون كنترل hidden كه گذاشتم با متد پست ازسال ميشه و بعد از ارسال من چك ميكنم كه اومده يا نه كه ارور ميده خاليه.
اين ارور هم خالي بودنشو نشون ميده كه هيچ مقداري ارسال نميشه
اين 2 خط و


document.getElementById('lat').value=latLng.lat(); document.getElementById('lng').value=latLng.lng();

توي خود فانكشن initialize گذاشتم خط آخرش نشد. بعد از تگ جاوا اسكريپت هم گذاشتم نشد. قبل از بسته شدن تگ جاوا اسكريپت هم گذاشتم ولي نشد.
ديگه نميدونم بايد چيكار كنم.
لطفا يكي راهنمائي كنه . خيلي كارم گيره

ghasemweb
پنج شنبه 22 اردیبهشت 1390, 16:56 عصر
احتمالا اين كد اشتباهه و نميتونه مقداري رو به اون تكست باكس مخفي اختصاص بده. شما اول مطمئن شو كه مقداري برميگردونه يا نه . مثلا ميتوني مقدارشو alert كني.

latLng.lat();