PDA

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



mirzajavad
جمعه 12 شهریور 1389, 00:55 صبح
سلام
چطور ميشه اطلاعت مربوط به يك كاربر رو نشون داد
من الان يك بخشي رو نوشتم كه كاربر مي تونه لوگين كنه
يك بخش هم ارسال لينك هستش كه كاربر بتونه لينك ارسال كنه
حالا ميهمان لينك ارسال ميكنه كاربر هم ارسال ميكنه
چطوري ميشه لينكهايي كه كاربر ارسال كرده رو بعد از لوگين در پنلش به نمايش در آورد
آيا بايد يك فيلد ديگه هم براي جدول ثبت لينك درست كنم كه اگر كاربر لينك ارسال كرد نام كاربريش هم همراه لينكش به ديتابيس ارسال شه ؟
اگر اينجوري هستش يك نمونه برام بنويسين
من اينو نوشتم ولي خطا ميده درست كار نميكنه اگر ميشه كمي راهنمايي كنيد.


session_start();
include('config/config.php');
if($_SESSION['login'])
{
if($_SESSION['login']==true)
{
$username=$_SESSION['username'];
print "خوش آمديد $username";
}
mysql_query($sql="SELECT * FROM `sendlink` WHERE usrname=$username");
while($getlink=mysql_fetch_array($aql))
{
print('<a targrt=&quot;_blank&quot; href=&quot;$getlink&#91;3&#93;&quot;>$getlink&#91;1&#93;</a>');
}

}
واسه اين كامل توضيح دادم كه بدونين چيكار كردم

$ M 3 H R D A D $
جمعه 12 شهریور 1389, 01:22 صبح
شما دوتا جدول داری یکی مربوط به کاربرها و دیگری مربوط به لینک ها
لینک :

فیلد اول نام لینک
فیلد دوم توضیحات لینک
فیلد سوم نام فرستنده

اگه سشن نداشت موقع ثبت لینک تو حدول بنویسه مهمان مثلا اما اگه سشن داشت نام کاربری و تو حدول بنویسه
موقع نمایش مشحصات کاربرم وقتی سشن داشت تو یک حلقه کوئری بده تو جدول لیتک اونایی که نام کاربری با مقدار سشن برابره و بجای نمایش اونو به صور لینک اکو کن

امیـرحسین
جمعه 12 شهریور 1389, 01:26 صبح
بهتره بجای username از ID کاربر استفاده کنید.
الان توی کوئری شما، usrname نوشتید. منظروتون username بوده یا نه. اگر درست نوشتید، متن خطایی که گرفتید چیه؟

xoogle.ir
جمعه 12 شهریور 1389, 01:48 صبح
چرا 2 بار


$_SESSION['login']

رو چک میکنی ؟ همون یه بار کافیه.
ضمنا بهتره که این قدر بدنه if رو بزرگ نکنی.
برای بررسی لاگین بودن یا نبودن کاربر از این روش استفاده کنی بهتره.




if(!isset($_SESSION['login'])):
header('location: loginpage.php');
exit;
endif;

// baghiye code ha

sama01
جمعه 12 شهریور 1389, 02:48 صبح
اصلا چرا کسی که login نکرده می‌تونه به بخش ارسال لینک دسترسی داشته باشه؟

شما در همان ابتدای صفحه باید کسانی را که مجاز نیستند، با روشی مشابه روشی که horap30 گفت به صفحه‌ی login هدایت کنی.

mirzajavad
جمعه 12 شهریور 1389, 13:00 عصر
دوستان مرسي
راستش من ميخواهم كه مهمان هم بتونه لينك ارسال كنه و اگر عضو شده بتونه بر روي لينكهاي خودش مديريت داشته باشه
الان مشكلم اينه كه به هيچ روش كوئري كه نوشتم كار نميكنه
ممنون ميشم اگر كسي كد رو برام تصحيح كنه
آخه خودم به هر روشي كه مي نويسم به مشكل بر ميخورم
من دو تا جدول دارم يكي كاربر و يكي هم لينكها
حالا بخش لوگين كاربر توسط جدول يوزرها لوگين ميكنه
بخش ثبت لينك هم يك فيلد گذاشتم به نام username
كه اين فيلد توي جدول كاربران هم هستش
الان وقتي كاربر لينك ارسال ميكنه با توجه به سشن نام كاربري هم همراه لينك به جدول لينكها در فيلد username قرار ميگيره
حالا چطور ميشه از جدول لينكها با توجه به نام كاربري ذخيره شده لينك رو بيرون كشيد ؟
فرض بر اين در جدول لينكها كاربري به نام texas داريم كه چند تا لينك داره
اين كاربر لوگين كرده حالا بايد در بخش كاربري لينكهاي خودشو مشاده كنه



در ضمن هنگام اجرا اين ارور رو ميده


خوش آمديد texas
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\link\user.php on line 12


امير حسين جان اون username را هم تحصحيح كردم

xoogle.ir
جمعه 12 شهریور 1389, 13:13 عصر
روش کار به این شکله :



$res = mysql_query("select * from table_name where username='$username'");
while($link = mysql_fetch_assoc($res)):
// chap kardane link ha
endwhile;

شما باید نتیجه حاصل از اجرای کوئری (res$) رو در تابع mysql_fetch_array یا mysql_fetch_assoc قرار بدین نه اینکه خود کوئری رو توش بذاری!

sama01
جمعه 12 شهریور 1389, 13:25 عصر
این قسمت از کد شما اشتباهه.

mysql_query($sql=&quot;SELECT * FROM `sendlink` WHERE usrname=$username&quot;);
while($getlink=mysql_fetch_array($aql))باید چنین چیزی بنویسید:

