PDA

View Full Version : کار با تابع



bravia2009
چهارشنبه 23 تیر 1389, 11:36 صبح
وقت همه دوستان بخیر
من میخوام این جا از تابع استفاده کنم و لی نیمدانم چرا مشکل داره و پاک نمیکنه ؟؟؟

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>

<meta http-equiv="Content-type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-language" content="fa">

<meta name="author" content="saeed" />

<title> مشاهده جداول پایگاه داده </title>
</head>

<body>
<!-- begining code -- >
<div style="text-align:center;">

<table width="800" border="1" align="center" dir="rtl" style="font-family: Tahoma;
font-size: 12px;" cellpadding="10" cellspacing="10">


<caption><b> جدول مشاهده مستندات </b></caption>

<a href="new.php?do=new">
<img src="Picture/1.png" alt="add message pic" name="Add" width="128" height="128" title="ایجاد پیام"/>
</a>
</div>

<thead style="background: aqua;">
<tr>
<th width="40" height="40" scope="col"> <b> کد سند </b></th>
<th width="160" height="40" scope="col"> <b> نام فرستنده </b></th>
<th width="200" height="40" scope="col" > <b> تاریخ درج </b></th>
<th width="600" height="40" scope="col" > <b> متن فایل </b></th>
<th width="200" height="40" scope="col" > <b> امکانات </b></th>
</tr>
</thead>




<!--endinig header code -- >
<?php

/**
* @author saeed
* @copyright 2010
*/

include_once('db.php');// link to other page
$query="select dId,dName,dInDate,dBody from document ORDER by dInDate desc";//getting row in document table
$result=mysql_query($query,$connect);//set in the variable with mysql_query
$num=mysql_num_rows($result);//getting row for loop for and with result
for ($i=0;$i<=$num;$i++){
$row=mysql_fetch_array($result);//getting
echo '<tr>';
echo "<td> $row[dId]</td>";
echo "<td> $row[dName] </td>" ;
echo "<td> $row[dInDate] </td>" ;
echo "<td> $row[dBody]</td>";

$id=$row[0];
echo '<td><b><a href="view.php?do=edit&id='."$row[0]".'"><img src="picture/3.png" alt= ویرایش name="edit" width="32" height="30" title=" ویرایش" /></a></b> ';// Edit row from datebase

echo '<b><a href="view.php?do=delete&id='."$row[0]".'"><img src="picture/2.png" alt="حذف" name="delete" width="32" height="30" title="حذف" /></a></b> </td>'; //Delete row from Datebase







}
$action=$_GET['action'];
switch($action)
{
case "delete": DeleteRecord();break;
case "edit": edit();break;

}
// case "delete":
function DeleteRecord()
{
//$do=$_REQUEST['do'];

if(isset($do) && $do == 'delete'){
$id=$_REQUEST['id'];
$query="delete from document where dId = $id";
$result=mysql_query($query,$connect);
if(!$result){
echo '<th colspan="4">';
echo '<td>';
die("error remove!!!");
echo '</td>';
echo'</th>';

}






}
}
الان تابع رو نوشتم و لی نمیدونم چرا پاک نمیکند ! لطفا راهنمایی !!!!!

Reza1607
چهارشنبه 23 تیر 1389, 11:48 صبح
این خط ها رو اصلاح کن


$action=$_GET['action'];

به


$action=$_GET['do'];

و این خط رو


