PDA

View Full Version : عدم Update اطلاعات در دیتا بیس



hamidhassas
یک شنبه 18 دی 1390, 15:40 عصر
من اصلاعات رو از دیتابیس فرا خوانی میکنم و هر کدام از اطلاعات رو در سر جای خود به نمایش در میارم وقتی که می خوام اطلاعات رو ویرایش کنم پیغام خطا میده
کدی زیر را نوشتم که فکر میکنم ایراد از این کد هست اگه امکان داره راهنمایی کنید




<?php
if(isset($_POST['tSubject']) && isset($_POST['tText']) && isset($_POST['tText2']) && isset($_POST['tLink']) && isset($_POST['tDate'])) {
mysql_connect('localhost', 'root', '');
mysql_select_db('database');
mysql_query('SET NAMES \'utf8\'');
$Subject = mysql_real_escape_string($_POST['tSubject']);
$Text = mysql_real_escape_string($_POST['tText']);
$Full_Text = mysql_real_escape_string($_POST['tText2']);
$Link = mysql_real_escape_string($_POST['tLink']);
$Date = mysql_real_escape_string($_POST['tDate']);
mysql_query("UPDATE `news` SET `subject`='$Subject',`text`='$Text',`full_text`='$ Full_Text',`link`='$Link',`date`='$Date' WHERE `id`='$id'");
echo mysql_affected_rows() > 0 ? '<p align="center">اطلاعات با موفقيت ثبت شد</p>' : 'Error : '.mysql_error();
}
?>

mamali-mohammad
یک شنبه 18 دی 1390, 16:10 عصر
$sql=mysql_query("UPDATE `news` SET `title`='$title',`text`='$text',`date`='$date' WHERE `id`='$id'");

hamidhassas
یک شنبه 18 دی 1390, 16:39 عصر
از کد شما الگو گرفتم و کد رو تغییر دادم مثل بالا ولی پیغام خدا می ده مینویسه Error:

بعد از اون در داخل کد شما SQL$ چی هست

ravand
یک شنبه 18 دی 1390, 16:44 عصر
اينم ببين:

<?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");
}
$id= $_POST['id'];
$title= $_POST['title'];
if($title=="")
die('فيلد خالي است');
$msg= $_POST['msg'];
if($msg=="")
die('فيلد خالي است');
$query = "UPDATE jadval SET msg = '$msg',title='$title'";
$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);
?>

hamidhassas
یک شنبه 18 دی 1390, 17:27 عصر
اينم ببين:

<?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");
}
$id= $_POST['id'];
$title= $_POST['title'];
if($title=="")
die('فيلد خالي است');
$msg= $_POST['msg'];
if($msg=="")
die('فيلد خالي است');
$query = "UPDATE jadval SET msg = '$msg',title='$title'";
$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);
?>

کد خودم رو تغییر دادم جواب می ده در صورتی که اگه $id=$_Post['id']; را پاک کنم جواب میده ولی همه رکورد ها رو تغییر میده اگه هم کد را حذف نکنم کار نمیکنه اگه هم where id=$id رو اضافه کنم باز هم جواب نمیده



<?php
$handle=mysql_connect('localhost','root','');
$db=mysql_select_db('database');
mysql_query('SET NAMES \'utf8\'');
if($handle==false){
die("can not connect mysql.\r\n");
}
if($db==false){
die("can not connect db.\r\n");
}
$Subject = $_POST['tSubject'];
if($Subject=="")
die('فيلد خالي است');
$Text = $_POST['tText'];
if($Text=="")
die('فيلد خالي است');
$Full_Text = $_POST['tText2'];
if($Full_Text=="")
die('فيلد خالي است');
$Link = $_POST['tLink'];
if($Link=="")
die('فيلد خالي است');
$Date = $_POST['tDate'];
if($Date=="")
die('فيلد خالي است');
$query = "UPDATE news SET subject='$Subject',text='$Text',full_text='$Full_T ext',link='$Link',date='$Date'";
$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);
?>

hamidhassas
یک شنبه 18 دی 1390, 17:49 عصر
من کد خودم رو به صورت زیر هم در آوردم ولی باز از از خطی که id$=$_POST]'id']; است خطا میگیره



