PDA

View Full Version : كمك فوري براي ايجاد فرم ارسال نظر



emanab
سه شنبه 21 شهریور 1391, 20:44 عصر
با سلام وخسته نباشيد
دوستان من يه سايت طراحي كردم الان ميخام يه فرم ارسال نظرات براي سايتم بزارم.ولي الان چند روز هست هر چي كار ميكنم نميتونم نتيجه بگيرم از دوستات تقاضا دارم يه مثال ساده برام بزارن تا بتونم ازش كمك بگيرم .لازم به ذكر هست اصليترين مشكل من بازيابي اطلاعات از پايگاه داده هست

ravand
سه شنبه 21 شهریور 1391, 21:09 عصر
راه کارش ساده اس.
شما باید برای نظر یه فیلدی در نظر بگیری که بعد برای فراخوانیش اون فیلد رو مساوی id اون پست مورد نظر قرار بدی.
ببین من این کار رو کردم:

$query = sprintf("SELECT * from nazar WHERE showpost='1' && `idnazar`='$id'");
گزینه ی showpost='1' هم برای موقع ای هست که نظر تایید شده نمایش داده بشه.

emanab
سه شنبه 21 شهریور 1391, 21:26 عصر
با تشكر از دوست عزيز
اگه ممكنه كد كامل برام بزاري مخم بدجوري هنگ كرده.من تازه كار با php و mysqlشروع كردم اگه كد كامل بزاري ميتونم خودم تحليلش كنم .بازم تشكر

emanab
چهارشنبه 22 شهریور 1391, 10:48 صبح
كسي نيست به من كمك كنه

ravand
چهارشنبه 22 شهریور 1391, 11:07 صبح
هیچ وقت نخواه کسی اسکریپت رو دو دستی تقدیمت کنه. سعی کن یاد بگیری. اگه بخوای کسی راحت کدی رو بهت بده هیچ وقت برنامه نویسی رو یاد نمیگیری.
ببین ساده اس.
شما بر اساس id نظر ، نظر خاصی رو در رکورد خاصی به نمایش میذاری.
مثلا با کد زیر نظر رو نمایش میدی:

select * from nazar order by idnazar=$idnazar;
الان میخوای نظر 16 رو نمایش بدی اینطوری میکنی:

select * from nazar order by id=16;

و رکورد نظر که شامل عنوان نظر 16 و متن و ایمیل نظر 16 هست نمایش داده میشه.
اینم مال پست:

select * from post order by idpost=$idpost;
حالا میخایم این نظر 16 بشه نظری برای پست مثلا 16 . اینطوری میکنی:

select * from nazar order by idnazar=$idpost;

select * from nazar order by idnazar=16;

emanab
چهارشنبه 22 شهریور 1391, 11:39 صبح
با تشكر
يه سوال ديگه:
با چه دستوري ميتونم id به طور اتوماتيك به هر نظر بدم؟

ravand
چهارشنبه 22 شهریور 1391, 11:43 صبح
وقتی این کاری که گفتم انجام بدی خودش به صورت اتوماتیک این کار رو برات انجام میده. وقتی روی آدرس نظر مورد نظر کلیک کنی مقدار idnazar ارسال میشه.

ravand
چهارشنبه 22 شهریور 1391, 12:04 عصر
ببخشید اولش منظور شما رو متوجه نشدم.
شما باید یه فیلد توی جدول nazar بسازی با نام idpost . با شما با یک متغییر مقدار idpost جدول post که متعلق به مطالب پست های ارسالی سایت هست رو با استفاده از این متغییر بدی به کد زیر:

<input type="hidden" name="idpost" value="<?php echo $idpost; ?>"/>
این دستور هم مخفیانه با ارسال شدن نظر idpost رو به جدول nazar ارسال میکنه. بعد با دستور زیر میتونی نظری که مخصوص خود پست هست رو چاپ بکنی:

select * from nazar order by idnazar=$idpost;
اینم فرم نظر ما:

<form action="get-nazar.php" method="post">
<p><label for="name">نام:</label>
<input type="text" dir="rtl" name="name"></p>
<p><label for="web">وبسایت:</label>
<input type="text" value="http://" dir="ltr" name="web"></p>
<p><label for="email">ایمیل:</label>
<input type="text" dir="ltr" name="email"></p>
<p><label for="msg">متن:</label>
<textarea name="msg" dir="rtl" rows="5" cols="17"></textarea></p>
<input type="hidden" name="idpost" value="<?php echo $idpost; ?>"/>
<p><input type="submit" value="ارسال"></p>
</form>
وقتی نظر رو در پست 16 نوشتیم و ارسال کردیم مقدار idpost شماره ی 16 برای جدول nazar ارسال میشه . و مثلا رکورد ما یعنی idnazar ما هم 16 یا هر عدد دیگه ای هست اگه با هم در یک رکورد باشن به همین دستوری که گفتم چاپ میشن:

