ارسال نظر

jalaladdin

Active Member
برای مطالب سایتم ،فرم ارسال نظر ساختم حالا چگونه کد بنویسم تا نظراتی که درپایگاه داده ذخیره و شده مورد تائید مدیر سایت هست در قسمت نظرات نشان داده شود
با تشکر
 

ahmad_m1234

Active Member
برای این کار شما کافیست یک فیلد بسازید و مقدار پیشفرض آن 0 دهید و در کد sql آن شرطی بزارید آنهایی که مقدار فیلد 0 هستند نمایش ندهد و در cms خود نظری که می خواهد نمایش دهد مقدار آن را 1 کنید که می توانید از ابزار چک باکس یا لیست منو استفاده کنید
 

jalaladdin

Active Member
برای مشاهده نظر توسط مدیر سایت بدین صورت کد نوشتم
PHP:
<?php
$con=mysql_connect("localhost","root","")or die(mysql_error());

mysql_select_db("admin", $con);

$result = mysql_query("SELECT * FROM idea");
echo "<table border='1'>
<tr>
<th>ردیف</th>
<th>نام</th>
<th>ایمیل</th>
<th>پیام</th>
<th>تائید</th>
<th>حذف</th>
</tr>";

while($row = mysql_fetch_array($result))
  {
      echo'<p>';
       echo "<tr>";
         echo "<td>" . $row['id'] . "</td>";
  echo "<td>" . $row['name'] . "</td>";
  echo "<td>" . $row['email'] . "</td>";
  echo "<td>" . $row['message'] . "</td>";
  ?>
  
  <td align="center" onMouseOut="this.style.backgroundColor = ''" onMouseOver="this.style.backgroundColor = '#e4e4e4'"><a href="?delID=<?php echo $row_rsNews['id']; ?>">تائید</a></td>
  <td align="center" onMouseOut="this.style.backgroundColor = ''" onMouseOver="this.style.backgroundColor = '#e4e4e4'" >
  <a href="del idea.php?id=<?php echo $row['id']; ?>" onClick="return confirm(' آیا برای حذف مطلب نام(  <?php echo $row['id']; ?>  )  مطمئن هستید؟ ');">[x]</a></td>
<?php echo "</tr>";

  echo'</p>';?>
  
  
<?php  }

mysql_close($con);
?> 
  


</p>

</div></table>
</body>
</html>
چگونه کد بنویسم که نظرات مربوط به هر مطلب پس از تائید توسط مدیر سایت در زیر همان مطلب نشان داده شود
 

Domanjiri

Well-Known Member
سلام

تیبل idea ( اسم comment بهتر نبود؟!) در دیتابیس باید دو فیلد داشته باشه مثلن به اسم های checked و cid که اولی برای تایید کامنت برای مدیر هست و دومی id مطلبی هست که کامنت برای اون مطلب فرستاده شده، حالا کوئری مثلن میشه این:
PHP:
SELECT *
FROM `idea`
WHERE `cid` =3
AND `checked` =1
ORDER BY `id` ASC
شد؟!

موفق باشید
 

jalaladdin

Active Member
مطالب سایت در یک تیبل دیگری به نام message ذخیره میشود و تیبل idea هم جدا میباشد حالا چگونه نظرات مربوط به هر مطلب در همان قسمت مطلب نشان بدم؟
 

Domanjiri

Well-Known Member
درود بر شما

در کوئری نویسی بسیار دستتون باز هست و می تونید اطلاعات زیادی با یه کوئری مناسب بدست بیارید، حتما راجع به join در sql سرچ کنید که خیلی مفید هست

اما یه مورد ساده برای کار شما می تونه این باشه:
PHP:
SELECT m.*
FROM message m
INNER JOIN idea i ON m.id = i.cid
WHRER m.id = 3 AND i.checked=1

cid رو هم که توی ارسال قبلی گفتم چیه..

موفق باشید.
 
آخرین ویرایش:

jalaladdin