<?php
$con=mysql_connect("localhost","root","");
mysql_select_db('database');
$id=$_POST['id'];
mysql_query('SET NAMES \'utf8\'');
$Subject = $_POST['tSubject'];
$Text = $_POST['tText'];
$Full_Text = $_POST['tText2'];
$Link = $_POST['tLink'];
$Date = $_POST['tDate'];
$read_sql= "UPDATE news SET subject='$Subject',text='$Text',full_text='$Full_T ext',link='$Link',date='$Date' where id=$id";
print $read_sql;
$tab=mysql_query($read_sql);
?>

ravand
یک شنبه 18 دی 1390, 19:21 عصر
خب براي چي فيلد id براش درست نميكني؟
يه فيلد درست كن با نام id كه شماره ي هر ركورد رو ثبت كنه.
بعد نوعش رو هم بذار int.

djsaeedkhan
یک شنبه 18 دی 1390, 23:53 عصر
خوب مشخصه باید خطا بده چون اصلا آیدی نداری که بخاد مقایسه کنه

یه مثال میذارم ببین اینجوری باید کار کنی



<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("Data");
if(isset($_GET['id_to_view'])){
@$id=$_GET['id_to_view'];
$query="SELECT * FROM `Data` where `id`='$id'";
$result=mysql_query($query);
}
else
{
$query="SELECT * FROM Data";
$result=mysql_query($query);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="rtl">
<head>
<title>دانلود خونه</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="دانلود خونه" />
<meta name="keywords" content="دانلود خونه" />
<link rel="stylesheet" href="andreas08.css" type="text/css" media="screen,projection" />
</head>
<body style="font-family: Tahoma; font-size: 10pt">

<div id="container" >
<div id="header">
<h1 style="text-align: center"><font face="Arial">
<span style="letter-spacing: 0"><font size="7">دانلود خونه</font></span></h1>
</font>
</div>
<div id="navigation">
<ul>
<li class="selected"><a href="Index.php"><font size="2">صفحه اصلی</font></a></li>
<li><a href="Register.php">ثبت نام</a></li>
<li><a href="Login.php">ورود</a></li>
<li><a href="AboutUs.php">درباره ما</a></li>
</ul>
</div>
<div id="content">
<?php
while ($row = mysql_fetch_assoc($result))
{
$link=$row["Date"];
$topic=$row["Topic"];
$ax=$row["ax"];
$text=$row["Matn"];
$id=$row["id"];
$visitor=$row["Show"];
if(!isset($_GET['id_to_view'])){
$str =$text;
$numwords = 50;
preg_match("/([\S]+\s*){0,$numwords}/", $str, $regs);
$text= trim($regs[0]);
}
?>
<table border="0" width="100%" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0; border-top: 1px solid #C0C0C0; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px" bgcolor="#F4F9FD">
<tr>
<td>
<p align="right"><font size="2"><span lang="fa">عنوان:<b> <?php echo $topic; ?></b></span></font><span lang="fa"><b>
</b> </span></td>
<td width="17%">
<p align="left"><font size="2">بازدید</font><span lang="fa"><font size="2">:</font></span><font size="2"><b> [<?php echo $visitor; ?>]</b></font><span lang="fa"><font size="2">
</font> </span></td>
</tr>
</table>

<div align="right">
<table border="0" width="100%" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0; border-bottom: 1px solid #C0C0C0; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px" bgcolor="#F4F9FD">
<tr>
<td width="21%">
<p align="center"><font size="2">
<img src="<?php echo $ax; ?>" width="98" height="110" align="right"></font></td>
<td align="justify"><br>
<?php if(isset($_GET['id_to_view']))
echo nl2br($text);
else
echo $text;
?>
<p align="justify">
<?php if(!isset($_GET['id_to_view'])){ ?>
<a href="?id_to_view=<?php echo $id;?>"><font style="font-size: 9pt"><br>
<span style="font-weight: 400">ادامه مطلب</span></font></a></td>

<?php } ?>
<?php if(isset($_GET['id_to_view'])){ ?>
<a href="<?php echo $link;?>"><font style="font-size: 9pt"><br>
<span style="font-weight: 400">لینک دانلود</span></font></a></td>
<?php } ?>

</tr></table></div><br>
<?php
if(isset($_GET['id_to_view'])){
$visitor+=1;
$svisit = "UPDATE `Data` SET `show`='$visitor' WHERE `id`='$id'";
$vresult=mysql_query($svisit);
}
}
?>
<br></div><div id="subcontent"><div class="small box">
<?php @include("userMenu.php");?> </div>
</div><div id="footer"> &nbsp;</div></div></body></html>

djsaeedkhan
یک شنبه 18 دی 1390, 23:54 عصر
اینم فایل دیتابیسش
اگر نتونستی خبر بده کل صفحشو برات بفرستم

CREATE TABLE IF NOT EXISTS `data` (
`id` int(12) NOT NULL AUTO_INCREMENT,
`Topic` text COLLATE utf8_persian_ci NOT NULL,
`Matn` text COLLATE utf8_persian_ci NOT NULL,
`Date` text COLLATE utf8_persian_ci NOT NULL,
`Show` int(11) NOT NULL,
`ax` text COLLATE utf8_persian_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci AUTO_INCREMENT=16 ;

hamidhassas
دوشنبه 19 دی 1390, 10:02 صبح
خب براي چي فيلد id براش درست نميكني؟
يه فيلد درست كن با نام id كه شماره ي هر ركورد رو ثبت كنه.
بعد نوعش رو هم بذار int.

عزیزم آخه اگه من idنداشتم پس چطوری دارم رکورد مورد نظر خودم رو برای ویرایش فراخوانی می کنم ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

ravand
دوشنبه 19 دی 1390, 10:05 صبح
اگه من ميگم آي داشته باشه براي اينه كه هر ركوردي يه شماره داشته باشه

hamidhassas
دوشنبه 19 دی 1390, 10:25 صبح
من چند رکورد در دیتابیس زخیره میکنم و بعد رکورد ها رو لیست میکنم و بعد با کلیک بر روی هر یک از رکورد های دلخواه اطلاعات داخل رکورد را مشاهده میکنم و بعد با زدن دکمه ویرایش که خودم تعریف کردم اطلاعات را در یک فرم ویرایش نمایش میدم تا اینجا همه چیز درسته یعنی اطلاعات هر بخش در جای خودش نمایش داده میشه و همینطور id مورد نظر که به صورت اتوماتیک توسط دیتا بیس به هر یک ار رکورد ها تعلق گرفته رو درست انتخاب میشه و اطلاعات فرا خوانی میشه اما کدی که با اون بتونم تغییرات رو در همون id که اطلاعاتش فراخوانی شده رو ثبت کنه درست عمل نمیکنه فقط کد زیر کار میکنه که اون هم تمام اطلاعات داخل رکورد های دیتابیس رو تغییر میده نه یک رکورد مشخص وقتی هم که دستور id$==$_POST['id']رو به کد زیر اضافه میکنم پیغام خطای زیر رو میده که از همین کد id$=$_post است.




<?php
if(isset($_POST['tSubject']) && isset($_POST['tText']) && isset($_POST['tText2']) && isset($_POST['tLink']) && isset($_POST['tDate'])) {
$handle=mysql_connect('localhost','root','');
$db=mysql_select_db('database');
mysql_query('SET NAMES \'utf8\'');



mysql_query('SET NAMES \'utf8\'');
if($handle==false){
die("can not connect mysql.\r\n");
}
if($db==false){
die("can not connect db.\r\n");
}
$Subject = $_POST['tSubject'];
if($Subject=="")
die('فيلد خالي است');
$Text = $_POST['tText'];
if($Text=="")
die('فيلد خالي است');
$Full_Text = $_POST['tText2'];
if($Full_Text=="")
die('فيلد خالي است');
$Link = $_POST['tLink'];
if($Link=="")
die('فيلد خالي است');
$Date = $_POST['tDate'];
if($Date=="")
die('فيلد خالي است');
$query = "UPDATE news SET subject='$Subject',Text='$Text',Full_Text='$Full_T ext',Link='$Link',Date='$Date' where id=$id";
$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);
}
?>


پیغام خطا:

Notic: Undefined index: id in C:\xampp\htdocs\test\news\update_code.php on line 17 error with query

ravand
دوشنبه 19 دی 1390, 11:24 صبح
حتما براي id مقدار primary و auto_increment در ديتابيس نذاشتي.

mtchabok
دوشنبه 19 دی 1390, 11:32 صبح
عزیزم شما باید id رو تعریف بکنی تا بعدش در کوئری قرار بدین :

<?php
if(isset($_POST['tSubject'], $_POST['tText'], $_POST['tText2'], $_POST['tLink'], $_POST['tDate'], $_POST['tId'])){
$handle=mysql_connect('localhost','root','') or die("can not connect mysql.\r\n");
$db=mysql_select_db('database') or die("can not connect db.\r\n");
mysql_query('SET NAMES \'utf8\'');
// در فرمتون آی دی رو نداشتید و باید به همراه پست آی دی رو هم بفرستید
$Id = mysql_real_escape_string(trim($_POST['tId']),$handle) or die('آی دی اشتباه است');
$Subject = mysql_real_escape_string(trim($_POST['tSubject']),$handle) or die('فيلد خالي است');
$Text = mysql_real_escape_string(trim($_POST['tText']),$handle) or die('فيلد خالي است');
$Full_Text = mysql_real_escape_string(trim($_POST['tText2']),$handle) or die('فيلد خالي است');
$Link = mysql_real_escape_string(trim($_POST['tLink']),$handle) or die('فيلد خالي است');
$Date = mysql_real_escape_string(trim($_POST['tDate']),$handle) or die('فيلد خالي است');
$query = "UPDATE news SET subject='$Subject',Text='$Text',Full_Text='$Full_T ext',Link='$Link',Date='$Date' where id=$Id";
$result=mysql_query($query,$handle);
if($result==false){
die("error with query\r\n");
}
$num=mysql_affected_rows($handle);
if($num==1){
echo "تغيير يافت ";
}elseif($num == 0){
echo"تغيير نيافت ";
}
mysql_close($handle);
}
?>

در فرمتون یه input ایجاد کنید با نام tId ( آی دی رکورد مربوطه درش باشه ) که به همراه سایر اطلاعات به فایل بالا ارسال بشه مابقیش رو در کد بالا درست کردم واستون

hamidhassas
دوشنبه 19 دی 1390, 12:38 عصر
حتما براي id مقدار primary و auto_increment در ديتابيس نذاشتي.
کار هایی که گفتید رو قبلا انجام دادم و اگر هم کار نمی کرد که نباید موقع نشون دادن بتونه id که مثلا شماره 6 را به صورت اتوماتیک شماره داده رو بتونه برای ویرایش بیاره

hamidhassas
دوشنبه 19 دی 1390, 12:48 عصر
در فرمتون یه input ایجاد کنید با نام tId ( آی دی رکورد مربوطه درش باشه ) که به همراه سایر اطلاعات به فایل بالا ارسال بشه مابقیش رو در کد بالا درست کردم واستون
ممنون
میشه توضیح بدین دقیقا باید چکار کنم
شرمنده تازه کارم

mtchabok
دوشنبه 19 دی 1390, 19:16 عصر
<input name="tId" value="" type="hidden">
این input رو به فرمتون اضافه کنین و سپس در زمانیکه اطلاعات رو در فایل فرم میخونید تا کاربر ویرایش انجام بده آی دی گرفته شده از دیتابیس رو در value این input قرار بدین .
به طور مثال به این صورت :

<?php
$row = mysql_fetch_assoc($result);
// ...
echo "<input type='hidden' name='tId' value='{$row['id']}'>";
// ...

hamidhassas
دوشنبه 19 دی 1390, 21:07 عصر
یعنی میگید که کد زیر رو در داخل فرمی قرار بدم که در اون اطلاعاتی که از دیتابیس فرا خوانی کرم قرار بدم


<input name="tId" value="" type="hidden">

و بعد کد زیر رو در فایلی که کد ویرایش قرار داره بگزارم


<input type='hidden' name='tId' value='{$row['id']}'>

mtchabok
سه شنبه 20 دی 1390, 01:37 صبح
نه عزیز

<input type='hidden' name='tId' value='{$row['id']}'>
این کد رو در فایلی که فرم ویرایش رو داری قرار بده .
می تونی یه کار دیگه هم بکنی فرم ویرایشت رو در اینجا بزار تا برات درستش کنیم .

hamidhassas
پنج شنبه 22 دی 1390, 09:35 صبح
نه عزیز

<input type='hidden' name='tId' value='{$row['id']}'>
این کد رو در فایلی که فرم ویرایش رو داری قرار بده .
می تونی یه کار دیگه هم بکنی فرم ویرایشت رو در اینجا بزار تا برات درستش کنیم .

این کد رو در فرم ویرایش خودم قرار دادم وی جواب نداد
اصل کد های خودم رو برای دانلود می گزارم عزیزان ببیندید مشکل از کجاست.

http://www.hassas-computer.com/Download/PHP_Code/Edite_PHP_Code_Archive.zip

hamidhassas
جمعه 23 دی 1390, 09:17 صبح
chera?????

mtchabok
جمعه 23 دی 1390, 12:39 عصر
عزیزم این فایل edit_record_news.php که ویرایش شد :

<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<p>
<body>
<?php
$id=$_GET['m'];
print $id;
include '../config.php';
connect($user,$pass,$Mydb);
mysql_query('SET NAMES \'utf8\'');
$read_sql= "select * from news where id=$id";
$tab=mysql_query($read_sql);
$row=mysql_fetch_array($tab);
mysql_close ($con);

?>

<table border="0" width="100%" height="100%">
<tr>
<td>
<form action="update_news_code.php" method="post"><table width="100%" border="0">
<input type='hidden' name='tId' value='<?php echo $id; ?>' >
<tr>
<td align="center" colspan="2">نمایش جزئی خبر</td>
</tr>
<tr>
<!---------کد نمایش تاریخ------->
<td width="29%"><input name="tDate" type="text" id="tDate" value="
<?php print $row[6]; ?>">
:
تاریخ</td>
<!---------کد نمایش تاریخ------->
<td width="71%" align="right"><input name="tSubject" type="text" id="tSubject" dir="rtl" value="<?php print $row[1]; ?>" size="60">
موضوع خبر</td>
</tr>
<tr>
<td align="right"colspan="2">متن خبر</td>
</tr>
<tr>
<td align="center" colspan="2" rowspan="1"><label for="textarea"></label>
<?php
include '../Script/script.php';
?><textarea name="tText" id="tText" cols="100%" rows="15" dir="rtl"><?php print $row[2]; ?></textarea></td>
</tr>
<tr>
<td align="center" colspan="2">متن کامل خبر</td>
</tr>
<tr>
<td align="right"colspan="2">متن خبر</td>
</tr>
<tr>
<td align="center" colspan="2" rowspan="1"><label for="textarea"></label>
<?php
include '../Script/script.php';
?><textarea name="tText2" id="tText2" cols="100%" rows="25" dir="rtl"><?php print $row[3]; ?></textarea></td>
</tr>
<td align="right"><input type="submit" name="button" id="button" value="ارسال"></td>
<td align="right"><label for="textfield2"></label>
<input name="tLink" type="text" id="tLink" dir="rtl" value="<?php print $row[4]; ?>" size="30">
منبع:</td>
</tr>
</table>
</form>
</body>
</html>

hamidhassas
شنبه 24 دی 1390, 16:20 عصر
عزیز دلم فایل update_news_code.php مشکل داره و درست کار نمی کنه

ravand
شنبه 24 دی 1390, 16:30 عصر
سلام داداش
اين كدي هست كه من قبلا براي update نوشتم . تستش كن اگه مشكل داشت خبرم كن تا مشكلش رو حل كنم .
ديتابيس و جدول و فيلد رو جايگزين كن.
80770