ورود

View Full Version : سوال: مشکل جاوا اسکریپت



Hello,World!!
یک شنبه 08 دی 1387, 20:06 عصر
سلام به همه ی دوستان
من یه پایگاه داده دارم که شامل عنوان خبر و متن خبره.توی صفحه اصلی عنوان خبر ها رو از پایگاه داده می گیرم و بصورت لینک چاپ می کنم.کاربر وقتی روی این لینک ها کلیک کنه متن خبر تو یه صفحه جدید نشون داده می شه از این تانع هم استفاده کردم


function call(news)
{
var WinPrint = window.open('','','letf=0,top=0,width=500,margin-left=0,toolbar=0,scrollbars=0,status=0');
WinPrint.document.write(news);
WinPrint.document.bgColor="#BAD3FC";
WinPrint.document.dir="rtl";

return false;
}

حالا مشکل اینجاس که وقتی خبر رو می خوام توی پایگاه داده insert کنم اگه واسه رفتن به خط بعدی enter بزنم تابع بالا دیگه اجرا نمی شه اما اگه متن خبر رو بدون enter توی پایگاه داده ذخیره کنم درست میشه.نمی دونم تونشتم منظور سوالمو برسونم یا نه؟

Hello,World!!
دوشنبه 09 دی 1387, 15:40 عصر
نه xml نیست
ببینید در دستور


winprint.document.write(news)

news از پایگاه داده گرفته شده که یه متنه حالا اگه توی این متن enter زده نشده باشه با این تابع پنجره جدید باز میشه و متن نشون داده میشه اما اگه توی متن enter زده شده باشه هیچ اتفاقی نمی افته فکر کنم اینجوری بهتر مشکل بیان شد!!

as13851365
سه شنبه 10 دی 1387, 17:11 عصر
ساده ترین راهش این است که شما متن رو قبل از ارسال به کاربر از تابع nl2br استفاده کنید

در ضمن شما راه را خیلی دراز کردید یعنی یک بار تمام متن را در صفحه قرار می دهید و بعد اگر کاربر خواست یکی از متن ها را ببیند متن را به کاربر نشان می دهید !

برای این کار بهتر است شما آی دی خبر را در صفحه ذخیره کنید و بعد از این که کاربر خواست متن کامل را ببیند آی دی خبر را به دیتابیس ارسال کنید و بعد متن خبر را در صفحه برای کاربر نشان بدهید

Hello,World!!
پنج شنبه 12 دی 1387, 15:44 عصر
با php می نویسم

Hello,World!!
پنج شنبه 12 دی 1387, 15:48 عصر
ساده ترین راهش این است که شما متن رو قبل از ارسال به کاربر از تابع nl2br استفاده کنید

من این کار رو کردم و تابع رو به شکل call(nl2br($news))اجرا کردم ولی باز هم همون مشکل رو داره

as13851365
جمعه 13 دی 1387, 09:04 صبح
ببین دوست گرامی شما تابع php را دارید با زبان javascript فراخوانی می کنید اصلا با عقل جور در نمی آید

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

برای وفع این مشکل شما می تونید از تابع nl2br استفاده کنید یعنی این تابع برای php می باشد و شما مثلا زمانی که می خواهید این رشته را چاپ ( به مرورگر ارسال ) کنید از روش زیر استفاده می کنید


echo nl2br($xxx);


در ضمن شما راه را برای رسیدن به هدف دراز کردید یعنی شما از امکانات php اصلا استفاده نکردید ( منظورم ارسال کل متن به صفحه هستش )

ولی اگر مشکل شما چیزه دیگری است واضحتر بگو تا راهنماییت کنیم .

Hello,World!!
جمعه 13 دی 1387, 21:09 عصر
می دونم منطور شما چیه اخه من این سایت رو می خوام روی یک شبکه محلی استفاده کنم ایراد این روش اینه که صفحه سنگین میشه درسته؟ اما توی شبکه محلی با ترافیک محدود قابل صرف نظر کردنه
این تابع رو من توی تک php قرار می دمو فراخوانی می کنم نه به صورت بالا اما نمیدونم چرا اینجوری کلا تابع جاوا اسکریپت اجرا نمیشه اصلا خودتون امتحان کنین یه متن که توش enter زده شده رو از پایگاه داده بگیرینو سعی کنین با این تابع نشونش بدین نمیشه!! اما متن های بدون enter میشه!!

as13851365
شنبه 14 دی 1387, 10:32 صبح
بیا یه کاری بکن :
کل قضیه را بیخیال شو و به مراحل زیر توجه کن :

شما از همان تابعی که من به شما گفتم استفاده کنید و متن را در صفحه قرار بدهید

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


