PDA

View Full Version : سوال: چاپ متن با رفرش صفحه



ravand
یک شنبه 13 آذر 1390, 09:40 صبح
سلام
اگه قسمت پيوندها توي قسمت مديريت سايت بلاگ اسكاي رو ديده باشيد وقتي عنوان و لينك رو وارد ميكنيد و دكمه رو مي زنيد صفحه رفرش ميشه و مي بينيد لينك و عنواني كه وارد كرديد پايين صفحه چاپ شده.
من ميخواستم همين روش رو انجام بدم . هر كاري كردم نشد از php و جاوا اسكريپت هم استفاده كردم و صفحه رفرش ميشه ولي عنوان و لينكي كه وارد كردم براي بار اول كه وارد ميكنم چاپ نميشه ولي براي بار دوم چاپ ميشه.
كار هايي كه كردم
1) استفاده از كد جاوا اسكريپت :
http://www.mediacollege.com/internet/javascript/page/reload.html

2) استفاده از متغيير : $PHP_SELF در قسمت ACTION
3) قسمت html فرم رو داخل يه متغيير گذاشتم و با echo چاپ كردم.
4) آدرس خود همين صفحه رو در قسمت action وارد كردم.
و روش هاي ديگه كه يادم نيست براتون بگم.
اين هم كدهاي من:

<html>
<heaD>
<title>پيوندها </title>


<script type="text/javascript" language="javascript">

function formValidator()
{
var matn = document.getElementById('matn');
var link = document.getElementById('link');
if(notEmpty(matn, ".عنواني براي فيلد انتخاب نكرديد")){
if(notEmpty(link, ".آدرس را صحيح وارد نكرديد")){


return true;
}
}

return false;

}








function notEmpty(elem, helperMsg){
if(elem.value.length == 0){
alert(helperMsg);
elem.focus(); // set the focus to this input
return false;
}
return true;
}



</script>
</head>
<body>
<div align="center">




<form action="" method="post" onsubmit='return formValidator()'>

<input type="text" name="matn" id='matn'><br>
<input type="text" name="link" id='link'><br>
<input type="submit" value="ثبت" >






<br>

<?php









$servername="localhost";
$dbname="cms2";
$user="root";
$pass="";
$dblink=mysql_connect($servername,$user,$pass);
mysql_select_db($dbname,$dblink);
mysql_query("SET CHARACTER SET utf8",$dblink);
$dbresult=mysql_query("SELECT * FROM link",$dblink);

while($record=mysql_fetch_assoc($dbresult))
{
echo ($record['matn'].$record['link']);
echo "<br>";

}

mysql_close($dblink);



echo "<br>";



$handle=mysql_connect('localhost','root','');
if($handle==false){
die("can not connect mysql.\r\n");
}
$db=mysql_select_db('cms2');
if($db==false){
die("can not connect db.\r\n");
}

$matn= $_POST['matn'];
if($matn=="")
die();
$link= $_POST['link'];
if($link=="")
die();



mysql_query("SET CHARACTER SET utf8",$handle);
$query = "INSERT INTO link SET link = '$link',matn='$matn'";
$result=mysql_query($query,$handle);
if($result==false){
die("error with query\r\n");
}
$num=mysql_affected_rows($handle);
if($num==1){
echo ".ارسال شد";
}
else
if($num == 0){
echo".ارسال نشد ";
}
mysql_close($handle);
?>


</div>
</form>
</body>
</html>










من ميخوام همون بار اول كه مطالب رو ارسال ميكنم بعد از رفرش صفحه همون مطالب چاپ بشه.
متشكرم

J.Masomi
یک شنبه 13 آذر 1390, 19:21 عصر
با سلام
دوست عزیز اگر میخواهید اطلاعات بعد از درج در دیتا بیس چاپ بشود باید بعد از insert در دیتابیس مجدداً اطلاعات را Select کنید و کدهای php را هم در شروع صفحه بگذارید.

ravand
یک شنبه 13 آذر 1390, 20:34 عصر
با سلام
دوست عزیز اگر میخواهید اطلاعات بعد از درج در دیتا بیس چاپ بشود باید بعد از insert در دیتابیس مجدداً اطلاعات را Select کنید و کدهای php را هم در شروع صفحه بگذارید.


من اين روش رو انجام دادم ولي كار نكرد. شايد من منظور شما رو متوجه نشدم. حالا اگه شما اين روشي كه گفتي رو انجام دادي و كار كرده و اگه زحمتي نيست همون كارهايي كه گفتي رو انجام بده و كدهاش رو بنويس.
چون اين روش بايد در عمل خودش رو نشون بده .
متشكرم.

pejman_view
یک شنبه 13 آذر 1390, 23:57 عصر
سلام

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


<form action="" method="post" onsubmit='return formValidator()'> <input type="text" name="matn" id='matn'><input type="text" name="link" id='link'>
<input type="hidden" name="submitted" value="1" /> //in input ye parametre makhfi ba form mifereste
<input type="submit" value="ثبت" >
سپس کل دستورات php خودت رو داخل یک if می گذاری مانند کد زیر:


if (isset($_POST['submitted'])){
//farman haye mysql eto inja minevisi
}


ضمناً اشتباه که بدون استفاده از این روش همینطوری کوئری خود را در صفحه بگذارید run شود... و دلیلشم این است که می بینید در این خط :


$matn= $_POST['matn']; if($matn=="") die();

شما از die استفاده کردید که هیچ موقع لازم نیست از die استفاده کنی.

با آرزوی موفقیت

J.Masomi
دوشنبه 14 آذر 1390, 10:19 صبح
سلام
خیلی ماکارونی بود ولی اینم از کد :

<?php
$servername="localhost";
$dbname="cms2";
$user="root";
$pass="";
$dblink=mysql_connect($servername,$user,$pass);
mysql_select_db($dbname,$dblink);

$handle=mysql_connect('localhost','root','');
if($handle==false){
die("can not connect mysql.\r\n");
}
$db=mysql_select_db('cms2');
if($db==false){
die("can not connect db.\r\n");
}

