PDA

View Full Version : سوال: لیست نوشته های یوزر لاگین شده



hashem64
یک شنبه 13 اسفند 1391, 23:43 عصر
سلام دوستان و اساتید سوال بنده اینه که یه فرم توی بخش مدیریت دارم
دو تا فیلد داره یکی titel و text حالا میخواستم
توی بانک اطلاعاتی یه ستون با نام id_user دارم میخوام وقتی ارسال را بزنه آی دی یوزر لاگین شده وارد این ستون بشه

صفحه ارسال به صورت زیر می باشد .







<?php
@session_start();
@ob_start();
include("config.php");

$edit_id=$_GET['edit'];
if($_POST['submit']=='go')
{
$entry_title =$_POST['entry_title'];
$text =$_POST['text'];
if(!$entry_title || !$text)
$error='لطفا تمامی فیلد ها را کامل کنید';
else{
$sqli = mysql_query("INSERT INTO `mt_entry` (`entry_title`,`entry_text` ) VALUES ('$entry_title','$text')");
if($sqli)
$sus='اطلاعات با موفقیت ثبت شد';
else
$error='ثبت اطلاعات با مشکل روبرو شد!';
}

}else if($_POST['submit']=='update')
{
$entry_title=$_POST['entry_title'];
$text=$_POST['text'];
if(!$entry_title || !$text)
$error='لطفا تمامی فیلد ها را کامل کنید';
else{
$sqli= mysql_query("UPDATE `mt_entry` SET `entry_title` = '$entry_title',`text` = '$text' WHERE `id` =$edit_id LIMIT 1");
if($sqli)
$sus='اطلاعات با موفقیت ویرایش شد.';
else
$error='ویرایش اطلاعات با مشکل روبرو شد!';
}
}
if($edit_id)
{
$edit_cat = mysql_fetch_array(mysql_query("SELECT * FROM `mt_entry` where `id`='$edit_id'"));
if(!$edit_cat['entry_title'])
{
echo <<<HTML
<meta http-equiv="refresh" content="0; url= cat_edit.php">
HTML;
}else{
$entry_title=$edit_cat['entry_title'];
$text=$edit_cat['text'];
$submit='update';
}
}
if($error)
$status='<div class="error msg">'.$error.'</div>';
else if($sus)
$status='<div class="success msg">'.$sus.'</div>';
?>



<?php echo $status;?>
<form class="uniform" name="news" method="post" action="<?php if($submit)echo '?edit='.$edit_id;?>">
<input type="hidden" name="go" value="">

<dl>
<dt><label for="newstitle">عنوان دسته</label></dt>
<dd><input type="text" value="<?php echo $entry_title;?>" class="big" id="newstitle" name="entry_title"></dd>

<dt>
<label for="newstitle"> متن </label>
</dt>
<dd><input type="text" value="<?php echo $text;?>" size="8" class="big" id="newstitle" name="text" dir="ltr"></dd>

<p>
<button class="button big" type="submit" value="<?php echo ($submit) ? $submit : 'go';?>" name="submit">ارســال</button>
<button class="button white" type="button">لــغـو</button>
</p>
</form>
<script language="JavaScript" type="text/javascript">
var frmvalidator = new Validator("news");
frmvalidator.addValidation("entry_title","req","عنوان دسته را وارد نمایید");
frmvalidator.addValidation("text","req"," متن وارد نش ه است ");


</script>














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



فرم لیست هم به صورت زیر درست کردم ولی لیست همه کاربر ها را میده .






