درج مطلب در پایگاه داده

jalaladdin

Active Member
برای در ج مطلب در پایگاه داده بدین صورت کد را نوشتم اما پس از ارسال مطلب با هر بار refresh صفحه همان مطلب قبل در پایگاه ذخیره میشود برای جلوگیری از درج تکراری مطلب این کد را نوشتم
PHP:
<?php  
  $con = mysql_connect("localhost","root","");
  if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("admin", $con);
if(isset($_POST['ajax']))
        {
    
$editortext = mysql_real_escape_string($_POST['text1']);
$tit=mysql_real_escape_string($_POST['title']);
$sw=mysql_query("INSERT INTO message (text1,title) VALUES('$editortext','$tit') ");
  mysql_set_charset("utf8",$con);
   if($sw)
                    {
                
                    @header("Location: send.php?sw=true");
                    
                    }
        }
                mysql_close($con);
  ?>
PHP:
if($sw)
                    {
                
                    @header("Location: send.php?sw=true");
                    
                    }
اما پس از ارسال مطلب این لینک پرسشی در قسمت نوار آدرس نشان داده نمیشود یعنی دستور شرطی اجرا نمگردد مشکل از کجاست ؟
سپاس
 

Domanjiri

Well-Known Member
سلام

برای استفاده از تابع header باید uri رو بصورت کامل وارد کنید و نه بصورت ارتباطی! (relative عجب ترجمه ای!:green:)

پس به جای
PHP:
header("Location: send.php?sw=true");

از این
PHP:
header("Location: http://localhost/send.php?sw=true");
استفاده کنید.

موفق باشین
 

Masoud1365

مدیر انجمن
اطلاعات دوباره ثبت میشه چون متغیر $_POST مقدار داره !
شما بعد از این که دیتا رو ذخیره کردید یه سشن ست بکنید که دفه ی بعدی این کارو نکنه !
یا با همون تابع هدر به یه صفحه ای برید که رفرش شدنش باعث نشه که دیتا ذخیره بشه دوباره !
یا بعد از ذخیره تابع unset رو تست کنید ببینید متغیرتون ( $_POST ) ، آنست میشه !
 

Domanjiri

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

الان این کدی که گذاشتین، کدهای فایل send.php هست؟

خب الان از اون ریدایرکت شما چه استفاده ای کردین؟ حداقل یه شرط میذاشتین که اگه
PHP:
if(!isset($_GET['sw'])){
//inserting
}else {
//hichi
}
البته راه درست تر، همونطور که مسعود عزیز گفت، اینه که به یه آدرس دیگه ریدایرکت کنید یا...

موفق باشین
 

jalaladdin

Active Member
این کد send.phpمیباشد حالا میگید چه تغییراتی در این کد بدهم
PHP:
 <?php  
  $con = mysql_connect("localhost","root","");
  if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("admin", $con);
if(isset($_POST['ajax']))
        {
    
$editortext = mysql_real_escape_string($_POST['text1']);
$tit=mysql_real_escape_string($_POST['title']);
$sw=mysql_query("INSERT INTO message (text1,title) VALUES('$editortext','$tit') ");
  mysql_set_charset("utf8",$con);
    
   if($sw)
                    {
                
                    @header("Location: send.php?sw=true");
                    
                    
        }}
                mysql_close($con);
  ?>
  
                                                  <p>
 <form  id="signupForm" action="<?php $_SERVER['PHP_SELF']?>" method="post" name="posts" style="direction:rtl">
عنوان:<input type="text" name="title" id="man2" size="50" dir="rtl" class="bg-blue02"><p>
متن:<textarea name='text1'  rows='2'   id='text1' style='WIDTH:80px; HEIGHT:100%;'></textarea>
    <input type="hidden" name="ajax" value="0">

                                           <table border="0" style="border-collapse: collapse" width="523">
                                                    <tr>
                                                    <td valign="middle" colspan="2">
                                                    
                                                    <img border="0" src="images/categories.png" width="48" height="48"></td>
                                             </tr>
                                                    <tr>
                                                    <td valign="middle" colspan="2"><p align="center">
                                                    <div align="center" style="color:#990000"></div>
                                                    <div align="center">
                                                    <?php if ($_GET['sw'] == "true")
                                                    { 
                                                    ?>
                                                       <div align="center" >
                                                       <img src="images/CheckMark.gif" alt="" border="0" ><br>
                                                       <font color="#00A400">مطلب با موفقیت ارسال شد</font><br>
                                                    <?php
                                                    }
                                                    ?> 
<script type='text/javascript'>
        //<![CDATA[
            // Replace the <textarea id='editor1'> with an CKEditor instance
            var editor = CKEDITOR.replace( 'text1' );
        //]]>
        
        </script>
        <input type="submit" name="send" value="ارسال" />
       
       

 </form>
 

Domanjiri

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

دوست من، ما گفتیم شما چیکار کنید، انتظار ندارید که براتون کدش رو بنویسیم؟!

مثلن می تونید به جای ریدایرکت کردن به فایل send.php به index.php یا هر فایل دیگه ای ریدایرکت کنید و توی اون فایل چک کنید که اگه مقدار sw برابر true بود، یه پیغام چاپ کنه که، مثال: ".......موفقیت آمیز بود ..".

موفق باشین
 

jalaladdin

Active Member
در قسمت action=
PHP:
action="<?php $_SERVER['PHP_SELF']?>"
این را نوشتم کد ارسال مطلب و فرم در یک صفحه میباشد اصلا دستو شرطی اجرا نمیگردد
PHP:
if($sw)
                    {
                
                    @header("Location: send.php?sw=true");
                    
                    
        }
 

Domanjiri

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

شاید شرطی که گذاشتین اصلن برقرار نباشه، یعنی کوئری درست اجرا نشده باشه!

این کد رو تست کنید.
PHP:
if($sw)
                    {
                
                    @header("Location: send.php?sw=true");
                   
        } else {
die('Invalid query: ' . mysql_error());

}

در ضمن، موردی که در ارسال اولم گفتم رو رعایت کنید( اگه کدتون قراره جای دیگه ای هم اجرا بشه).

موفق باشین
 

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

بالا