function call(news)
{
var WinPrint = window.open('','','letf=0,top=0,width=500,margin-left=0,toolbar=0,scrollbars=0,status=0');
WinPrint.document.write(news);
WinPrint.document.bgColor="#BAD3FC";
WinPrint.document.dir="rtl";

return false;
}


از این استفاده کن :


function call(id)
{
var WinPrint = window.open('','','letf=0,top=0,width=500,margin-left=0,toolbar=0,scrollbars=0,status=0');
WinPrint.document.write(document.getElementById(id ).innerHTML);
WinPrint.document.bgColor="#BAD3FC";
WinPrint.document.dir="rtl";

return false;
}


اگر کمی به جاوااسکریپت و html آشنایی داشته باشید حتما کد بالا برای شما قابل فهم می باشد در غیره این صورت شما باید کارهای زیر را به ترتیب انجام بدهید :

شما تمام اطلاعات را در صفحه سایت به صورت مخفی قرار می دهید و با انتخاب یک گزینه اطلاعات مخفی را در یک پنجره دیگه نمایش می دهید ( هر چند که راه اشتباهی را دارید می روید ولی خوب چه می شه کرد )
1 ) شما هنگامی که می خواهید متن خبر را به صفحه اصلی به صورت مخفی ارسال کنید ID خبر را هم به یکی از المنتهای صفحه نصبت بدهید و متن خبر را داخل همان المنتر قرار بدهید یعنی :


<div id='id_news' style='visibled:hidden'>memo_news</div>


id_news همان ID رکورد مربوط به خبر است
memo_news همان متن خبر است
2 ) مثلا یک باتن ایجاد می کنید که متن را نمایش بدهد برای باتن هم از کد زیر می تونید استفاده کنید :


<input type='button' value='shwo' onclick="call(ID_news)" />

اگر به این شکل انجام بدهید مشکلی پیش نمی آید

ولی این را بدانید که راه ساده تر از این هم وجود دارد
شما می توانید برای نمایش دادن متن خبر ID خبر را به یک صفحه ارسال کنید و در آن صفحه با دریافت ID خبر متن خبر را برای کاربران نمایش بدهید .

Hello,World!!
یک شنبه 15 دی 1387, 01:10 صبح
ممنونم درست شد اما حق با شماس لقمه رو پیچوندم گذاشتم دهن!!!
باید تغییرش بدم اینجور که میگین
بازم ممنون

sepehrmm
یک شنبه 15 دی 1387, 23:57 عصر
ساده ترین راهش این است که شما متن رو قبل از ارسال به کاربر از تابع nl2br استفاده کنید


میشه بگید کار این nl2br چیه و کی بدرد میخوره ؟

as13851365
دوشنبه 16 دی 1387, 09:46 صبح
دوست گرامی سلام.
این دستور nl2br یکی از توابع زبان php می باشد

شما وقتی که متنی را از المنت textarea در بانک ذخیره می کنید و اگر آن را بخواهید در صفحه نشان بدهید اگر دقت کرده باشید جمله ها پشت سر هم قرار می گیرند یعنی شما زمانی که می خواهستید متن را وارد کنید در انتهای هر جمله از اینتر استفاده کردید تا به خط بعدی بروید و خروجی این کار به صورت n\ قرار می گیرد و وقتی که در صفحه بخواهید این اطلاعات را در صفحه نشان بدهید با مشکل مواجه می شوید که برای این کار از تابع مزبور استفاده می شه

این تابع تمام n\ را به <br> تبدیل می کنه و در نتیجه جمله ها به شکل صحیح نمایش داده می شود
برای استفاده از این تابع هم به شکل زیر استفاده می شه
$s=nl2br($s)

Hello,World!!
سه شنبه 17 دی 1387, 00:16 صبح
یه سوال دوست عزیز آیا وقتی می خوایم یه متن رو از پایگاه داده بخونیم و توی textarea بزاریم بازم باید از این تابع استفاده کنیم؟ من این کارو بدون این تابع انجام دادمو مشکلی هم نداره

as13851365
سه شنبه 17 دی 1387, 11:43 صبح
ببینید دوست گرامی برای وفتن به خط بعدی در textarea شما باید از n\ استفاده کنید ولی برای وفتن به خط بعدی در html باید از دستور <br> استفاده کنید

حالا وقتی که متن را که در textbox نوشته شده است را در بانک ذخیره می کنید در واقع n\ در انتهای هر خط قرار دارد

حالا وقتی که می خواهید باز این رشته را در textarea قرار بدهید فقط کافیست متن را به textarea اختصاص دهید
ولی
اگر بخواهید متن را در صفحه html نشان بدهید برای نشان دادن خط ها از تابع nl2br استفاده می شه