<?php
$delete=$_GET['delete'];
if($delete)
{
$sql_del=mysql_query("DELETE FROM `mt_entry` WHERE id = $delete");
if($sql_del)
echo '<div class="success msg">دسته مورد نظر با موفقیت حذف گردید</div>';
else
echo '<div class="error msg">حذف دسته مورد نظر با مشکل روبرو شد!</div>';
}
?>
<table class="gtable sortable" id="table1">
<thead>
<tr>
<th>شناسه </th>
<th>عنوان </th>
<th> مدیریت</th>
</tr>
</thead>
<tbody>
<?php
$query = mysql_query("select * from `mt_entry`");
for ( $i = 0 ; $i < mysql_num_rows($query) ; $i++ )
{
$id = @mysql_result($query,$i,"entry_id");
if ( $id != "" )
{
$title = @mysql_result($query,$i,"entry_title");
echo <<<HTML
<tr>
<td>$id</td>
<td>$title</td>
<td>
<a href="cat_send.php?edit=$id"><img src="images/news_edit.png" border="0" title="ویرایش دسته" />
<a onclick="if (confirm('ایا از حذف دسته انتخاب شده مطمئن هستید؟')) window.location = '?delete=$id';" href="#"><img src="images/news_delete.png" border="0" title="حذف دسته" /></a>
</td>
</tr>
HTML;
}else{break;}
}
?>


</tbody>
</table>









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

hashem64
دوشنبه 14 اسفند 1391, 00:43 صبح
نمیدونم توی همه ی انجمن ها اینجوری جواب کاربر ها داده میشه ؟؟

mokha21
دوشنبه 14 اسفند 1391, 10:51 صبح
دوست عزیز کد هاتون خوانا نیست شما خودتون میتونید بخونید ؟؟

Unique
دوشنبه 14 اسفند 1391, 12:29 عصر
نمیدونم توی همه ی انجمن ها اینجوری جواب کاربر ها داده میشه ؟؟

میدونین ، بچه هایی که اینجا فعالیت میکنند توی زمان های آزادشون سر میزنن و این زمان های آزاد خیلی هم زیاد نیست ! مشکل شما چند تا چیزه :
۱ - کدتون را باید توی تگ CODE یگذارین نه QUOTE
۲ - واقعا فکر میکنین کسی حوصله داره دو صفحه کد را بخونه ؟ میدونین این کار را اگه صرف خوندن ۲ صفحه PDF بکنه یا ۲۰ تا پست دیگه را بخونه و جواب بده چقدر بهتره ؟
۳ - شما نصفه شب پست دادین و انتظار دارین یک ساعته جواب بگیرین ؟

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

شرمنده اینجوری جواب دادم و امیدوارم دلخور نشین ، ولی این حرف ها در صورت عمل بهش به نفع خودتون خواهد بود.

hashem64
دوشنبه 14 اسفند 1391, 15:27 عصر
شرمنده فکر نکنم کد های این دو صفحه طولانی باشه یعنی اگر تیبل ها و دیو ها را پاک کرد شاید 10 خط هم نشوند که الان اینجوری میگید تازه اگر برنامه نویس برنامه نویس باشه کد را ببینه باید یه یه حرکت درستش کنه فکر کنم شما حوصله جواب دادن را ندارید که این گونه پاسخ میدید البته پیام شما پاسخ درست برای بنده نیست و فکر کنم وقت خود را بیهوده جهت تایپ این همه نوشته داده اید

تازه به جای این همه تایپ بیهوده جواب (جواب درست ) بدید بهتره تا این که ..... .



بنده تازه مبتدی هستم توی پی اچ پی و انقدر که راحت گفتید
۱ - کدتون را باید توی تگ CODE یگذارین نه QUOTE



اگر میگفتید این چی هست و چه طوری هست بهتر بود تا این که این همه ... کنید

تا آدم بدونه دنبال چی بره شما گفتید هلو بره تو گلو کی خواست کد را درست کنید بفرمائی چی به چی هست تا بده برم دنبالش ...

AbiriAmir
دوشنبه 14 اسفند 1391, 15:43 عصر
دوست عزیز لحن صحبتتون درست نیست
فرمایشات جناب unique کاملا درست بود