select * from nazar order by idnazar16=$idpost16;

emanab
چهارشنبه 22 شهریور 1391, 12:14 عصر
اين دستورات فرم هستن:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<style type="text/css">
table{text-align:right;float:right; font-family:arial; font-size:14px;}
</style>
</head>
<body>
<form method="post" action="sabtn.php">
<table><tr>
<input type="hidden" name="id" value="<?php echo $id;?>"></tr>
<tr>
<td><input type="text" name="name">
<td> <b>:نام ونام خانوادگي</b></td></tr>
<tr>
<td><input type="text" name="imile" ></td>
<td><b>:ايميل</b></td></tr>
<tr>
<td><textarea type="text" name="matn" cols="50" rows="4" ></textarea></td>
<td><b>:توضيحات</b></td></tr>
<tr>
<td><input type="submit" name="submit" value="ارسال"></td></tr>
</table>
</form>
</html>
اينم دستورات ثبت نظر توي پايگاه داده:

<?php
//retrieve form variables
$id=$_POST['id'];
$name = $_POST['name'];
$imile = $_POST['imile'];
$matn = $_POST['matn'];
if (strlen($name) == 0 OR strlen($imile) == 0 OR strlen($matn) == 0 )
{
echo "Go back and fill all fields !";
exit;
}
//connet to MySQL server
$db = mysql_connect("localhost", "root", "");
if(!$db)
{
echo " Error : cannot open connection.";
exit;
}
mysql_query('set names utf8');
mysql_select_db('test');
$query = " insert into nazar
(id, name, imile, matn) values
('".$id."','".$name."', '". $imile."', '".$matn."')";


$result = mysql_query($query);
if($result)
echo mysql_affected_rows(). '<b> نظر شما با موفقيت ثبت شد</b>';
mysql_close($db);
?>

emanab
چهارشنبه 22 شهریور 1391, 12:17 عصر
كدهاي من كجاش ايراد داره.؟توي پايگاه داده هم 4 تا فيل دارم به نام:
id
name
imile
matn
همشون موقعه ارسال ثبت ميشن بجز id

ravand
چهارشنبه 22 شهریور 1391, 12:20 عصر
اینطوری که بوش میاد شما اصلا به حرف های من توجهی نکردید. :لبخند:
من گفتم یه فیلد برای ثبت idpost که آی دی صفحه ی مورد نظر هست رو توی جدول nazar درست کنید. بعد این مقدار idpost رو بعد از اینکه select کردید(انتخاب کردید) به متغییر بدید و بعد به insert into nazar .

emanab
چهارشنبه 22 شهریور 1391, 13:05 عصر
واقعا نميگيرم چي ميگي:گریه:
كدهاي كه گذاشتم مشكل دارن؟

emanab
چهارشنبه 22 شهریور 1391, 13:45 عصر
آقاي ravandميشه id را برام بزاريد تا باهاتون از طريق ياهو ارتباط داشته باشم.؟

emanab
پنج شنبه 23 شهریور 1391, 13:50 عصر
سلام خسته نباشيد:جناب آقاي حسينيان:
من طبق گفته شما توي جدول نظر يك فيلد ديگه به نام idpostاضافه كردم و از نوع auto_incremeantوالان توي جدول يه id ديگه به نام idnazar
الان من وقتي يه نظرو تايپ ميكنم وارسال ميكنم.idpost خودش مقدار ميگيره,ومتن وايميل وموضوع متن داخل جدول ميرن وليidnazar مقدار نميگيره.
ولي با دستور زيرميتونم متن ونام و ايميل وidpost بازگرداني كنم:

mysql_select_db('test');
$query = ("select * from nazar");
mysql_query("SET CHARACTER SET UTF8");
$result = mysql_query($query);
while($row=mysql_fetch_array($result)){
echo $row['name'];
echo '<br>';
echo $row['matn'];
echo '<br>';
echo '<hr>';
}
exit;
ولي من ميخام نظراتم توي خود همون صفحه كه فرم ارسال نظراتو گذاشتم چاپ بشن.؟
لطفا اين دستورات كه من گذاشتم كاملتر كنين وتغييرات مورد نياز رو بهم بگين؟
ممنون

emanab
جمعه 24 شهریور 1391, 13:22 عصر
كسي نميخاد جواب بده.اين انجمن فقط آقاي ravand رو داره؟

فرزند کوروش
شنبه 25 شهریور 1391, 11:39 صبح
درود برشما
دوست گرامی "ravand (http://barnamenevis.org/member.php?147061-ravand)" کوئری شما یه مشکل کوچیک داره

select * from nazar order by idnazar=$idnazar;
باید بشه

