PDA

View Full Version : سوال: نمایش اطلاعات به صورت label بعد وارد کردن مقدار در textbox



baran.f.a
سه شنبه 25 آذر 1393, 11:47 صبح
سلام یه سوال داشتم من توفرمم یه textbox دارم که شماره سریال باید وارد بشه می خواستم با وارد کردن شماره سریال نام فروشگاهی که این شماره سریال داره رو کنار texbox به صورت یه label نمایش بده بدون وجود دکمه submit درواقع می خوام با وارد کردن شماره سریال همان لحظه یه select از پایگاه دادم انجام بشه لطفا راهنماییم کنید خیلی در نت گشتم ولی اون چیزی که می خوام رو پیدا نکردم .

hamid-nic
سه شنبه 25 آذر 1393, 13:23 عصر
دوست عزیز با Ajax می تونید انجامش بدهید .

baran.f.a
سه شنبه 25 آذر 1393, 17:13 عصر
دوست عزیز با Ajax می تونید انجامش بدهید .

سلام مشکل اینجاست من چیزی از ajax نمی دونم و زمانم هم کمه من حتما به این کد نیاز دارم میشه بیشتر راهنماییم کنید یا بگین تو نت باید چی سرچ کنم ؟

baran.f.a
چهارشنبه 26 آذر 1393, 09:53 صبح
لطفا راهنمایی کنید . خیلی ضروریه .

vahid78
چهارشنبه 26 آذر 1393, 10:09 صبح
فرضا کد html:


<p><b>Start typing a name in the input field below:</b></p>
<form>
First name: <input type="text" onkeyup="showHint(this.value)">
</form>
<p>Suggestions: <span id="txtHint"></span></p>

در انتهای صفحه کد جاواسکریپ زیر را قرار بدین:

<script>
function showHint(str) {
if (str.length == 0) {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "gethint.php?q="+str, true);
xmlhttp.send();
}
}
</script>

در این مثال تمامی درخواست های به صفحه gethint.php فرستاده میشه شما صفحه مورد نظر خود را که قصد دارین از دیتابیس واکشی انجام دهید قرار بدین و اطلاعات را واکشی کنید و با دستور echo اطلاعات را چاپ کنید

البته اگه jQuery بلد هستین خیلی ساده تر از اینا میشه نوشت

baran.f.a
چهارشنبه 26 آذر 1393, 12:07 عصر
فرضا کد html:


<p><b>Start typing a name in the input field below:</b></p>
<form>
First name: <input type="text" onkeyup="showHint(this.value)">
</form>
<p>Suggestions: <span id="txtHint"></span></p>

در انتهای صفحه کد جاواسکریپ زیر را قرار بدین:

<script>
function showHint(str) {
if (str.length == 0) {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "gethint.php?q="+str, true);
xmlhttp.send();
}
}
</script>

در این مثال تمامی درخواست های به صفحه gethint.php فرستاده میشه شما صفحه مورد نظر خود را که قصد دارین از دیتابیس واکشی انجام دهید قرار بدین و اطلاعات را واکشی کنید و با دستور echo اطلاعات را چاپ کنید

البته اگه jQuery بلد هستین خیلی ساده تر از اینا میشه نوشت


سلام من این کدی که شما گفتینو نوشتم . تو صفحه gethint.php هم کد زیر رو نوشتم فقط به جای get از post استفاده کردم ولی جواب نگرفتم :


<?php
$serial_code=$_POST['q'];
require_once 'connect.php';
connecttodb();
mysql_query('SET NAMES utf8');
$sql="SELECT * FROM `merchant` WHERE `merchant_id`
=(select merchant_id from pos where serial_code='".mysql_real_escape_string($serial_code)."' )";
if ($query_run = mysql_query($sql) ){
$mysql_num_rows = mysql_num_rows($query_run);
if ($mysql_num_rows == 1){
$row = mysql_fetch_assoc($query_run);
$_SESSION['business_name'] = $row['business_name'];
$_SESSION['manager_name'] = $row['manager_name'];
$_SESSION['manager_family'] = $row['manager_family'];
echo'نام فروشگاه '. $_SESSION['business_name'].' '

}}
else{
echo ' <p>این پایانه به پذیرنده ای تخصیص نیافته . </p></a> ';
}
}

?>


احتمالا یه جایی اشتباه من تصویر فرممو براتون می زارم . می خوام پیغام تو همون صفحه ی فرمم ظاهر بشه .
126660

baran.f.a
چهارشنبه 26 آذر 1393, 21:15 عصر
واقعا کسی نیست راهنمایی بکنه من هر سوالی تو این انجمن گذاشتم بی جواب مونده واقعا کسی نیست که جواب سوالامو بدونه؟

hamedarian2009
چهارشنبه 26 آذر 1393, 21:35 عصر
با جی کوئری انجام بدی راحت تره ببین من یه مثال برات میزنم :


Enter serial: <input id="serial" type="text" name="serial"><span></span><br>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#serial').change(function(){
$.ajax({
type: 'POST',
url: 'data.php',
data: {
serial : $('#serial').val()
},
success: function(data){
$('span').html(data);
}
});
});
});
</script>


یه صفحه مثلا به نام data.php هم داشته باشی اونوقت میتونی داده رو از اونور بگیری