اما پاسخ شما:
شما باید موقع لوگین آیدی کاربر لوگین شده را در سشن ذخیره کنید و هنگام پست دادن اون رو از سشن خونده و در فیلد مورد نظر در دیتابیس بریزید.
همین
موفق باشید

hashem64
دوشنبه 14 اسفند 1391, 16:57 عصر
این را تونستم درست کنم

الان یوزر کاربر را ارسال میکنه به یوزر آی ذی


$username_check=$_SESSION["resller_username"];
$password_check=$_SESSION["resller_password"];
$setting_user = mysql_fetch_array(mysql_query("SELECT * FROM `users` where `user`='$username_check' AND `pass`='$password_check'"));
$user_id=$setting_user['user_id'];



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

siavashsay
دوشنبه 14 اسفند 1391, 17:46 عصر
نده تازه مبتدی هستم توی پی اچ پی و انقدر که راحت گفتید
۱ - کدتون را باید توی تگ CODE یگذارین نه QUOTE 1- شما مثلا برنامه نویس هستید ! یه کاربر تازه وارد هم میتونه فرق Quote و اون آیکون PHP رو متوجه شه !

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

تا آدم بدونه دنبال چی بره شما گفتید هلو بره تو گلو کی خواست کد را درست کنید بفرمائی چی به چی هست تا بده برم دنبالش تا دوستان و یا به قول شما اساتید بخوان متوجه شن چی به چی هست و بعد به شما بگن که چی به چی هست باید اون کد رو اصلاح و منظم کنن تا بتونن بفهمن چی به چی هست دوست عزیز !
بنده هم خودم تا تاپیک شما رو دیدم سریع Close کردمش ! چون حوصله خوندن این کدهای نا منظم رو نداشتم !
هر موقع برای سوال خودتون احترام و نظم قائل بودید اون وقت انتظار یک جواب صحیح و منظم رو نیز داشته باشید
یه خورده فرهنگ اینجور مجامع رو درک کنید بعد وارد گفتگو شید بهتره !
موفق باشید

css-man
دوشنبه 14 اسفند 1391, 19:43 عصر
آدی کاربر رو از سشن بگیر بریز تو دیتابیست دیگه

css-man
دوشنبه 14 اسفند 1391, 19:57 عصر
برای نمایش لیست نوشتهاش
باز آدی رو از سشن بگیر یه کوئری بزن بگو رکورد هایی رو بیاره که فیلد یوزر آدیشون با این یوزر آدی برابر باشه بعد هم fetch کن و نمایش بده


$q="SELECT * FROM `news` WHERE `userid` ='$id' ";

hashem64
دوشنبه 14 اسفند 1391, 21:16 عصر
ممنونم تشکر بسیار فرآوان از پاسخ های شیرینتون چشم بنده به اشتباه خود پی بردم شاید برداشت اشتباده دوستان در تاپیک ایجاد شده توسط بنده موجب شده که اینجور پاسخ درست به بنده ندهند ولی دوستان css-man و AbiriAmir صحبت های اولیه بنده را درست متوجه شده و پاسخ درست و کاربردی به بنده دادند با این که مبتدی هستم ولی کاملا درست درست شد . ارگ دوستان از دست بنده ناراحت شده اند به بزرگی خود ببخشید


جواب های بنده توی

دو تا فیلد داره یکی titel و text حالا میخواستم
توی بانک اطلاعاتی یه ستون با نام id_user دارم میخوام وقتی ارسال را بزنه آی دی یوزر لاگین شده وارد این ستون بشه
همچنین و قتی یوزر لاگین کرده است توی بخش ویرایش لیست نوشته های خودش بیاد
فرم لیست هم به صورت زیر درست کردم ولی لیست همه کاربر ها را میده .

که جواب css-man و AbiriAmir درست بود حالا کد های را که دادم فقط جهت دیدن و درک بهتر سوال بوده است .

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