$matn= $_POST['matn'];
if($matn=="")
die();
$link= $_POST['link'];
if($link=="")
die();
mysql_query("SET CHARACTER SET utf8",$handle);
$query = "INSERT INTO link SET link = '$link',matn='$matn'";
$result=mysql_query($query,$handle);
if($result==false){
die("error with query\r\n");
}
$num=mysql_affected_rows($handle);
if($num==1){
echo ".ارسال شد";
}
else
if($num == 0){
echo".ارسال نشد ";
}
?>
<html>
<head>
<title>پيوندها </title>


<script type="text/javascript" language="javascript">

function formValidator()
{
var matn = document.getElementById('matn');
var link = document.getElementById('link');
if(notEmpty(matn, ".عنواني براي فيلد انتخاب نكرديد")){
if(notEmpty(link, ".آدرس را صحيح وارد نكرديد")){
return true;
}
}
return false;
}

function notEmpty(elem, helperMsg){
if(elem.value.length == 0){
alert(helperMsg);
elem.focus(); // set the focus to this input
return false;
}
return true;
}



</script>
</head>
<body>
<div align="center">
<form action="" method="post" onsubmit='return formValidator()'>
<input type="text" name="matn" id='matn'/>
<input type="text" name="link" id='link'/>
<input type="submit" value="ثبت" />
</form>
</div>
<div id="Links">
<ul>
<?php
mysql_query("SET CHARACTER SET utf8",$dblink);
$dbresult=mysql_query("SELECT * FROM link",$dblink);

while($record=mysql_fetch_assoc($dbresult))
{
echo '<li><a href="'.$record['link'].'">'.$record['matn'].'</a></li>';
}
mysql_close($dblink);
?>

</ul>
</div>
</body>
</html>

ravand
دوشنبه 14 آذر 1390, 10:29 صبح
سلام
خیلی ماکارونی بود ولی اینم از کد :

<?php
$servername="localhost";
$dbname="cms2";
$user="root";
$pass="";
$dblink=mysql_connect($servername,$user,$pass);
mysql_select_db($dbname,$dblink);

$handle=mysql_connect('localhost','root','');
if($handle==false){
die("can not connect mysql.\r\n");
}
$db=mysql_select_db('cms2');
if($db==false){
die("can not connect db.\r\n");
}

$matn= $_POST['matn'];
if($matn=="")
die();
$link= $_POST['link'];
if($link=="")
die();
mysql_query("SET CHARACTER SET utf8",$handle);
$query = "INSERT INTO link SET link = '$link',matn='$matn'";
$result=mysql_query($query,$handle);
if($result==false){
die("error with query\r\n");
}
$num=mysql_affected_rows($handle);
if($num==1){
echo ".ارسال شد";
}
else
if($num == 0){
echo".ارسال نشد ";
}
?>
<html>
<head>
<title>پيوندها </title>


<script type="text/javascript" language="javascript">

function formValidator()
{
var matn = document.getElementById('matn');
var link = document.getElementById('link');
if(notEmpty(matn, ".عنواني براي فيلد انتخاب نكرديد")){
if(notEmpty(link, ".آدرس را صحيح وارد نكرديد")){
return true;
}
}
return false;
}

function notEmpty(elem, helperMsg){
if(elem.value.length == 0){
alert(helperMsg);
elem.focus(); // set the focus to this input
return false;
}
return true;
}



</script>
</head>
<body>
<div align="center">
<form action="" method="post" onsubmit='return formValidator()'>
<input type="text" name="matn" id='matn'/>
<input type="text" name="link" id='link'/>
<input type="submit" value="ثبت" />
</form>
</div>
<div id="Links">
<ul>
<?php
mysql_query("SET CHARACTER SET utf8",$dblink);
$dbresult=mysql_query("SELECT * FROM link",$dblink);

while($record=mysql_fetch_assoc($dbresult))
{
echo '<li><a href="'.$record['link'].'">'.$record['matn'].'</a></li>';
}
mysql_close($dblink);
?>

</ul>
</div>
</body>
</html>

اين چه روش عجيب غريبي بود :لبخند:
كدهاي php كه اول نوشتي ببين دو بار به mysql وصل شدي :لبخند:
اصلا هيچي توي صفحه چاپ نميشه!

ravand
دوشنبه 14 آذر 1390, 11:06 صبح
سلام

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


<form action="" method="post" onsubmit='return formValidator()'> <input type="text" name="matn" id='matn'><input type="text" name="link" id='link'>
<input type="hidden" name="submitted" value="1" /> //in input ye parametre makhfi ba form mifereste
<input type="submit" value="ثبت" >
سپس کل دستورات php خودت رو داخل یک if می گذاری مانند کد زیر:


if (isset($_POST['submitted'])){
//farman haye mysql eto inja minevisi
}


ضمناً اشتباه که بدون استفاده از این روش همینطوری کوئری خود را در صفحه بگذارید run شود... و دلیلشم این است که می بینید در این خط :


$matn= $_POST['matn']; if($matn=="") die();

شما از die استفاده کردید که هیچ موقع لازم نیست از die استفاده کنی.

با آرزوی موفقیت


اين كاري رو كه شما گفتي كردم ولي جواب نميده.
مشكل اينجا هست كه اگه كارم بكنه كه نبايد مطالب ارسالي بالاي فرم چاپ بشه كه هر چي زياد بشه فرم بره پايين تر. من ميخوام مطالب ارسالي بره زير فرم نه بالا فرم.
همونطوري كه شما خواسته بوديد من نوشتم اينم كدها ولي كار نميكنه. براي همينه كه ميگم بايد كدها خودش رو در عمل نشون بده:

<?php
if (isset($_POST['submitted'])){
$servername="localhost";
$dbname="cms2";
$user="root";
$pass="";
$dblink=mysql_connect($servername,$user,$pass);
mysql_select_db($dbname,$dblink);
mysql_query("SET CHARACTER SET utf8",$dblink);
$dbresult=mysql_query("SELECT * FROM link",$dblink);

while($record=mysql_fetch_assoc($dbresult))
{
echo ('<a href="deletelink.php?id='.$record['id'].'"> '.'<img src="hazf.gif" border="0">'.'</a>');
echo ('<a href="editlink.php?action=edit&id='.$record['id'].'"> '.'<img src="edit.gif" border="0">'.'</a>');
echo ('<a href="idlink.php?id='.$record['id'].'"> '.$record['link'].'</a>');
echo "<br>";

}

mysql_close($dblink);
}
?>
<html>
<heaD>
<title>پيوندها </title>


<script type="text/javascript" language="javascript">

function formValidator()
{
var matn = document.getElementById('matn');
var link = document.getElementById('link');
if(notEmpty(matn, ".عنواني براي فيلد انتخاب نكرديد")){
if(notEmpty(link, ".آدرس را صحيح وارد نكرديد")){


return true;
}
}

return false;

}


function notEmpty(elem, helperMsg){
if(elem.value.length == 0){
alert(helperMsg);
elem.focus(); // set the focus to this input
return false;
}
return true;
}



</script>
</head>
<body>
<div align="center">
<form action="" method="post" onsubmit='return formValidator()'>

<input type="text" name="matn" id='matn'><br>
<input type="text" name="link" id='link'><br>
<input type="hidden" name="submitted" value="1" >
<input type="submit" value="ثبت" >


</form>

<?php
$handle=mysql_connect('localhost','root','');
if($handle==false){
die("can not connect mysql.\r\n");
}
$db=mysql_select_db('cms2');
if($db==false){
die("can not connect db.\r\n");
}

$matn= $_POST['matn'];
if($matn=="")
die();
$link= $_POST['link'];
if($link=="")
die();



mysql_query("SET CHARACTER SET utf8",$handle);
$query = "INSERT INTO link SET link = '$link',matn='$matn'";
$result=mysql_query($query,$handle);
if($result==false){
die("error with query\r\n");
}
$num=mysql_affected_rows($handle);
if($num==1){
echo ".ارسال شد";
}
else
if($num == 0){
echo".ارسال نشد ";
}
mysql_close($handle);

?>
</div>

</body>
</html>

pejman_view
دوشنبه 14 آذر 1390, 13:59 عصر
سلام

قرار نیست که شما بالای صفحه پیام خود را نمایش دهید شما 2 راه دارید:
1- کد را به جایی از صفحه که می خواهید نمایش دهد بیارید، فرضاً بین دو تگ <div> یا <p> بریزید.
2- مواردی را که می خواهید در متغیر یا آرایه ریخته و آن متغیر یا آرایه را در همه جای صفحه که خواستید نمایش دهید.

ravand
دوشنبه 14 آذر 1390, 14:06 عصر
سلام

قرار نیست که شما بالای صفحه پیام خود را نمایش دهید شما 2 راه دارید:
1- کد را به جایی از صفحه که می خواهید نمایش دهد بیارید، فرضاً بین دو تگ <div> یا <p> بریزید.
2- مواردی را که می خواهید در متغیر یا آرایه ریخته و آن متغیر یا آرایه را در همه جای صفحه که خواستید نمایش دهید.

حالا من كاري به اين ندارم كه اول نمايش بده يا اخر . اين روشي كه شما گفتيد كار نميكنه!
شما خودت امتحانش كن منظور منو مي فهمي.

ravand
دوشنبه 14 آذر 1390, 17:10 عصر
من بايد كدي بنويسم كه وقتي صفحه لود ميشه (در واقع وقتي وارد همين صفحه اي كه همه ي اين كدها توش هست ميشم) اول اينكه مطالب چاپ بشه بعد هم اگه مطالبي رو ارسال كردم همون موقع كدهاي چاپ مطلب اجرا بشه و دوباره مطالب چاپ بشه. كدي كه شما دادي يعني كد زير :

if (isset($_POST['submitted'])){
}
اگه من كد چاپ مطالب رو داخل كد بالا بذارم وقتي صفحه لود ميشه ديده نميشه. ولي وقتي مطالبي رو ارسال كردم ديده ميشه.

ravand
دوشنبه 14 آذر 1390, 17:14 عصر
كدها رو ميذارم تا شما بهتر متوجه منظور من بشيد:


<html>
<heaD>
<title>پيوندها </title>


<script type="text/javascript" language="javascript">

function formValidator()
{
var matn = document.getElementById('matn');
var link = document.getElementById('link');
if(notEmpty(matn, ".عنواني براي فيلد انتخاب نكرديد")){
if(notEmpty(link, ".آدرس را صحيح وارد نكرديد")){


return true;
}
}

return false;

}

function notEmpty(elem, helperMsg){
if(elem.value.length == 0){
alert(helperMsg);
elem.focus(); // set the focus to this input
return false;
}
return true;
}
</script>
</head>
<body>
<div align="center">
<form action="" method="post" onsubmit='return formValidator()'>

<input type="text" name="matn" id='matn'><br>
<input type="text" name="link" id='link'><br>
<input type="hidden" name="submitted" value="1" >
<input type="submit" value="ثبت" >
</form>
<?php
//كدهاي پايين براي چاپ مطلب است
if (isset($_POST['submitted'])){
$servername="localhost";
$dbname="cms2";
$user="root";
$pass="";
$dblink=mysql_connect($servername,$user,$pass);
mysql_select_db($dbname,$dblink);
mysql_query("SET CHARACTER SET utf8",$dblink);
$dbresult=mysql_query("SELECT * FROM link",$dblink);

while($record=mysql_fetch_assoc($dbresult))
{
echo ('<a href="deletelink.php?id='.$record['id'].'"> '.'<img src="hazf.gif" border="0">'.'</a>');
echo ('<a href="editlink.php?action=edit&id='.$record['id'].'"> '.'<img src="edit.gif" border="0">'.'</a>');
echo ('<a href="idlink.php?id='.$record['id'].'"> '.$record['link'].'</a>');
echo "<br>";

}
mysql_close($dblink);
}