if($_POST['serial'] == '123'){
echo 'Microsoft';
} else {
echo 'Apple';
}


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

baran.f.a
چهارشنبه 26 آذر 1393, 22:47 عصر
سلام ازتون خیلی خیلی متشکرم بابت راهنماییتون جواب داد .
میشه یه سوال دیگه هم ازتون بپرسم ؟
من می خواستم بعد از این که داده ی مورد نظرمو از combobox انتخاب کردم و ارسال کردم همون مقدار تو combobox بمونه منظورم اینه که اگه برای مثال من اسم ali رو انتخاب کردم بعد ارسال اطلاعات و refresh شدن صفحم این مقدار ali تو combobox م نمایش داده بشه خیلی تو نت گشتم ولی هیچ کدوم از کدهایی که بود جواب نداد.

hamedarian2009
چهارشنبه 26 آذر 1393, 23:13 عصر
احتمالا تو صفحه php دارای خطا هستین بهتره این خطو اینجوری بنویسین


mysql_query($sql) or die(mysql_error())

و این کد جی کوئری رو هم اینجوری اصلاح کنید ببین خطا میده


<script type="text/javascript">
$(document).ready(function(){
$('#serial').change(function(){
$.ajax({
type: 'POST',
url: 'data.php',
data: {
serial : $('#serial').val()
},
success: function(data){
$('span').html(data);
},
error: function(){
alert('error');
}
});
});
});
</script>


یه نکته ببین این خطو
serial : $('#serial').val()
سمت چپ نوشتم serial باید حتما اونور $_POST['serial'] دریافت کنی مگه اینکه اینو به اسم دلخواه خودت تغییر بدی

baran.f.a
چهارشنبه 26 آذر 1393, 23:34 عصر
احتمالا تو صفحه php دارای خطا هستین بهتره این خطو اینجوری بنویسین


mysql_query($sql) or die(mysql_error())

و این کد جی کوئری رو هم اینجوری اصلاح کنید ببین خطا میده


<script type="text/javascript">
$(document).ready(function(){
$('#serial').change(function(){
$.ajax({
type: 'POST',
url: 'data.php',
data: {
serial : $('#serial').val()
},
success: function(data){
$('span').html(data);
},
error: function(){
alert('error');
}
});
});
});
</script>


یه نکته ببین این خطو
serial : $('#serial').val()
سمت چپ نوشتم serial باید حتما اونور $_POST['serial'] دریافت کنی مگه اینکه اینو به اسم دلخواه خودت تغییر بدی



سلام ازتون خیلی خیلی متشکرم بابت راهنماییتون جواب داد .
میشه یه سوال دیگه هم ازتون بپرسم ؟
من می خواستم بعد از این که داده ی مورد نظرمو از combobox انتخاب کردم و ارسال کردم همون مقدار تو combobox بمونه منظورم اینه که اگه برای مثال من اسم ali رو انتخاب کردم بعد ارسال اطلاعات و refresh شدن صفحم این مقدار ali تو combobox م نمایش داده بشه خیلی تو نت گشتم ولی هیچ کدوم از کدهایی که بود جواب نداد.

hamedarian2009
پنج شنبه 27 آذر 1393, 12:20 عصر
سلام ازتون خیلی خیلی متشکرم بابت راهنماییتون جواب داد .
میشه یه سوال دیگه هم ازتون بپرسم ؟
من می خواستم بعد از این که داده ی مورد نظرمو از combobox انتخاب کردم و ارسال کردم همون مقدار تو combobox بمونه منظورم اینه که اگه برای مثال من اسم ali رو انتخاب کردم بعد ارسال اطلاعات و refresh شدن صفحم این مقدار ali تو combobox م نمایش داده بشه خیلی تو نت گشتم ولی هیچ کدوم از کدهایی که بود جواب نداد.
منظورتون اینه بعد رفرش صفحه مقادیری که قبلا کاربر تایپ کرده داخل تکس باکس ها حفظ بشه خب میتونید از عملگر شرطی استفاده کنید به این صورت :

<input type="text" value="<?php echo isset($_POST['test'])?$_POST['test']:''; ?>" name="test" />

baran.f.a
شنبه 29 آذر 1393, 10:11 صبح
سلام بله مشکل حل شده . یه سوال دیگه داشتم من می خوام یه query بنویشم که یه ذره پیچیدست قسمت اول query اینه که بعد از این که کاربر نام تکنسین رو انتخاب کرد تعداد کل پشتیبانی هایی که انجام می ده رو نمایش بده و همین طور تمام شماره سریال ها رو نمایش بده من query پایین رو نوشتم ولی جواب درستی نگرفتم تصویرشو براتون می زارم .
SELECT serial_code, count( serial_code ) AS number
FROM pos
WHERE technician_id = '9'


126728
این درحالیه که من دو تا شماره سریال دارم که شماره تکنسین آن ها 9 .

قسمت بعدی query اینه که علاوه بر انتخاب نام تکنسین کاربر می توناد مشخص کند این جستجو در چه بازه زمانی انجام بشه که query زیر رو نوشتم


select * from transaction where serial_code=(select serial_code,count(serial_code) as number from pos where technician_id='9') and PM_date between 16/07/1393 and 16/09/1393


این کار اشتباه ؟