hashem64
سه شنبه 15 اسفند 1391, 06:41 صبح
یلام عزیزان بنده همه چیز درست کردم فرم ارسال فرم ویرایش و ... یوزر ها مطلب ارسال کنند مدیر تائید کنه و .... یه مشکل که هست اینه که وقتی میخواد پست ارسالی را ویرایش کنه با این که لیست نوشته های خودش را داره با تغییر send_f.php?edit=25 عدد 25 میتونه وارد پست های دیگه بشه و همین کار را برای حذف میتونه انجام بده و نوشته های دیگر کاربر ها را حذف کنه

تا اینجا هم میدونم باید شرط استفاده کنم ولی نمیدونم چه طوری باید نوشتش

siavashsay
سه شنبه 15 اسفند 1391, 10:01 صبح
دوست عزیز شما باید برای هر فیلد پستی که داری از دیتابیس میگیری حتما چک کنی که اون پست مخصوص کاربر لاگین کرده باشه تا بتونه روش تغییرات رو انجام بده !
اگر بتونید اون عدد رو طوری تغییر بدید که یک عدد یکتا برای هر کاربر و پست باشه خوبه ! مثلا 25 نباشه بلکه شامل یک رشته کد باشه !
مثلا dfert456dfg34wXetdfgodf232 که تولید این کد باید در موقع ثبت خبر یا پست باشه !
اما اگر میخواین که حتما یک عدد مثل همین 25 باشه باید حتما از متغییرهای دیگه ای هم استفاده کنید در کنار edit ! طوری که بتونید پست اون کاربر رو شناسایی کنید ! مثلا یک فیلد ID یکتا هم توی دیتابیس ایجاد کنید و در کنار edit استفاده کنید :

send_f.php?edit=25&id=Xdvbyyjfrfgh345sdsfsf
حالا اینجا باید اینطوری چک کنید :

$edit=$_GET['edit'];
$id=$_GET['id'];
$username=$_SESSION['username'];
// db connect
$sql=mysql_connect("SELECT * FROM `posts` WHERE `edit`='$edit' AND `id`='$id');
$nr=mysql_num_rows($sql);
if($nr!=1){
header("Location:index.php");
exit;
}
$obj=mysql_fetch_obejct($sql);
$post=$obj->post;
echo $post // or edit
مهم اینه که حتما اون عدد یک فیلد آیدی یکتا هم داشته باشه که یعنی توی اون دیتابیس شما فقط یک ردیف داشته باشید!
امیدوارم منظورمو رسونده باشم !

hashem64
سه شنبه 15 اسفند 1391, 14:27 عصر
سلام منظور شما از آی دی یکتا همون آی دی یوزر هست ؟ دقیقا متوجه ندشدم

حالا اگر غیر از این بود
http://localhost/1/user/send_f.php?edit=25
پیام خطا بده و بگه شما مجاز به حذف
و یا شما مجاز به ویرایش این پست نمی باشید

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

siavashsay
سه شنبه 15 اسفند 1391, 16:04 عصر
منظور من از آیدی یکتا یعنی یک مشخصه برای هر خبر که تکرار نداشته باشه بود !
اما اینطوری هم که خودتون گذاشتید بد نیست فقط باید توی SQL مشخص کنید مثلا POST شماره 25 که نام کاربری برابر ما سشن کاربری شما باشه - مثلا :

$edit=$_GET['edit'];
$username=$_SESSION['username'];
$sql=mysql_query("DELETE FROM `posts` WHERE `id`='$edit' AND `username`='$username' LIMIT 1");
موفق باشید

hashem64
سه شنبه 15 اسفند 1391, 21:07 عصر
کارت درسته تازه دارم میفهمم دنیا دست کیه بابا دنیا دست برنامه نویس هاست

خیلی حال کردم دست گلت درد نکنه با خودم میگم این باید بشه ولی یه جورایی ترتیب نوشته ها دستم نیست دست گلتون درد نکنه

siavashsay
چهارشنبه 16 اسفند 1391, 09:12 صبح
موفق باشید