//كدهاي پايين براي ارسال مطلب به ديتابيس است
$handle=mysql_connect('localhost','root','');
if($handle==false){
die("can not connect mysql.\r\n");
}
$db=mysql_select_db('cms2');
if($db==false){
die("can not connect db.\r\n");
}

$matn= $_POST['matn'];
if($matn=="")
die();
$link= $_POST['link'];
if($link=="")
die();



mysql_query("SET CHARACTER SET utf8",$handle);
$query = "INSERT INTO link SET link = '$link',matn='$matn'";
$result=mysql_query($query,$handle);
if($result==false){
die("error with query\r\n");
}
$num=mysql_affected_rows($handle);
if($num==1){
echo ".ارسال شد";
}
else
if($num == 0){
echo".ارسال نشد ";
}
mysql_close($handle);

?>
<br>

</div>

</body>
</html>

MMSHFE
دوشنبه 14 آذر 1390, 17:51 عصر
با سلام، اینطور که من فهمیدم، شما میخواین یک مطلب رو که از ورودی دریافت میکنید، توی دیتابیس ثبت کنید و توی همون صفحه که ثبت میشه، نمایش هم داده بشه، بدون اینکه برای خوندن دوباره اطلاعات، نیاز باشه صفحه رو Refresh کنید. برای این کار باید قبل از اینکه عمل استخراج از دیتابیس رو انجام بدین، اطلاعات رو ثبت کنید. به مثال زیر دقت کنید (اینقدر کدهای PHP رو سایت برنامه نویس بد نشون میده که مجبور شدم توی کد HTML بنویسم. شما به بزرگی خودتون ببخشید) :


<!doctype html>
<html dir="rtl">
<head>
<title>Save and Display DEMO</title>
<meta charset="utf-8"/>
</head>
<body>
<form action="" method="post">
<label for="matn">متن</label><br/>
<input id="matn" name="matn" type="text"/><br/>
<label for="link">لينک</label><br/>
<input id="link" type="text" name="link"><br/>
<input name="submitted" type="submit" value="ثبت"/>
</form>
<?php
if(isset($_POST['submitted'])) {
$vars = array('matn', 'link');
$flag = true;
foreach($vars as $var) {
if(!isset($_POST[$var]) || $_POST[$var] == '') {
$flag = false;
}
}
if($flag) {
mysql_connect('localhost', 'root', '') or die('خطا در اتصال');
mysql_select_db('cms2') or die('ديتابيس وجود ندارد');
mysql_query('SET NAMES \'utf8\'');
mysql_query("INSERT INTO `link` (`link`,`matn`) VALUES ('{$_POST['link']}','{$_POST['matn']}')");
echo 'ارسال'.(mysql_affected_rows() > 0 ? 'شد' : 'نشد').'<br/>'."\n";
}
}
$result = mysql_query('SELECT * FROM `link` ORDER BY `id`');
if($result && mysql_num_rows($result) > 0) {
while($row = mysql_fetch_assoc($result)) {
echo '<a href="deletelink.php?id='.$row['id'].'"><img src="hazf.gif" border="0"></a>';
echo '<a href="editlink.php?action=edit&id='.$row['id'].'"><img src="edit.gif" border="0"></a>';
echo '<a href="idlink.php?id='.$row['id'].'">'.$row['link'].'</a>';
echo '<br/>'."\n";
}
}
else {
echo 'اطلاعات موجود نيست.<br/>'."\n";
}
?>
</body>
</html>

موفق باشید.

pejman_view
دوشنبه 14 آذر 1390, 17:57 عصر
سلام

کاربر گرامی Ravand ، یکم کدها را برای خودتان پیچوندید از کاربر گرامی MMSHFE تشکر می کنم، اما من با اجازه ایشان کدهای خود این کاربر را بازسازی کردم که بیشتر متوجه بشود باید چیکار کند:
من هم از HTML استفاده کردم. فقط مواظب باشید من یکم تو اسم ها و فیلدها تغییرات دادم که کد برای خودم هم قابل اجرا باشد شما بایستی نام دیتابیس ، و .. رو دوباره اصلاح کنید:



<?php
if (isset($_POST['submitted'])){
$servername="localhost";
$dbname="cms2";
$user="root";
$pass="";
$dblink=mysql_connect('localhost','root','');
mysql_select_db('test',$dblink);
mysql_query("SET CHARACTER SET utf8",$dblink);
$dbresult=mysql_query("SELECT * FROM link",$dblink);

while($record=mysql_fetch_assoc($dbresult))
{
echo ('<a href="deletelink.php?id='.$record['id'].'"> '.'<img src="hazf.gif" border="0">'.'</a>');
echo ('<a href="editlink.php?action=edit&id='.$record['id'].'"> '.'<img src="edit.gif" border="0">'.'</a>');
echo ('<a href="idlink.php?id='.$record['id'].'"> '.$record['link'].'</a>');
echo "";

}

mysql_close($dblink);
}
?>
<html>
<head>
<title>پيوندها</title>

<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script type="text/javascript" language="javascript">

function formValidator()
{
var matn = document.getElementById('matn');
var link = document.getElementById('link');
if(notEmpty(matn, "..عنواني براي فيلد انتخاب نكرديد")){
if(notEmpty(link, "..آدرس را صحيح وارد نكرديد")){


return true;
}
}

return false;

}


function notEmpty(elem, helperMsg){
if(elem.value.length == 0){
alert(helperMsg);
elem.focus(); // set the focus to this input
return false;
}
return true;
}



</script>
</head>
<body>
<div align="center">
<form action="" method="post" onsubmit='return formValidator()'>

<input type="text" name="matn" id='matn'>
<input type="text" name="link" id='link'>
<input type="hidden" name="submitted" value="1" >
<input type="submit" value="ثبت" >


</form>

