اضافه کردن و ویرایش هم زمان اطلاعات بازديد ها: 726 , پاسخ ها: 9
با سلام.جدولی دارم که کاربر زمانی که می خواهد اطلاعات را ویرایش کند علاوه بر اینکه اطلاعات بانک برای ویرایش نمایش داده می شوند چند ردیف دیگر در پایین جدول ایجاد می شوند که کاربر می تواند علاوه بر ویرایش اطلاعات قبلی، این ردیف ها را نیز پر کند.
مشکلی که دارم این استکه چگونه باید از دستورات iNSERT و Update استفاده کنم که هر دو کار فوق (ویرایش قبلی ها- اضاف شدن موارد جدید)با هم انجام گیرد.
با تشکر
[ تبليغات ] سیستم فروش e-book سیستم فروش آنلاین کتاب و جزوه الکترونیکی و ... دقيقا متوجه منظورتون نشدم...
خب مگه تعدادي فيلد براي ويرايش و تعدادي براي درج نيست؟فيلد هاي درج رو جدا گانه تحليل كنيد و فيلدهاي ويرايش رو جداگانه
اگه منظورتون اين نيست فرم اچ تي ام ال اش رو بذاريد تا بهتر متوجه بشم
فکر مي کنم اگه رو همين چند کلمه راهنماييتان بيشتر فکر کنم. مشکل حل بشه .تا حالا که همه راهنمايي هاتون مشکلات رو حل کرده.موفق باشيد
سلام.متاسفانه هر کار مي کنم يا عمل INSERT رو انجام مي ده يا UPDATE:
لطفا بررسي و راهنمايي کنيد:
( توضيح اضافي :فرم ورود اطلاعات به گونه اي استکه زمانيکه ديتا وارد ديتابيس مي شوند ممکن است چند Id يکسان مربوط به يک کاربر مشخص وارد شوند که البته فيلد Number جهت تمايز اساسي تر به صورت خود افزايشي تعريف شده است.يعني لازمه يک جدول با ساختار زير داشته باشين که اطلاعات به نحوي در اون قرار گرفته باشه که مثلا 1d شماره يک چند بار تکرار شده باشه اماNumber متفاوت باشه.براي اين Id قراره کارهاي زير انجام بشه)
1- Id در فرم Add_Edit_Form وارد مي شود.
2-مي خواهم فرم ADD_Edit علاوه بر اينکه تمام اطلاعات مربوط به آن Id را جهت ويرايش نشان مي دهد چند سطر خالي جهت اضافه نمودن اطلاعات جديد مربوط به همين Id را نيز نمايش دهد .
3-اسکريپت MKeditId نيز مي خواهم به گونه اي عمل کند که علاوه بر آپديت کردن اطلاعات قبلي ، به طور همزمان اطلاعات جديد فرم فوق (يعني فرم ADD_Edit)را نيز با همان Id وارد نمايد.
ساختار جدول:
Field Type Null Default
Number int(11) No
Id int(11) No
Name varchar(12) No
Family varchar(20) No
City varchar(10) No
Country varchar(10) No
متشکرم
config:
کد: انتخاب همه <?php $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = ''; $dbname = 'Array'; $connect = mysql_connect ($dbhost, $dbuser, $dbpass) OR die (mysql_erorr()); mysql_select_db ($dbname, $connect)OR die (mysql_erorr()); ?>Add_Edit_Form:
کد: انتخاب همه <html> <head> <link href="style.css" rel="stylesheet"> </head> <body> <table align="center" id="tablet" width="27%" > <tr> <td id="main">Enter Your Id And Click Add_EDIT </td> </tr> <tr> <td class='text'><form method='POST' action='Add_Edit.php'><p align='center'> Your ID :<input type="text" name="Id" size="5"> <input type='submit' value='Add_EDIT' class='btn'></p> </form></td> </tr> </table> </form> </table>Add_Edit:
کد: انتخاب همه <html> <head> <link href="style.css" rel="stylesheet"> <title> Learn : Array </title> </head> <body> <table width="55%" align="center" cellspacing="1" id="tablet" > <tr> <td id="main">Name</td> <td id="main">Family</td> <td id="main">City</td> <td id="main">Country</td> </tr> <?php include"config.php"; $query=mysql_query("SELECT * FROM `learn` WHERE Number='$Number' "); while($row=mysql_fetch_array($query)){ $Number=$row[Number]; $Id=$row[Id]; $Name=$row[Name]; $Family=$row[Family]; $City=$row[City]; $Country=$row[Country]; echo ('<form method="POST" action="MkeditId.php">');?> <input type='hidden' name='Number[]' value="<?php echo"$Number";?>"</td></td> <input type='hidden' name='Id[]' value="<?php echo"$Id";?>"</td></td> <tr> <td id='tmain'><input type='text' name='Name[]' value="<?php echo"$Name";?>"</td> <td id='tmain'><input type='text' name='Family[]' value="<?php echo"$Family";?>"</td> <td id='tmain'><input type='text' name='City[]' value="<?php echo"$City";?>"</td> <td id='tmain'><input type='text' name='Country[]' value="<?php echo"$Country";?>"</td> </tr> <?php } ?> <tr> <td id='tmain'><input type='text' name='Name[]' ></td> <td id='tmain'><input type='text' name='Family[]' ></td> <td id='tmain'><input type='text' name='City[]'> </td> <td id='tmain'><input type='text' name='Country[]' ></td> </tr> <tr> <td id='tmain'><input type='text' name='Name[]'> </td> <td id='tmain'><input type='text' name='Family[]' ></td> <td id='tmain'><input type='text' name='City[]' ></td> <td id='tmain'><input type='text' name='Country[]' ></td> </tr> <?php echo('<input type="hidden" name="Id" value="'.$Id.'">'); echo('<table width="35%" border="0" align="center" ><tr><div align="center"><input type="submit" value="Add_Edit" name="B1" class="btn"><input type="reset" value="Reset" class="btn"></p> </tr></form>'); ?>MkeditId:
کد: انتخاب همه <?php include "config.php"; $Data =array( n=>($_POST['Number']),i=>($_POST['Id']),na=>($_POST['Name']),f=>($_POST['Family']),c=>($_POST['City']),co=>($_POST['Country'])); $Howmany=count($_POST['Name']); $i=0; while($i<$Howmany) { $Number=$Data["n"][$i]; $Id=$Data["i"][$i]; $Name=$Data["na"][$i]; $Family=$Data["f"][$i]; $City=$Data["c"][$i]; $Country=$Data["co"][$i]; $EditData = "UPDATE `learn` SET Name='$Name', Family= '$Family',city='$City',country='$Country' where Id='$_POST[Id]' "; $result = mysql_query($EditData) or die(mysql_error()); $i++; } if($EditData){ echo "<p class='text'>Your data is Edit Sucsesfull"; } else{ echo "<p class='text'>There Is a Problem.Please Try Again"; } ?>سلام بچه ها،
ببين بهرام جان، شما يه input به نام []Id داري و يکي هم به نام Id تا اينجا مشکل داره و مشکل اينه که php مقدار Id بعد از اونه رو روي مقادير []Id مي نويسه چون همنامند.
براي حل مشکل اين نام رو عوض کن.
حالا چطوري هم update کني و هم insert.
اگه توي جدولت فيلد auto increment نداشته باشي که مي توني از Replace Into استفاده کني.
اگه هم داشته باشي مثل الآن اون مقادير input ي که Id اونا مقدار داره يعني چيزي به جز صفر، خوب بايد update بشن و بقيه هم insert.
بعد کل ماجرا رو هم بذار توي يه حلقه foreach
کد: انتخاب همه foreach( $_POST as $id => $val) { ... }موفق باشي.
در راستاي بخش اول راهنمايي ات ، فيلد Number از نوع auto increment رو داشتم كه در اسكريپت در دستور Update به جاي where Idنوشتم :
کد: انتخاب همه Where Number='$Number'اما نتونستم مشکلم رو با update و insert حل کنم.روشهاي مختلفي رو امتحان کردم نشد.ضمنا نمي دونم منظورتون اين بود :
کد: انتخاب همه if ($Id!=0){ لطفا بيشتر توضيح بدين يا اگه ممکنه کد MkeditId من رو اصلاح کنين.
سلام،
ببین اون ردیف هایی که با جاوا اسکریپت اضافه میشن، input مخفی که واسه id ش گذاشتی، مقدار صفر دارن.
بعد توی اون حلقه ای که همه input ها رو توی php بررسی میکنی، اونایی که id شون صفر هست insert میشن و بقیه update میشن. یه چیزی شبیه همین چیزی که گفتی..
شما زحمت می کشید و راهنمایی می کنید که جای تشکر داره اما راستش هنوز نتونستم این مشکل رو حل کنم.
ظاهرا یه کمی برا فکر کردن پیر شدم !!!
به نظرم مجتبی کامل توضیح داده و کد کاملترش این میشه :
کد: انتخاب همه foreach($post as $key=>$value){ if($key==0){ // insert action }else{ // update action } }البته موقع update میتونی تو Query از IN استفاده کنی یا اگه ردیف های آپدیت مشخصه تو کدت از in_array استفاده کنی و قبلش مقایسه کنی که ببینی Id وجود داره یا نه.
ضمن سلام.از راهنمایی خوبتان متشکرم.مشکلم رفع شد.موفق باشید