Active Member
برای نشان دادن نظر در زیر همان مطلب بدین صورت کد را نوشتم اما نظر نشان داده نمیشود به نظر شما مشکل از کجاست؟
PHP:
$accept = mysql_query("SELECT idea.name,idea.message,message.text1
                FROM idea INNER JOIN message on idea.id=message.id ORDER BY  idea.name ");
                 echo mysql_error();
          if(mysql_num_rows($accept)>0)
        {
            while ($news_i = mysql_fetch_assoc($accept))
            {
                echo'<p>';
                echo '<DIV class=" bg-blue02 t ">'."\n";
                echo $news_i['name'];
                echo '</DIV>'."\n";
                
                echo '<DIV class=" text ">'."\n";
                echo $news_i['message'].'<BR/>'."\n";
                
                
            echo '</DIV>'."\n";
            echo'</p>';
             }
        }
 
آخرین ویرایش:

Domanjiri

Well-Known Member
سلام

اگه شما می خواین توی صفحه ی مربوط به هر مطلب، کامنت ها رو زیر مطلب نشون بدین، بهتره که از دو کوئری استفاده کنید:
PHP:
<?php

$conn = mysql_connect("localhost", "root", "");

if (!$conn) {
    echo "Unable to connect to DB: " . mysql_error();
    exit;
}

if (!mysql_select_db("test")) {
    echo "Unable to select mydbname: " . mysql_error();
    exit;
}

/** ********************************************* **/

$id = intval($_POST['id']);

//$id = 2;

$sql = "SELECT * FROM message WHERE id=$id LIMIT 1";

$result = mysql_query($sql);

if (!$result) {
    echo "Could not successfully run query ($sql) from DB: " . mysql_error();
    exit;
}

$row = mysql_fetch_object($result);
?>
<div>
    <p><?php echo $row->title; ?></p>
    <div><?php echo $row->text; ?></div>
</div>
<?php

/** show comments **/

$sql = "SELECT * FROM idea WHERE cid=$id AND checked=1";

$result = mysql_query($sql);

if (!$result) {
    echo "Could not successfully run query ($sql) from DB: " . mysql_error();
    exit;
}

if (mysql_num_rows($result) == 0) {
    echo "No comment!";
    exit;
}


while ($comment = mysql_fetch_assoc($result)) {
    echo "<hr> \n";
    echo $comment['text'];

}


mysql_free_result($result);
بدیهیه این یه سمپل هست و باید موارد امنیتی و .. رو درنظر بگیرید.

اما اگه میخواین توی یه صفحه، تمام مطالب نشون داده بشه و همه کامنت های هر مطلب هم زیرش باشه، باید از همون دستوری که بالا گفتم استفاده کنید. هر جا توی پیمایش یک آرایه دچار مشکل شدین،( print_r($array رو اجرا کنید تا روشش دستتون بیاد

موفق باشید
 

jalaladdin

Active Member
فرم ارسال نظر در قسمت ادامه مطلب میباشد من میخواهم نظرات در قسمت ادامه مطلب باشد نه در صفحه اصلی زیر مطالب
پس با توجه به کد بالا که نوشتم نظرات نشان داده نمیشود نمیدانم مشکل از کجاست!!!!!!!!!
 

jalaladdin

Active Member
وقتی این کوئری مینویسم تمامی نظرات در زیر هر مطلب نشان داده میشود من میخوام نظرات مربوط به هر مطلب در زیر خودش نمایش داده شود
PHP:
$accept = mysql_query("SELECT *
                FROM idea
 

jalaladdin

Active Member
اما وفتی این کوئری مینویسم هیچ نظری نشان داده نمیشود
PHP:
$accept = mysql_query("SELECT idea.name,idea.message,message.text1
                FROM idea INNER JOIN message on idea.id=message.id ORDER BY  idea.name ");
 

Domanjiri

Well-Known Member
دوست من، شما اصلن کدی که من گذاشتم رو خوندید؟ اونجایی که :
PHP:
$sql = "SELECT * FROM idea WHERE cid=$id AND checked=1";

و همینطور جواب دیگه ای که قبلن براتون نوشته بودم( راجه به اینکه cid چیه و ...)؟

موفق باشید..
 

jalaladdin

Active Member
این دو تصویر جدول messageوidea میباشد
من برای نشان دادن مطالب و نظرات دو کوئری نوشتم اما باز مشکلم در قسمت نشان دادن نظرات میباشد
 

پیوست ها

  • Untitled.jpg
    Untitled.jpg
    120.7 کیلوبایت · بازدیدها: 7
  • Untled.jpg
    Untled.jpg
    110.1 کیلوبایت · بازدیدها: 7
آخرین ویرایش:

Domanjiri

Well-Known Member
درود بر شما

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

اگه هزارتا کامنت توی جدول idea باشه، برنامه باید از کجا بفهمه کدوم کامنت برای کدوم مطلب هست؟!:?::idea:

خب من گفته بودم که یه فیلد دیگه، مثلن به اسم cid یا mid یا... باید اضافه کنید و آیدی مطلبی که کامنت برای اون فرستاده شده رو توش بریزید.

پیوست رو ببینید

شاد باشید
 

پیوست ها

  • idea.PNG
    idea.PNG
    35.2 کیلوبایت · بازدیدها: 6

jalaladdin

Active Member
درود بر شما

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

اگه هزارتا کامنت توی جدول idea باشه، برنامه باید از کجا بفهمه کدوم کامنت برای کدوم مطلب هست؟!:?::idea:

خب من گفته بودم که یه فیلد دیگه، مثلن به اسم cid یا mid یا... باید اضافه کنید و آیدی مطلبی که کامنت برای اون فرستاده شده رو توش بریزید.

پیوست رو ببینید

شاد باشید

idبرای فیلد idea گذاشتم
نیازی به cid نیست
 

Cyletech

Member
من قبلاً یه کامنتینگ خوب نوشته بودم الان قسمتیش مونده. آخه پاکش کرده بودم. فقط بهش نگاه کن و همه چیزش رو یاد بگیر. بعد واسه خودت رو ویرایش کن یا یکی بهتر بنویس. برات ضمیمه کردم.
 

پیوست ها

  • commenting.zip
    2.3 کیلوبایت · بازدیدها: 8
آخرین ویرایش:

jalaladdin

Active Member
از راهنمای همه دوستان سپاسگزارم
میخواهم بدانم اشکال کد من کجاست چه تغییراتی در این کوئر یبدهم تا هر نظر زیر همان مطلب نشان داده شود جدول ثبت مطالب جدا از جدول ثبت نظر میباشد این هم کد نشان دادن مطالب میباشد هر وقت کاربر روی ادامه مطلب کلیک کرد فرم ارسال نظر نشان داده میشود
PHP:
<?PHP
    mysql_connect('localhost','root','') or die('Could not connect.');
    mysql_select_db('admin') or die('Database does not exist.');
    if(isset($_GET['id']) && $_GET['id']!='' && is_numeric($_GET['id']))
    {
        $news = mysql_query("select * FROM `message` WHERE `id`=' ".intval($_GET['id'])."' LIMIT 1");  
        echo mysql_error();
        if(mysql_num_rows($news)>0)
        {
            $news_i=mysql_fetch_assoc($news);
        }
        echo '<DIV class=" bg-blue02  t  ">'."\n";
        echo $news_i['title'];
        echo '</DIV>'."\n";
        echo '<DIV class="  text  ">'."\n";
        echo $news_i['text1'].'<BR/>'."\n";
         echo '</DIV>'."\n";
        echo'<p><center>';
        echo"نظرات";
        echo'</center></p>';
        echo '<DIV class="  text  ">'."\n";
        $id = intval($_POST['id']);

            $accept = mysql_query("SELECT * FROM idea   ");
                 echo mysql_error();
          if(mysql_num_rows($accept)>0)
        {
            while ($news_i = mysql_fetch_assoc($accept))
            {
                echo'<p>';
                echo '<DIV class=" bg-blue02 t ">'."\n";
                echo $news_i['name'];
                echo '</DIV>'."\n";
                
                echo '<DIV class=" text ">'."\n";
                echo $news_i['comment'].'<BR/>'."\n";
                
                
            echo '</DIV>'."\n";
            echo'</p>';
             }
        }
        if (mysql_num_rows($accept) == 0) {
    echo "No comment!";
   
} 
        echo'<p><center>';
        echo"ارسال نظر";
        echo'</center></p>';
         printf('
         
          <form  action="idea.php" name="contact" method="post" class=" dir "name="signup" id="signup"  >
<center><table summary="Demonstration form">
  <tbody>
  <tr>
    <td><label for="name">نام :</label></td>
    <td><input name="name" size="35" maxlength="50" type="text"></td>
  </tr>   
  <tr>
    <td><label for="email">ایمیل:</label></td>
    <td><input name="email" size="35" maxlength="25" type="text"></td>
  </tr>
    
  <tr>
    <td><label for="comment">پیام:</label></td>
    
    <td><textarea style="width:250px;height:120px" name="comment"  type="text"rows="5" cols"100" maxlength="2000"></textarea></td>
  </tr>  
  
  <tr>
    <td> </td>
   
    <td><input name="Submit" value="ارسال" type="submit" class="button" ></td>
    
    <td><input type="reset" value="پاک کردن" name="B2" class="button"> </td>
  </tr>
  </tbody>
</table></center>
</form>
         
         ');
          echo '</DIV>'."\n";
    }
    else
    {
        $news = mysql_query('SELECT * FROM `message` ORDER BY `id` DESC');
        if(mysql_num_rows($news)>0)
        {
            while ($news_i = mysql_fetch_assoc($news))
            {
                echo'<p>';
                echo '<DIV class=" bg-blue02 t ">'."\n";
                echo $news_i['title'];
                echo '</DIV>'."\n";
                
                echo '<DIV class=" text ">'."\n";
                echo substr($news_i['text1'],0,1000).'<BR/>'."\n";
                
                echo '<a href="'.$filename.'?id='.$news_i['id'].'" class="bg-green03">&nbsp;ادامه مطلب&nbsp;</A>'."\n";
            
                
                echo '<a href="'.$filename.'?id='.$news_i['id'].'" class="bg-green03">نظرات</A><BR/>'."\n";
            echo '</DIV>'."\n";
            echo'</p>';
             }
        }
    }
?>
 

masima

Member
دوست عزیزم Doman جان خیلی قشنگ توضیح دادن ؛
شما حتما باید توی جدول نظرات یک ستون بذارید که مشخص کنه اون فرد به کدوم خبر نظرشو فرستاده ؛ اون آیدی که شما صحبتش رو میکنید یه چیز دیگست !
فرض کنید انتخابات هست و چند نفر نامزد انتخابات هستند (هر نامزدی یک نام داره یعنی id ) ؛ هر کسی بره رای بده اسمشو توی برگه مینویسن (یعنی id اون فرد ) ؛
شما میری رای میدی ولی برگه سفید میندازی ؛
به فرض نتیجه انتخابات معلوم میشه و مثلا از جمع 10 نفری شما ، مجموع آرا میشه 9 تا !
همه هم ادعا میکنن رای دادن !
ولی چرا توی نتیجه 1 رای حساب نشده ؟ :shock:
خودتون یکم فکر کنید ؟ :idea:
درسته ! شما رای دادی چون اسمت (یعنی id شما ) توی برگه نوشته شده ! ولی چون شما مشخص نکردید به چه کسی رای دادید ! (این یعنی همون cid که قبلا گفته شده براتون ! ) پس رای شما توی حساب رای به هیچ نامزدی نیست !
امیدوارم مطلب گرفته باشید ! :)
 
آخرین ویرایش:

Cyletech

Member
همونطور که دوستان دیگه گفتن. شما یه ستون دیگه به جدول کامنت هاتون اضافه کنید و آیدی مربوط به پست رو بهش بدید. بعد در جایی که میخواید نمایش داده بشه ، در کوئریتون محدود کنید که فقط آیدی های همون پست به صورت زیر برای مثال:
PHP:
mysql_query( "SELECT * FROM `comment_tab` WHERE `post_id` = '" . $post_id . "'" );
بهتره برای سوالاتی که مربوط به php میشه به این انجمن برید.
 

جدیدترین ارسال ها

بالا