<?php
$handle=mysql_connect('localhost','root','');
if($handle==false){
die("can not connect mysql.\r\n");
}
$db=mysql_select_db('test');
if($db==false){
die("can not connect db.\r\n");
}
if(isset($_POST['submitted'])){
if(isset($_POST['matn']) && isset($_POST['link'])){
$link = $_POST['link'];
$matn = $_POST['matn'];
mysql_query("SET CHARACTER SET utf8",$handle);
$query = "INSERT INTO link SET link = '$link',title='$matn'";
$result=mysql_query($query,$handle);
if($result){
$num=mysql_affected_rows($handle);
if($num==1){
echo ".ارسال شد";
}else{
echo"ارسال نشد. ";
}
}else{
echo 'خطا در اجرای کوئری دیتابیس.';
}


}else{
echo 'فیلدها را کامل پر نکردید.';
}
}
mysql_close($handle);
?>
</div>

</body>
</html>


با آرزوی موفقیت

MMSHFE
دوشنبه 14 آذر 1390, 18:50 عصر
ضمن تشکر از شما، دو مشکل کوچک توی کدی که گذاشتین هست و اون اینکه نمایش اطلاعات به قبل از فرم منتقل شده که گفتن اینطور نمیخوان باشه و مورد بعدی اینکه چون نمایش اطلاعات و استخراج اونها رو قبل از کد درج رکورد جدید گذاشتین، باز هم باید برای مشاهده آخرین رکورد ثبت شده، صفحه رو دوباره Refresh کنند. لطفاً به این دو مورد دقت و کدتون رو براساس اونها اصلاح کنید.
موفق باشید.

pejman_view
دوشنبه 14 آذر 1390, 19:34 عصر
سلام
بله حرف شما صحیح است منظورشون رو درست متوجه نشدم الان کد رو اصلاح کردم. البته کدش اصولی نیست و خیلی قاطی نوشته شده اما من بر این اعتقادم اول کد کاربر رو اصلاح کنیم بفهمه کدش چه مشکلاتی داشته سپس کم کم راه افتاد اصولی ترین راه را به ایشان پیشنهاد کنیم (البته نظر شخصی بنده است!).


<?php
$dblink=mysql_connect('localhost','root','');
if(!$dblink){
die("can not connect mysql.\r\n");
}
$db=mysql_select_db('test');
if($db==false){
die("can not connect db.\r\n");
}
if(isset($_POST['submitted'])){
if(isset($_POST['matn']) && isset($_POST['link'])){
$link = $_POST['link'];
$matn = $_POST['matn'];
mysql_query("SET CHARACTER SET utf8",$dblink);
$query = "INSERT INTO link SET link = '$link',title='$matn'";

$result=mysql_query($query,$dblink);
if($result){
$num=mysql_affected_rows($dblink);
if($num==1){
$dbresult=mysql_query("SELECT * FROM link",$dblink);
while($record=mysql_fetch_assoc($dbresult))
{
echo ('<a href="deletelink.php?id='.$record['id'].'"> '.'<img src="hazf.gif" border="0">'.'</a>');
echo ('<a href="editlink.php?action=edit&id='.$record['id'].'"><img src="edit.gif" border="0"></a>');
echo ('<a href="idlink.php?id='.$record['id'].'"> '.$record['link'].'</a><br />');
echo "";
}
$message= "ارسال شد.";
}else{
$message= "ارسال نشد. ";
}
}else{
$message= 'خطا در اجرای کوئری دیتابیس.';
}


}else{
$message= 'فیلدها را کامل پر نکردید.';
}
}

mysql_close($dblink);
?>
<html>
<head>
<title>پيوندها</title>

<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script type="text/javascript" language="javascript">

function formValidator()
{
var matn = document.getElementById('matn');
var link = document.getElementById('link');
if(notEmpty(matn, "..عنواني براي فيلد انتخاب نكرديد")){
if(notEmpty(link, "..آدرس را صحيح وارد نكرديد")){


return true;
}
}

return false;

}


function notEmpty(elem, helperMsg){
if(elem.value.length == 0){
alert(helperMsg);
elem.focus(); // set the focus to this input
return false;
}
return true;
}



</script>
</head>
<body>
<div align="center">
<form action="" method="post" onsubmit='return formValidator()'>

<input type="text" name="matn" id='matn'>
<input type="text" name="link" id='link'>
<input type="hidden" name="submitted" value="1" >
<input type="submit" value="ثبت" >


</form>

<?php
echo isset($message)? $message:NULL;
?>
</div>

</body>
</html>

pejman_view
دوشنبه 14 آذر 1390, 19:43 عصر
سلام

این هم یک نسخه اصلاح شده دیگه از کد :


<?php
$dblink=mysql_connect('localhost','root','');
if(!$dblink){
die("can not connect mysql.\r\n");
}
$db=mysql_select_db('test');
if($db==false){
die("can not connect db.\r\n");
}
if(isset($_POST['submitted'])){
if(isset($_POST['matn']) && isset($_POST['link'])){
$link = $_POST['link'];
$matn = $_POST['matn'];
mysql_query("SET CHARACTER SET utf8",$dblink);
$query = "INSERT INTO link SET link = '$link',title='$matn'";

$result=mysql_query($query,$dblink);
if($result){
$num=mysql_affected_rows($dblink);
if($num==1){
$dbresult=mysql_query("SELECT * FROM link",$dblink);
$row = array();
while($record=mysql_fetch_assoc($dbresult))
{
$row[] = '<a href="deletelink.php?id='.$record['id'].'"><img src="hazf.gif" border="0"></a><a href="editlink.php?action=edit&id='.$record['id'].'"><img src="edit.gif" border="0"></a><a href="idlink.php?id='.$record['id'].'"> '.$record['link'].'</a><br />';
}
$message= "ارسال شد.";
}else{
$message= "ارسال نشد. ";
}
}else{
$message= 'خطا در اجرای کوئری دیتابیس.';
}


}else{
$message= 'فیلدها را کامل پر نکردید.';
}
}

mysql_close($dblink);
?>
<html>
<head>
<title>پيوندها</title>

<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script type="text/javascript" language="javascript">