select * from nazar order by id WHERE nazar=$idnazar;

فرزند کوروش
شنبه 25 شهریور 1391, 11:51 صبح
دوست گرامی emanab (http://barnamenevis.org/member.php?263214-emanab)
شما به چه شکل idnazar رو ارسال میکنید که مقدارنمیگیره ؟
ببینیذ هنگام ارسال نظر برای یک پست شما باید یک تکس باکس دیگه برای ارسال ای دی اون پست داشته باشید مثل همون تکس باکسی که برای ایمیل یا نام هست .

<input type="text" name="idnazar" value="<?php echo $_POST['idpost']] ?>">
بعد این idnazar رو اینسرت کنید داخل جدولتون

mysql_query("INSERT INTO nazar(idnazar) VALUES("$_POST['idpost]') ")
سپس برای سلکت کردن هر نظر برای هر پست :

$query = ("select * from nazar WHERE idnazar=$_GET['idnazar']");
و این get هم باید ای دی پست شما باشه وقتی که یکپست روبصورت تکی باز میکنید یعنی در url
www.sitename.com/post.php?idnazar=1

با اینکار تمام نظرهایی که idnazar اونها برابر با 1 هست نمایش داده میشه.

امیدوارم متوجه شده باشید

emanab
شنبه 25 شهریور 1391, 13:58 عصر
سلام فرزند كوروش مرسي از راهنمايت:
من كد هارو كامل ميزارم ببين كجا ايراد داره ؟

<html>
<head>
<form method="post" action="sabtn.php">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<style type="text/css">
table{text-align:right;float:right; font-family:arial; font-size:14px;}
</style>
</head>
<body>
<table><tr>
<input type="hidden" name="idnazar" value="<?php echo $_POST['idpost'] ?>""></tr>
<tr>
<td><input type="text" name="name">
<td> <b>:نام ونام خانوادگي</b></td></tr>
<tr>
<td><input type="text" name="imile" ></td>
<td><b>:ايميل</b></td></tr>
<tr>
<td><textarea type="text" name="matn" cols="50" rows="4" ></textarea></td>
<td><b>:توضيحات</b></td></tr>
<tr>
<td><input type="submit" name="submit" value="ارسال"></td></tr>
</table>
</form>
</html>







اينم كد ثبت نظر توي جدول:

<?php
//retrieve form variables
$idpost=$_POST['idpost'];
$name = $_POST['name'];
$imile = $_POST['imile'];
$matn = $_POST['matn'];
if (strlen($name) == 0 OR strlen($imile) == 0 OR strlen($matn) == 0 )
{
echo "Go back and fill all fields !";
exit;
}
//connet to MySQL server
$db = mysql_connect("localhost", "root", "");
if(!$db)
{
echo " Error : cannot open connection.";
exit;
}
mysql_query('set names utf8');
mysql_select_db('test');
$query = " insert into nazar
(idnazar, name, imile, matn) values
(".$idpost."',".$name."', '". $imile."', '".$matn."')";
$result = mysql_query($query);
if($result)
echo mysql_affected_rows(). '<b><dir="rtl"> نظر شما ثبت شد</b>';
mysql_close($db);
?>


اينم كد بازيابي:

<html>
<head>
<link rel="stylesheet" type="text/css" href="div.css">
</head>
<body>
<?php
//end sabt
$db = mysql_connect("localhost", "root", "");
if(!$db)
{
echo 'Error : Cannot connect to MySQL server.';
exit;
}
mysql_select_db('test');
$query = sprintf("SELECT * from nazar ");

mysql_query("SET CHARACTER SET UTF8");
$result = mysql_query($query);
while($row=mysql_fetch_array($result)){
echo '<div id="iman">';
echo $row['name'];
echo '<br>';
echo $row['matn'];
echo '<br><br><hr>';
}
exit;
?>

ممنون از لطفت

فرزند کوروش
یک شنبه 26 شهریور 1391, 10:10 صبح
این گد الام مشگلی نداره ولی تو قسمت بازیابی تمام نظرها رو نشون میده. در حای که باید نظرهای مربوط به یه پست خاص رو نشون بده یه WHERE کم داره. یعنی ای دی پست رو داخل url بفرستید بعد بر اساس اون شرط رو تعیین کنید

$query = ("select * from nazar WHERE idnazar=$_GET['idnazar']");

ضمن اینکه خروجوی اول که باید ای دی پست رو فرسته تو تکس باکس چک کنید ببینید درست کار میکنه یا نه.منظورم این هست

<input type="hidden" name="idnazar" value="<?php echo $_POST['idpost'] ?>"">

emanab
یک شنبه 26 شهریور 1391, 13:28 عصر
سلام فرزند كروش اي دي ياهو داري باهات در ارتباط باشم.نيازبه راهنماي دارم