if(isset($do) && $do == 'delete'){

به


if(isset($_GET['do']) && $_GET['do'] == 'delete'){

bravia2009
چهارشنبه 23 تیر 1389, 11:59 صبح
بازم درست نشد !

$action=$_GET['do'];
switch($action)
{
case "delete": DeleteRecord();break;
case "edit": edit();break;

}
// case "delete":
function DeleteRecord()
{
//$do=$_REQUEST['do'];

if(isset($_Get['do']) && $_Get['do'] == 'delete'){
$id=$_REQUEST['id'];
$query="delete from document where dId = $id";
$result=mysql_query($query,$connect);
if(!$result){
echo '<th colspan="4">';
echo '<td>';
die("error remove!!!");
echo '</td>';
echo'</th>';

}






}
}

Reza1607
چهارشنبه 23 تیر 1389, 12:11 عصر
امیدوارم GET های داخل این خط رو به صورت حروف بزرگ وارد کرده باشید


if(isset($_Get['do']) && $_Get['do'] == 'delete'){

mohmadd
چهارشنبه 23 تیر 1389, 12:15 عصر
$action=$_GET['do'];
switch($action)
{
case "delete": DeleteRecord();break;
case "edit": edit();break;

}
// case "delete":
function DeleteRecord()
{


if(isset($_GET['do']) && $_GET['do'] == 'delete' && isset($_GET['id']) $_GET['id'] >= 0){
$id=$_GET['id'];
$query="delete from document where dId = $id";
$result=mysql_query($query,$connect);
if(!$result){
echo '<th colspan="4">';
echo '<td>';
die("error remove!!!");
echo '</td>';
echo'</th>';

}






}
}
$_GET باید با حروف بزرگ تایپ بشه .
نظرم این بود که از $_REQUEST استفاده بشه ...

bravia2009
چهارشنبه 23 تیر 1389, 12:29 عصر
بازم نشد !!!!!!!!!!!!!!!

$action=$_GET['do'];
switch($action)
{
case "delete": DeleteRecord();break;
case "edit": edit();break;

}
// case "delete":
function DeleteRecord()
{
//$do=$_REQUEST['do'];

if(isset($_GET['do']) && $_GET['do'] == 'delete' ){
$id=$_GET['id'];
$query="delete from document where dId = $id";
$result=mysql_query($query,$connect);
if(!$result){
echo '<th colspan="4">';
echo '<td>';
die("error remove!!!");
echo '</td>';
echo'</th>';

}






}
}

Reza1607
چهارشنبه 23 تیر 1389, 12:37 عصر
خطا می ده یا اصلا کاری انجام نمی ده شما این کد رو به آخر خطی که کوئری مربوط به حذف رو اجرا می کنه اضافه کن ببین چیزی چاپ می کنه یا نه


or die(mysql_error());

Reza1607
چهارشنبه 23 تیر 1389, 12:40 عصر
مشکل رو پیدا کردم شما بیرون از تابع به بانک وصل شدی باید یا متغییر کانکشن رو به صورت پارامتر به تابع ارسال کنید یا در خود تابع هم با پایگاه داده ارتباط برقرار کنی

bravia2009
چهارشنبه 23 تیر 1389, 13:09 عصر
یعنی توی تابع باید دوباره وصل شد ؟؟؟؟
اخه من الان وصله چون که میره تو if و پاک نمیکنه ‍!

mohmadd
چهارشنبه 23 تیر 1389, 14:09 عصر
<?php

////connect database mysql////


$action=$_GET['do'];
switch($action)
{
case "delete": DeleteRecord($connect);break;
case "edit": edit();break;
}

function DeleteRecord($connect)
{


if(isset($_GET['id']) && $_GET['id'] >= 0)
{
$id=$_GET['id'];
$query="delete from document where dId = $id";
$result=mysql_query($query,$connect);
if(!$result)
{
echo '<th colspan="4">';
echo '<td>';
die("error remove!!!");
echo '</td>';
echo'</th>';
}
}
}
?>کجا به db وصل شدید ؟
شما که اول با switch متغییر $action رو با شرط تست کردید, خوب دیگه چرا داخل تابع اونو تست میکنید ؟

bravia2009
پنج شنبه 24 تیر 1389, 09:16 صبح
<?php

////connect database mysql////


$action=$_GET['do'];
switch($action)
{
case "delete": DeleteRecord($connect);break;
case "edit": edit();break;
}

function DeleteRecord($connect)
{


if(isset($_GET['id']) && $_GET['id'] >= 0)
{
$id=$_GET['id'];
$query="delete from document where dId = $id";
$result=mysql_query($query,$connect);
if(!$result)
{
echo '<th colspan="4">';
echo '<td>';
die("error remove!!!");
echo '</td>';
echo'</th>';
}
}
}
?>کجا به db وصل شدید ؟
شما که اول با switch متغییر $action رو با شرط تست کردید, خوب دیگه چرا داخل تابع اونو تست میکنید ؟

سلام دوست من
1. کد کامل اینه که براتون میزارم من خارج تابع بع دیتا بیس وصل شدم ایا مجددا درون تابع باید وصل شم ؟؟؟؟؟
2.متغییر action بیرون تابع داره تست میشه داخل تابع من action ندارم

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>

<meta http-equiv="Content-type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-language" content="fa">

<meta name="author" content="saeed" />

<title> مشاهده جداول پایگاه داده </title>
</head>

<body>
<!-- begining code -- >
<div style="text-align:center;">

<table width="800" border="1" align="center" dir="rtl" style="font-family: Tahoma;
font-size: 12px;" cellpadding="10" cellspacing="10">


<caption><b> جدول مشاهده مستندات </b></caption>

<a href="new.php?do=new">
<img src="Picture/1.png" alt="add message pic" name="Add" width="128" height="128" title="ایجاد پیام"/>
</a>
</div>

<thead style="background: aqua;">
<tr>
<th width="40" height="40" scope="col"> <b> کد سند </b></th>
<th width="160" height="40" scope="col"> <b> نام فرستنده </b></th>
<th width="200" height="40" scope="col" > <b> تاریخ درج </b></th>
<th width="600" height="40" scope="col" > <b> متن فایل </b></th>
<th width="200" height="40" scope="col" > <b> امکانات </b></th>
</tr>
</thead>




<!--endinig header code -- >
<?php

/**
* @author saeed
* @copyright 2010
*/

include_once('db.php');// link to other page
$query="select dId,dName,dInDate,dBody from document ORDER by dInDate desc";//getting row in document table
$result=mysql_query($query,$connect);//set in the variable with mysql_query
$num=mysql_num_rows($result);//getting row for loop for and with result
for ($i=0;$i<=$num;$i++){
$row=mysql_fetch_array($result);//getting
echo '<tr>';
echo "<td> $row[dId]</td>";
echo "<td> $row[dName] </td>" ;
echo "<td> $row[dInDate] </td>" ;
echo "<td> $row[dBody]</td>";

$id=$row[0];
echo '<td><b><a href="view.php?do=edit&id='."$row[0]".'"><img src="picture/3.png" alt= ویرایش name="edit" width="32" height="30" title=" ویرایش" /></a></b> ';// Edit row from datebase

echo '<b><a href="view.php?do=delete&id='."$row[0]".'"><img src="picture/2.png" alt="حذف" name="delete" width="32" height="30" title="حذف" /></a></b> </td>'; //Delete row from Datebase







}
$action=$_GET['do'];
switch($action)
{
case "delete": DeleteRecord();break;
case "edit": edit();break;

}
// case "delete":
function DeleteRecord($query,$connect)
{
//$do=$_REQUEST['do'];

if(isset($_GET['do']) && $_GET['do'] == 'delete' ){
$id=$_GET['id'];
$query="delete from document where dId = $id";
$result=mysql_query($query,$connect) ;
if(!$result){
echo '<th colspan="4">';
echo '<td>';
die("error remove!!!");
echo '</td>';
echo'</th>';

}






}
}

bravia2009
پنج شنبه 24 تیر 1389, 09:26 صبح
ببین داره میره if دوم یعنی داره جواب resulte برنمیگردونه دسته ؟
پس در نتیجه الان دیتا بیس وصل نمیشه؟
والا چی شد ؟؟؟؟

bravia2009
پنج شنبه 24 تیر 1389, 09:35 صبح
ببنید از دستور include_once ("db.php"); هم استفاده کردم یعنی وصل شه به صفحه دیتا بیسم بازم جواب نداد

صابر طهماسبی
پنج شنبه 24 تیر 1389, 09:42 صبح
سلام
همه ی فایلهایی رو که داری زیپ کن(حتی دستورات بانکت رو) ضمیمه کن را یه جا بررسی بشه شاید مشکل حل بشه

bravia2009
پنج شنبه 24 تیر 1389, 09:55 صبح
کد دیتا بیس

<?php

/**
* @author saeed
* @copyright 2010
*/

$host='localhost';//variable for define database
$username='admin';//variable for define database
$password='110';//variable for define database
$dbname='softechcms';//variable for define database select
$dbtable='document';//variable for define database select
$connect=mysql_connect($host,$username,$password) or die ("Your connecting have error");
//coonect to data base with user and password
$db=mysql_select_db($dbname,$connect) or die ("Your sql have error");//selec database and connect



?>
کد قسمت مشاهده و حذف و ویرایش

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>

<meta http-equiv="Content-type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-language" content="fa">

<meta name="author" content="saeed" />

<title> مشاهده جداول پایگاه داده </title>
</head>

<body>
<!-- begining code -- >
<div style="text-align:center;">

<table width="800" border="1" align="center" dir="rtl" style="font-family: Tahoma;
font-size: 12px;" cellpadding="10" cellspacing="10">


<caption><b> جدول مشاهده مستندات </b></caption>

<a href="new.php?do=new">
<img src="Picture/1.png" alt="add message pic" name="Add" width="128" height="128" title="ایجاد پیام"/>
</a>
</div>

<thead style="background: aqua;">
<tr>
<th width="40" height="40" scope="col"> <b> کد سند </b></th>
<th width="160" height="40" scope="col"> <b> نام فرستنده </b></th>
<th width="200" height="40" scope="col" > <b> تاریخ درج </b></th>
<th width="600" height="40" scope="col" > <b> متن فایل </b></th>
<th width="200" height="40" scope="col" > <b> امکانات </b></th>
</tr>
</thead>




<!--endinig header code -- >
<?php

/**
* @author saeed
* @copyright 2010
*/

include_once('db.php');// link to other page
$query="select dId,dName,dInDate,dBody from document ORDER by dInDate desc";//getting row in document table
$result=mysql_query($query,$connect);//set in the variable with mysql_query
$num=mysql_num_rows($result);//getting row for loop for and with result
for ($i=0;$i<=$num;$i++){
$row=mysql_fetch_array($result);//getting
echo '<tr>';
echo "<td> $row[dId]</td>";
echo "<td> $row[dName] </td>" ;
echo "<td> $row[dInDate] </td>" ;
echo "<td> $row[dBody]</td>";

$id=$row[0];
echo '<td><b><a href="view.php?do=edit&id='."$row[0]".'"><img src="picture/3.png" alt= ویرایش name="edit" width="32" height="30" title=" ویرایش" /></a></b> ';// Edit row from datebase

echo '<b><a href="view.php?do=delete&id='."$row[0]".'"><img src="picture/2.png" alt="حذف" name="delete" width="32" height="30" title="حذف" /></a></b> </td>'; //Delete row from Datebase







}
$action=$_GET['do'];
switch($action)
{
case "delete": DeleteRecord();break;
case "edit": edit();break;

}
// case "delete":
function DeleteRecord()
{
//$do=$_REQUEST['do'];

if(isset($_GET['do']) && $_GET['do'] == 'delete' ){
$id=$_GET['id'];
include_once ("db.php");
$query="delete from document where dId = $id";
$result=mysql_query($query,$connect) ;
if(!$result){
echo '<th colspan="4">';
echo '<td>';
die("error remove!!!");
echo '</td>';
echo'</th>';

}






}
}

صابر طهماسبی
پنج شنبه 24 تیر 1389, 10:40 صبح
کدها درست شد:
اول کدها را ببینید تا بعد اشتباهاتتون رو بگم:




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>

<meta http-equiv="Content-type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-language" content="fa">

<meta name="author" content="saeed" />

<title> مشاهده جداول پایگاه داده </title>
</head>

<body>
<!-- begining code -- >
<div style="text-align:center;">

<table width="800" border="1" align="center" dir="rtl" style="font-family: Tahoma;
font-size: 12px;" cellpadding="10" cellspacing="10">


<caption><b> جدول مشاهده مستندات </b></caption>

<a href="new.php?do=new">
<img src="Picture/1.png" alt="add message pic" name="Add" width="128" height="128" title="ایجاد پیام"/>
</a>
</div>

<thead style="background: aqua;">
<tr>
<th width="40" height="40" scope="col"> <b> کد سند </b></th>
<th width="160" height="40" scope="col"> <b> نام فرستنده </b></th>
<th width="200" height="40" scope="col" > <b> تاریخ درج </b></th>
<th width="600" height="40" scope="col" > <b> متن فایل </b></th>
<th width="200" height="40" scope="col" > <b> امکانات </b></th>
</tr>
</thead>




<!--endinig header code -- >
<?php

/**
* @author saeed
* @copyright 2010
*/

include_once('db.php');// link to other page


$action=$_GET['do'];
switch($action)
{
case "delete": DeleteRecord();break;
case "edit": edit();break;
default:break;
}
// case "delete":
function DeleteRecord()
{
//$do=$_REQUEST['do'];

if(isset($_GET['do']) && $_GET['do'] == 'delete' ){
$id=$_GET['id'];
$query="delete from document where dId=$id";
global $link;
$result=mysql_query($query,$link) ;
if(!$result)
echo 'Error deleting record!';
}

}

$query="select dId,dName,dInDate,dBody from document ORDER by dInDate desc";//getting row in document table
$result=mysql_query($query,$link);//set in the variable with mysql_query
$num=mysql_num_rows($result);//getting row for loop for and with result
for ($i=0;$i<$num;$i++){
$row=mysql_fetch_array($result);//getting
echo '<tr>';
echo "<td> $row[dId]</td>";
echo "<td> $row[dName] </td>" ;
echo "<td> $row[dInDate] </td>" ;
echo "<td> $row[dBody]</td>";

$id=$row[0];
echo '<td><b><a href="view.php?do=edit&id='."$row[0]".'"><img src="picture/3.png" alt= ویرایش name="edit" width="32" height="30" title=" ویرایش" /></a></b> ';// Edit row from datebase

echo '<b><a href="view.php?do=delete&id='."$row[0]".'"><img src="picture/2.png" alt="حذف" name="delete" width="32" height="30" title="حذف" /></a></b> </td>'; //Delete row from Datebase







}
echo "</table>";

?>
</body>
</html>


و کد DB.PHP




<?php

/**
* @author saeed
* @copyright 2010
*/

$host='localhost';//variable for define database
$username='root';//variable for define database
$password='';//variable for define database
$dbname='test';//variable for define database select
$dbtable='document';//variable for define database select
$link=mysql_connect($host,$username,$password) or die ("Your connecting have error");
//coonect to data base with user and password
mysql_select_db($dbname) or die ("Your sql have error");//selec database and connect



?>

اشتباهات :


وقتی متغیر حلقه از 0 شروع می شود و با آرایه کار می کنید باید شرط توقف را > قرار دهید نه => چون خانه ی 0 خودش یکی حساب می شود(مربوط به حلقه for برای نمایش جدول)
وقتی می خواهید از متغیری که در خارج تابع تعریف شده داخل تابع استفاده کنید باید داخل تابع آن را به صورت global تعریف کنید یا از پارامترها استفاده کنید(مربوط به متغیر connectکه بنده آن را به link تغییر دادم)
کد نویسی و فاصله گذاری خود را منظم انجام دهید تا کد شما خوانا شود و به راحتی بتوان اشکالات را پیدا کرد(مربوط به به هم ریختگی و نامنظم بودن {} ها و tab ها)

موفق باشید