function formValidator()
{
var matn = document.getElementById('matn');
var link = document.getElementById('link');
if(notEmpty(matn, "..عنواني براي فيلد انتخاب نكرديد")){
if(notEmpty(link, "..آدرس را صحيح وارد نكرديد")){


return true;
}
}

return false;

}


function notEmpty(elem, helperMsg){
if(elem.value.length == 0){
alert(helperMsg);
elem.focus(); // set the focus to this input
return false;
}
return true;
}



</script>
</head>
<body>
<div align="center">
<form action="" method="post" onsubmit='return formValidator()'>

<input type="text" name="matn" id='matn'>
<input type="text" name="link" id='link'>
<input type="hidden" name="submitted" value="1" >
<input type="submit" value="ثبت" >


</form>

<?php
echo isset($message)? $message:NULL;
echo "<br />";
if (isset($row)){
foreach($row as $r){
echo $r;
}
}
?>
</div>

</body>
</html>

ravand
دوشنبه 14 آذر 1390, 19:49 عصر
ببخشيد آقاي شهركي.
كد شما هم برام كار نكرد. يعني وقتي وارد صفحه ميشم مطالبي كه از قبل ريخته بودم رو چاپ نميكنه و مي نويسه " اطلاعات موجود نيست ". در صورتي كه وقتي ميرم توي ديتابيسم اطلاعاتي هست كه قبلا ارسال كردم. كد اين دوستمون هم آقاي pejman_view هم مشكل داره.

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

pejman_view
دوشنبه 14 آذر 1390, 20:05 عصر
سلام

البته این کار رو معمولاً با ای جکس انجام می دهند که حتی نیاز به رفرش صفحه نیست اما اگر می خواهید رفرش کنید باز هم سخت ضمناً یادتان نرود که من یکم کدها رو دستکاری کردم یعنی باید نام دیتابیس و فیلدها رو از نوع بنویسید:


<?php
$dblink=mysql_connect('localhost','root','');
if(!$dblink){
die("can not connect mysql.\r\n");
}
$db=mysql_select_db('test');
if($db==false){
die("can not connect db.\r\n");
}
if(isset($_POST['submitted'])){
if(isset($_POST['matn']) && isset($_POST['link'])){
$link = $_POST['link'];
$matn = $_POST['matn'];
mysql_query("SET CHARACTER SET utf8",$dblink);
$query = "INSERT INTO link SET link = '$link',title='$matn'";

$result=mysql_query($query,$dblink);
if($result){
$num=mysql_affected_rows($dblink);
if($num==1){
$message= "ارسال شد.";
}else{
$message= "ارسال نشد. ";
}
}else{
$message= 'خطا در اجرای کوئری دیتابیس.';
}


}else{
$message= 'فیلدها را کامل پر نکردید.';
}
}
$dbresult=mysql_query("SELECT * FROM link",$dblink);
$row = array();
while($record=mysql_fetch_assoc($dbresult))
{
$row[] = '<a href="deletelink.php?id='.$record['id'].'"><img src="hazf.gif" border="0"></a><a href="editlink.php?action=edit&id='.$record['id'].'"><img src="edit.gif" border="0"></a><a href="idlink.php?id='.$record['id'].'"> '.$record['link'].'</a><br />';
}

mysql_close($dblink);
?>
<html>
<head>
<title>پيوندها</title>

<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script type="text/javascript" language="javascript">

function formValidator()
{
var matn = document.getElementById('matn');
var link = document.getElementById('link');
if(notEmpty(matn, "..عنواني براي فيلد انتخاب نكرديد")){
if(notEmpty(link, "..آدرس را صحيح وارد نكرديد")){


return true;
}
}

return false;

}


function notEmpty(elem, helperMsg){
if(elem.value.length == 0){
alert(helperMsg);
elem.focus(); // set the focus to this input
return false;
}
return true;
}



</script>
</head>
<body>
<div align="center">
<form action="" method="post" onsubmit='return formValidator()'>

<input type="text" name="matn" id='matn'>
<input type="text" name="link" id='link'>
<input type="hidden" name="submitted" value="1" >
<input type="submit" value="ثبت" >


</form>

<?php
echo isset($message)? $message:NULL;
echo "<br />";
if (isset($row)){
foreach($row as $r){
echo $r;
}
}
?>
</div>

</body>
</html>

ravand
دوشنبه 14 آذر 1390, 20:16 عصر
ببخشيد ولي كدهايي كه شما نوشتيد ايراد داره در اين خط :

while($record=mysql_fetch_assoc($dbresult))
حطايي كه به من داد:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in F:\wamp\wamp\www\cms\nicEdit\link.php on line 36
و پيام :خطا در اجرای کوئری دیتابیس.

اين $row[] رو هم هر چي بهش دادم قبول نكرد. و نميدونم براي چي خالي گذاشتيد.
ببينيد نيازي نيست حتما صفحه رفرش بشه. چون من خودم صفحه رو با روشي چون جاوا اسكريپت و php رفرش كردم ولي بازم فايلده اي نداشت.
بايد كدي نوشت كه اول وقتي وارد صفحه ميشيم مطالب ثبت شده در ديتابيس چاپ بشه و وقتي هم مطلبي ارسال ميكنيم دوباره به كدهاي چاپ مطالب دستور چاپ مطلب داده بشه.

MMSHFE
دوشنبه 14 آذر 1390, 20:22 عصر
این کد رو امتحان کنید:


<!doctype html>
<html dir="rtl">
<head>
<title>Save and Display DEMO</title>
<meta charset="utf-8"/>
</head>
<body>
<form action="" method="post">
<label for="matn">متن</label><br/>
<input id="matn" name="matn" type="text"/><br/>
<label for="link">لينک</label><br/>
<input id="link" type="text" name="link"><br/>
<input name="submitted" type="submit" value="ثبت"/>
</form>
<?php
mysql_connect('localhost', 'root', '') or die('خطا در اتصال');
mysql_select_db('cms2') or die('ديتابيس وجود ندارد');
mysql_query('SET NAMES \'utf8\'');
if(isset($_POST['submitted'])) {
$vars = array('matn', 'link');
$flag = true;
foreach($vars as $var) {
if(!isset($_POST[$var]) || $_POST[$var] == '') {
$flag = false;
}
}
if($flag) {
mysql_query("INSERT INTO `link` (`link`,`matn`) VALUES ('{$_POST['link']}','{$_POST['matn']}')");
echo 'ارسال'.(mysql_affected_rows() > 0 ? 'شد' : 'نشد').'<br/>'."\n";
}
}
$result = mysql_query('SELECT * FROM `link` ORDER BY `id`');
if($result && mysql_num_rows($result) > 0) {
while($row = mysql_fetch_assoc($result)) {
echo '<a href="deletelink.php?id='.$row['id'].'"><img src="hazf.gif" border="0"></a>';
echo '<a href="editlink.php?action=edit&id='.$row['id'].'"><img src="edit.gif" border="0"></a>';
echo '<a href="idlink.php?id='.$row['id'].'">'.$row['link'].'</a>';
echo '<br/>'."\n";
}
}
else {
echo 'اطلاعات موجود نيست.<br/>'."\n";
}
?>
</body>
</html>

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

pejman_view
سه شنبه 15 آذر 1390, 01:38 صبح
ببخشيد ولي كدهايي كه شما نوشتيد ايراد داره در اين خط :

while($record=mysql_fetch_assoc($dbresult))
حطايي كه به من داد:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in F:\wamp\wamp\www\cms\nicEdit\link.php on line 36
و پيام :خطا در اجرای کوئری دیتابیس.

اين $row[] رو هم هر چي بهش دادم قبول نكرد. و نميدونم براي چي خالي گذاشتيد.
ببينيد نيازي نيست حتما صفحه رفرش بشه. چون من خودم صفحه رو با روشي چون جاوا اسكريپت و php رفرش كردم ولي بازم فايلده اي نداشت.
بايد كدي نوشت كه اول وقتي وارد صفحه ميشيم مطالب ثبت شده در ديتابيس چاپ بشه و وقتي هم مطلبي ارسال ميكنيم دوباره به كدهاي چاپ مطالب دستور چاپ مطلب داده بشه.
سلام

من کد رو قبل از نوشتن اجرا و تست کرده بودم همانطور گفتم باید به نام فیلدها و نام دیتابیس دقت کنید چون من دقیقاً از آن نام استفاده نکردم، و اصلاً نیازی به رفرش نیست.

J.Masomi
چهارشنبه 16 آذر 1390, 02:36 صبح
اين چه روش عجيب غريبي بود :لبخند:
كدهاي php كه اول نوشتي ببين دو بار به mysql وصل شدي :لبخند:
اصلا هيچي توي صفحه چاپ نميشه!
دوست عزیز نمیدونم این تاپیک را ایجاد کردی تا تعداد .... بالا ببری ویا هدف دیگری داری.
من تنهای کد خود شما را ادیت کردم.
در مورد دوبار وصل شدن به دیتابیس هم یادم رفته بود پاک کنم. ولی اگر شما کمی کدنویسی بلد باشی(؟!) با داشتن راه حل اینقدر تاپیک را ادامه نمی دادید و براحتی میتوانی کد مناسب را بنویسی. اینکه بخوای یک چیز را در دیتابیس ذخیره کنی و بعد هم بگیری و چاپش کنی که این همه سوال و جواب نداره؟؟؟؟؟
کافیه که INSERT قبل از SELECT باشه.
لطفاً برای این مطلب reply ندهید.
با تشکر

djsaeedkhan
پنج شنبه 17 آذر 1390, 12:15 عصر
فکر می کنم می خواید وقتی یه فرم رو ارسال کردید و درج شد، مقدار فرم ارسال شده بازم در فرم قرار بگیره؟؟
اگر اینکارو میخاید بکنید خیلی راحته که


<form method=post>
<input type=text name=user value="<?php if(isset($user)) echo $user;?>">
</form>

ravand
پنج شنبه 17 آذر 1390, 20:34 عصر
خيلي متشكر داداش
اين مشكلم حل شد حالا يه مشكل ديگه برام پيش امده اينكه وقتي يه مطلبي رو ارسال ميكنم و بعد صفحه رو رفرش ميكنم بازم همون مطلب ارسال ميشه . راهي هست كه بعد از رفرش صفحه ديگه مطلب ارسال نشه و حتما براي ارسال مطلب طرف مجبور شه دكمه ي ارسال رو كليك كنه؟
متشكرم

djsaeedkhan
پنج شنبه 17 آذر 1390, 23:56 عصر
خيلي متشكر داداش
اين مشكلم حل شد حالا يه مشكل ديگه برام پيش امده اينكه وقتي يه مطلبي رو ارسال ميكنم و بعد صفحه رو رفرش ميكنم بازم همون مطلب ارسال ميشه . راهي هست كه بعد از رفرش صفحه ديگه مطلب ارسال نشه و حتما براي ارسال مطلب طرف مجبور شه دكمه ي ارسال رو كليك كنه؟
متشكرم


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


<form action=?do=save method=post>
<input type=text name=user value="<?php if(isset($_POST["user")) echo $_POST["user"];?>">
</form>

<?php
if(isset($__POST["user"]))
{
Save iN Database
header("location: login.php");
}


روش دوم



<form action=?do=save method=post>
<input type=text name=user value="<?php if(isset($_GET["myuser")) echo base64_decode($_GET["user"]);?>">
</form>

<?php
if(isset($__POST["user"]))
{
Save iN Database
$user=base64_encode($_POST["user"]);
header("location: login.php?myuser=$user");
}

ashkanksh
جمعه 18 آذر 1390, 08:55 صبح
سلام!
چ تاپیکی:دی
بعد از اینکه داخل دیتا بیس سیو کردی اطلاعات رو میتونی صفجه رو موقع رفرش شدن پاس بدی به خودش با ی پارامتر پست و اول کد های دیتا بیست ی شرط دیگه هم بذاری که اگر این ست شده بود نرو داخل کد های دیتا بیس.