$result = mysql_query("SELECT * FROM `sendlink` WHERE usrname='$username'");
while($getlink=mysql_fetch_array($result))به تغییرات توجه کنید:
1. شما نتایج اجرای کوئری را کجا ریخته‌اید؟ هیچ جا. پس:

$result = ...2. نام کاربری یک رشته است. پس باید بین ' قرار بگیرد.

usrname='$username' 3. حال یک ردیف یک ردیف نتایج به دست آمده از اجرای query را خوانده و عملیات بعدی را روی آن انجام می‌دهیم.

mysql_fetch_array($result)

پ.ن:
خط رو خط شدیم!

mirzajavad
جمعه 12 شهریور 1389, 17:05 عصر
ولي بازم هنوز حطاي قبل رو ميده

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\link\user.php on line 12


sama01 (http://barnamenevis.org/forum/member.php?u=42615) عزيز من نتايج رو در داخل $sql ريخته بودم ايا روش من اشتباه بود ؟
چون ديدم يك سري اينجوري كد نويسي كرده بودن

من با توجه به روش كه گفتين اقدام كردم ولي بازم اين مشكل رو دارم

xoogle.ir
جمعه 12 شهریور 1389, 17:14 عصر
من نتايج رو در داخل $sql ريخته بودم ايا روش من اشتباه بود ؟
چون ديدم يك سري اينجوري كد نويسي كرده بودن

من با توجه به روش كه گفتين اقدام كردم ولي بازم اين مشكل رو دارم
شما نتایج رو در sql$ نریخته بودید بلکه خود کوئری رو در sql$ ریخته بودید.

شما این کد رو دقیقا بردارید و استفاده کنید مشکلت حل میشه اگه حل نشد کد جدیدت رو بذار.



$res = mysql_query("select * from `sendlink` where username='$username'");
while($link = mysql_fetch_array($res, MYSQL_ASSOC)):
// chap ....
endwhile;

mirzajavad
جمعه 12 شهریور 1389, 17:31 عصر
lهر كجا كه endwhile را قرار ميدم خطا ميگيره
اگر ميشه كمي هم در مورد كدهايي كه اضافه كردين توضيح بدين


$result = mysql_query("SELECT * FROM `sendlink` WHERE usrname='$username'");
while($getlink = mysql_fetch_array($result, MYSQL_ASSOC)):
{
print('<a targrt="_blank" href="$getlink[3]">$getlink[1]</a>');
endwhile;
}

xoogle.ir
جمعه 12 شهریور 1389, 17:54 عصر
:لبخند:
کد شما پر اشکال شد اون کروشه ها رو نباید وارد میکردی چون : و endwhile کار همون کروشه ها رو میکنه.
دقیقا همین کد رو بدون تغییرات بذار :



$res = mysql_query("select * from `sendlink` where username='$username'");
while($link = mysql_fetch_array($res)){
echo '<a target="_blank" href="'.$link['3'].'">'.$link['1'].'</a>';
}


ضمنا اسم فیلد username هست یا usrname ؟؟؟؟ اگر درست نیست فقط اسم فیلد رو عوض کن.

mirzajavad
جمعه 12 شهریور 1389, 18:07 عصر
نميدونم چطوري از شما تشكر كنم
راستش فكر كنم اگر قبلآ مي يومدم برنامه نويس الان ديگه حرفه اي بودم
راستش php رو يك سال و نيم هستش كه شروع كردم ولي هنوز رسيدم اينجا
آخه شهر ما برنامه نويس كه نيست بعدشم سوالاتم رو توي انجمنها ميپرسيدم ولي يك هفته طول ميكشيد تا جواب بدن
اگر ميدونستم اينجا اينجوريه همون قبلآ مي يومدم
اينجا سوال مطرح ميكنم نميگن سرچ كن هر كي بتونه جواب ميده و مهم اينه كه كمتر از 5 دقيقه به مبحث جواب داده ميشه
تاپيك اسپم زدم چون تشكر خشك و خالي كافي نبود
ان شاء الله تا قبل از خدمتم اينجا ميتونم به جواب سوالاتم برسم آخه خلاق نيستم كه خودم كشف كنم
با تشكر از همه دوستان

xoogle.ir
جمعه 12 شهریور 1389, 18:27 عصر
مهم اينه كه كمتر از 5 دقيقه به مبحث جواب داده ميشه

همیشه هم این قدر سریع نیست !

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

ولی به نظرم همیشه گوگل بهترین دوست یه برنامه نویسه :لبخندساده:

sama01
جمعه 12 شهریور 1389, 19:41 عصر
به نظر من هم شما خوش شانس بوده‌اید که زود به نتیجه رسیده‌اید.

یک مورد دیگه.
همیشه سعی کنید خودتان خطایابی کنید. حتما manual خود php رو داشته باشید و از درست نوشتن کدها مطمئن باشید.
وقتی برنامه درست کار نمی‌کند، در نقاط مختلف برنامه، خروجی برگیرید ببینید تا کجا روند منطقی برنامه درست است. گاهی یک اشتباه کوچک که با چشم دیده نمی‌شود، کل برنامه را تحت تاثیر قرار می‌دهد.

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

از این که مشکل‌تان حل شده است،‌خوش‌حالم.

موفق باشید.

mirzajavad
جمعه 12 شهریور 1389, 22:23 عصر
در فروم اگر دقت کنید، کلی سوال تکراری و کلی سوال سطحی پرسیده می‌شه که نشون می‌ده همه دنبال هلو بپر تو گلو هستند.
شما سعی کنید این طوری نشید. هم برای اینکه روی اعصاب بقیه نرید و هم برای این‌که اگر خودتان بتوانید مشکل خودتان را حل کنید، کلی چیز یاد می‌گیرید. ولی اگر عادت کنید از بقیه بپرسید، همیشه باید بپرسید.


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