View Full Version : سوال: طريقه ي حذف ركورد قبلي
ravand
شنبه 19 آذر 1390, 14:01 عصر
سلام
من ميخوام وقتي يه ركوردي رو در ديتابيس ثبت ميكنم ركورد قبلي من حذف بشه . آيا اين كار رو ميشه با خود mysql انجام داد؟ يا بايد از php كمك بگيرم؟ميشه راهنمايي كنيد؟
متشكرم.
AMIBCT
شنبه 19 آذر 1390, 14:07 عصر
در MySQL دستور Replace Into این کار رو انجام میده
البته اگر با توضیحات ناقص شما درست متوجه شده باشم
ravand
شنبه 19 آذر 1390, 14:14 عصر
بذاريد بيشتر براتون توضيح بدم. من الان ميخوام يه متني رو مثلا براي يه فيلدي در ديتابيس ارسال كنم وقتي ارسال كردم بار بعد كه بازم ارسال ميكنم ميخوام اين متني كه براي بار دوم ارسال كردم جاي اون متن قبلي رو در فيلد بگيره. اينم بگم كه من از phpmyadmin استفاده ميكنم.
يعني هر باري كه متن براي اون فيلد در ديتابيس ارسال شد جاي متن قبليش رو بگيره .
متشكرم.
AMIBCT
شنبه 19 آذر 1390, 23:27 عصر
توضیحاتتون با دفعهی اول تفاوتی نداره
اگر منظور شما اینه که میخواهید با هر بار ارسال محتوای یک ردیف از جدول رو تغییر بدید
همون دستور Replace Into برای این کار است
اگر ردیف مورد نظر وجود نداشته باشد، آن را ایجاد میکند و اگر وجود داشته باشد آن را بهروزرسانی میکند
البته باید فیلد کلیدی شما در بهروزرسانی مشخص شود تا بداند که کدام ردیف منظور شماست
ravand
یک شنبه 20 آذر 1390, 09:00 صبح
من ديگه نميدونم چجوري توضيح بدم توضيحات من خيلي واضح هست.
ببينيد ما يك فيلد توي جدول از يه ديتابيس داريم . و جز اين يك فيلد فيلدي ديگري نداريم. وقتي يه مطلبي توش ريخته ميشه و براي بار بعدي هم مطلبي توش ميريزيم اين مطلب جديد توي همين فيلد جاي مطلب قبلي رو ميگيره . و وقتي مطلب جديد ارسال ميشه ركورد جديدي ايجاد نميشه. و با هر بار ارسال مطلب بازم همين يك ركورد باقي ميمونه. حالا اگه اين Replace Into كه گفتيد جواب سوال من باشه چجوري بايد ازش استفاده كنم؟
AMIBCT
یک شنبه 20 آذر 1390, 11:55 صبح
اگر ردیف وجود داشته باشد دستور Update هم این کار را انجام میدهد
اگر نمیدانید که ردیف هست یا نه دستور Replace Into
آموزش این دو دستور هم اگر جستجو کنید به راحتی پیدا میشود
ravand
یک شنبه 20 آذر 1390, 13:15 عصر
من ميخوام در واقع يه عكس به ديتابيسم بفرستم . و هر عكس جديدي كه ارسال ميشه جاي عكس قبلي رو بگيره. براي همين از روش زير استفاده كردم ولي متاسفانه هر باري كه يه عكس جديد ارسال ميكنم به جاي اينكه روي عكس قبلي ذخيره بشه و عكس قبلي پاك بشه ، يكي اضافه ميشه :
$sql = "REPLACE INTO images (imageData) VALUES ('$imageData')";
اينم تمام كدهاي من:
<?php
$link = mysql_connect('localhost', 'root', '');
if (!$link) {
die('Not connected : ' . mysql_error());
}
$db_selected = mysql_select_db('cms2', $link);
if (!$db_selected) {
die ('Database error : ' . mysql_error());
}
$maxFileSize = "20000";
$image_array= array("image/gif");
$fileType = $_FILES['userfile']['type'];
if($_POST['Submit'])
{
if (in_array($fileType, $image_array))
{
if(is_uploaded_file($_FILES['userfile']['tmp_name']))
{
if($_FILES['userfile']['size'] < $maxFileSize)
{
$imageData =addslashes (file_get_contents($_FILES['userfile']['tmp_name']));
$sql = "REPLACE INTO images (imageData) VALUES ('$imageData')";
mysql_query($sql) or die(mysql_error());
$msg = ".تصوير با موفقيت آپلود شد";
}
else
{
$msg = ' . حجم فايل بيش از حد مجاز است ';
}
}
}
else
{
$msg = '.باشد gif تصوير شما بايد با فرمت ';
}
}
?>
<html>
<body>
<span style="color:#FF0000"><?php echo $msg; ?></span><br />
<h3>.باشد gif تصوير شما بايد حداكثر 20 كيلو بايت و با فرمت </h3>
<form enctype="multipart/form-data" action="" method="post">
<input name="userfile" type="file" /> <br>
<input type="submit" value="Submit" name="Submit"/>
</form>
</body>
</html>
AMIBCT
یک شنبه 20 آذر 1390, 13:48 عصر
برای اینکه بتوانید از دستور Replace استفاده کنید
علاوه بر فیلد مقدار اصلی، فیلد کلید رو هم باید ارسال کنید
طوری که سیستم بدونه محتوای شما باید جایگزین کدام ردیف بشود
مثلا این طوری:
$sql = "REPLACE INTO images ( id, imageData ) VALUES ( 1, '$imageData' )";
یا با کمک Update:
$sql = "UPDATE images SET imageData = '$imageData' WHERE id = 1";
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.