البته این مال زمانیه که نخوای با ajax بنویسیش!

موفق باشید

MMSHFE
جمعه 18 آذر 1390, 10:01 صبح
خيلي متشكر داداش
اين مشكلم حل شد حالا يه مشكل ديگه برام پيش امده اينكه وقتي يه مطلبي رو ارسال ميكنم و بعد صفحه رو رفرش ميكنم بازم همون مطلب ارسال ميشه . راهي هست كه بعد از رفرش صفحه ديگه مطلب ارسال نشه و حتما براي ارسال مطلب طرف مجبور شه دكمه ي ارسال رو كليك كنه؟
متشكرم
با سلام، این کد رو آزمایش کنید:


<!doctype html>
<html dir="rtl">
<head>
<title>Save and Display DEMO</title>
<meta charset="utf-8"/>
</head>
<body>
<form action="" method="post">
<label for="matn">متن</label><br/>
<input id="matn" name="matn" type="text"/><br/>
<label for="link">لينک</label><br/>
<input id="link" type="text" name="link"><br/>
<input name="submitted" type="submit" value="ثبت"/>
</form>
<?php
mysql_connect('localhost', 'root', '') or die('خطا در اتصال');
mysql_select_db('cms2') or die('ديتابيس وجود ندارد');
mysql_query('SET NAMES \'utf8\'');
if(isset($_POST['submitted'])) {
$vars = array('matn', 'link');
$flag = true;
foreach($vars as $var) {
if(!isset($_POST[$var]) || $_POST[$var] == '') {
$flag = false;
}
}
if($flag) {
mysql_query("INSERT INTO `link` (`link`,`matn`) VALUES ('{$_POST['link']}','{$_POST['matn']}')");
$page = pathinfo(__FILE__, PATHINFO_BASENAME);
header('Location: ',$page);
exit();
}
}
$result = mysql_query('SELECT * FROM `link` ORDER BY `id`');
if($result && mysql_num_rows($result) > 0) {
while($row = mysql_fetch_assoc($result)) {
echo '<a href="deletelink.php?id='.$row['id'].'"><img src="hazf.gif" border="0"></a>';
echo '<a href="editlink.php?action=edit&id='.$row['id'].'"><img src="edit.gif" border="0"></a>';
echo '<a href="idlink.php?id='.$row['id'].'">'.$row['link'].'</a>';
echo '<br/>'."\n";
}
}
else {
echo 'اطلاعات موجود نيست.<br/>'."\n";
}
?>
</body>
</html>

ravand
جمعه 18 آذر 1390, 10:07 صبح
اولش كه در اين صفحه هستم يعني همين كه شما دادي. به آدرس :
http://localhost/cms/nicEdit/link.php
بعد كه دكمه ي ارسال رو كليك ميكنم ميرم به اين صفحه
http://localhost/cms/nicEdit/

MMSHFE
جمعه 18 آذر 1390, 10:15 صبح
تعجب میکنم. عمداً از PATHINFO_BASENAME استفاده کردم که اسم فایل رو استخراج کنه ولی شما رو داره به پوشه مربوطه Redirect میکنه. در هر حال، چون نمیدونستم توی کدوم صفحه هستین، از __FILE__ استفاده کردم. حالا کد زیر رو امتحان کنید:


<!doctype html>
<html dir="rtl">
<head>
<title>Save and Display DEMO</title>
<meta charset="utf-8"/>
</head>
<body>
<form action="" method="post">
<label for="matn">متن</label><br/>
<input id="matn" name="matn" type="text"/><br/>
<label for="link">لينک</label><br/>
<input id="link" type="text" name="link"><br/>
<input name="submitted" type="submit" value="ثبت"/>
</form>
<?php
mysql_connect('localhost', 'root', '') or die('خطا در اتصال');
mysql_select_db('cms2') or die('ديتابيس وجود ندارد');
mysql_query('SET NAMES \'utf8\'');
if(isset($_POST['submitted'])) {
$vars = array('matn', 'link');
$flag = true;
foreach($vars as $var) {
if(!isset($_POST[$var]) || $_POST[$var] == '') {
$flag = false;
}
}
if($flag) {
mysql_query("INSERT INTO `link` (`link`,`matn`) VALUES ('{$_POST['link']}','{$_POST['matn']}')");
header('Location: link.php');
exit();
}
}
$result = mysql_query('SELECT * FROM `link` ORDER BY `id`');
if($result && mysql_num_rows($result) > 0) {
while($row = mysql_fetch_assoc($result)) {
echo '<a href="deletelink.php?id='.$row['id'].'"><img src="hazf.gif" border="0"></a>';
echo '<a href="editlink.php?action=edit&id='.$row['id'].'"><img src="edit.gif" border="0"></a>';
echo '<a href="idlink.php?id='.$row['id'].'">'.$row['link'].'</a>';
echo '<br/>'."\n";
}
}
else {
echo 'اطلاعات موجود نيست.<br/>'."\n";
}
?>
</body>
</html>

ravand
جمعه 18 آذر 1390, 10:20 صبح
نميدونم چرا به اين خط خطا ميده:

$result = mysql_query('SELECT * FROM `link` ORDER BY `id`');
اين خطا رو ميده:
Parse error: syntax error, unexpected T_STRING in F:\wamp\wamp\www\cms\nicEdit\link.php on line 33

MMSHFE
جمعه 18 آذر 1390, 10:22 صبح
کد رو اصلاح کردم. یک ' کوچولو بعد از link.php جا افتاده بود! :لبخند:
نکته آموزشی: درمورد خطاهای PHP به این نکته دقت کنید که همیشه خطا مربوط به اون خطی که گزارش میشه نیست. ممکنه یکی دو خط قبل خطایی باشه که موجب بشه اون خط هم اشتباه شده باشه. مثل نبستن یک گیومه بازشده یا فراموش کردن ; در خطوط قبلی. پس اگه دیدی خود اون خطی که گزارش شده، خطایی نداره، خطوط قبلی رو چک کنید.