Sunday, July 8, 2012

Update Delete :)

මේ post එකෙන් කට්ටියට කියලා දෙන්න යන්නේ කලින් හදපු Table එකට Update එකකුයි Delete එකකුයි දාන විදිය ගැන.

මුලින්ම View Table එකට 'update' ,' delete' කියලා link 2ක් දාගමු.  මං ඒකට view.php එකම වෙනස් කරා මේ විදියට.
while ($row = mysql_fetch_array($result)) {
    echo "<tr>";
    echo "<td>" . $row['name'] . "</td>";
    echo "<td>" . $row['address'] . "</td>";
    echo "<td>" . $row['birthday'] . "</td>";
    echo "<td>" . $row['phone'] . "</td>";
    echo "<td><a href='#'>Update</a></td>";
    echo "<td><a href='#'> Delete</a></td>";
    echo "</tr>";
}
Update / Delete links in view table
Update / Delete links in view table


දැන් Update එකට පොඩි Form එකක් හදාගෙන ඉමු. මං කරන්න යන්නේ අපේ Table එකේ Edit කරන්න ඕනි Row එක Click කරාම ඒ Data ටික විතරක් එක Form එකකට දාන්න.එතනින් අපිට Data වෙනස් කරගෙන Update කරගන්න පුලුවන්.

ඇත්තටම මං මේ කරන විදිය හරිම Standard විදිය කියලා කියන්න බෑ. තව එක එක විදි  ඕන විදියකට මේ වැඩේ කරගන්න පුලුවන්. වැදගත් වෙන්නේ  Logic එක අල්ලගන්න එක. ඊට පස්සේ අපිට කැමති විදියට code කරන්න පුලුවන්...!!

හරි දැන් මේ update link එකත් එක්ක අදාල row එක අදුරගන්න ID එක pass කරගන්න ඕනි. (මේ නිසා තමයි ID එක Primary කරන්න ඕනි. Primary coloumn එකක, එක වගේ data 2ක් (Duplicate values) තියෙන්න බෑ.)
view.php page එකේ link එකත් එක්ක මේ ID එකත් pass කරමු. එතකොට මෙහෙම එනවා.

update.php?id=1

ඒත් මේ id එකේ value එක, එකින් එක දෙන්න බෑනේ. Dynamically මේක දෙන්න ඔිනි. ඒක මේ විදියට කරන්න පුලුවන්.
while ($row = mysql_fetch_array($result)) {
    echo "<tr>";
    echo "<td>" . $row['name'] . "</td>";
    echo "<td>" . $row['address'] . "</td>";
    echo "<td>" . $row['birthday'] . "</td>";
    echo "<td>" . $row['phone'] . "</td>";
    echo "<td><a href='update.php?id={$row['id']}'>Update</a></td>";
    echo "<td><a href='#'> Delete</a></td>";
    echo "</tr>";
}



හැම update link එකකම Id එක වෙනස් වෙනවා දැන් බලාගන්න පුලුවන්.

මේ විදියට ඔිනම file එකකට data pass කරගන්න පුලුවන්. ඒ file එකේදි echo කරත් අපි pass කරපු value එක බලාගන්න පුලුවන්.

දැන් Update එකට update.php කියලා file එකක් හදාගෙන පොඩි Form එකක් හදාගමු. මේකට අපිට Data Insert කරන්න යොදා ගත්ත Form එකම භාවිතා කරන්න පුලුවන්. ඒකේ Textfield හැම එකකම Value එක විදියට ඒ Row එකට අදාල Data display කරගමු. update.php කියලා file එකක් හදාගත්ත නම් දැන් ඒකට insert.php file ඒකේ තියෙන සම්පූර්ණ CODE එකම paste කරගන්න.

View.php එකෙන් update.php එකට pass කරගත්ත id එක යොදා ගෙන ඒ id එකට අදාල row data ටික ගමු.

form එකට උඩින් database connection එක හදාගෙන id එක pass කරලා අදාල data ටික array එකකට ගමු.
අනිත් page එකෙන් (url එකෙන්)  එන  value ගන්න මේ tag එක use කරන්න ඕනි.

$_REQUEST['id']

දැන් මේ විදියට code එක  වෙනස් කරගන්න.

<?php
  //connecting database
$con = mysql_connect("localhost", "root", "") or die('Cannot connect to the database');
mysql_select_db('phpblog', $con) or die('cannot select the  database');
$result = mysql_query("select * from register where id = {$_REQUEST['id']}");
$row = mysql_fetch_array($result);
?>
<form action="" method="post" name="update_form">

    <table>
        <tr>
            <th>Name :</th>
            <td> <input type="text" name="fname" class="textfield" value="<?php echo $row['name'] ?>"/></td>
        </tr>
        <tr>
            <th>Address :</th>
            <td>  <input type="text" name="faddress" class="textfield" value="<?php echo $row['address']?>"/></td>
        </tr>
        <tr>
            <th>Birthday :</th>
            <td> <input type="text" name="fbirthday" class="textfield" value="<?php echo $row['birthday']?>"/></td>
        </tr>
        <tr>
            <th>Phone No :</th>
            <td> <input type="text" name="fphone" class="textfield" value="<?php echo $row['phone']?>"/></td>
        </tr>
        <tr>
            <th> </th>
            <td><input type="submit" name="update" value="update"/></td>
        </tr>

    </table>


</form>






දැන් ඕනම row එකක update එක click කරාම update.php එකට යනවා. ඒකේ text filed වලට අපි click කරපු row එකේ values set වෙලා තියෙනවා බලාගන්න පුලුවන්.

ඊලගට කරන්න ඹ්නි දේ තමයි Update click කරාම අපි අලුතෙන් ගහපු value ටික save වෙන්න ඕනි.

මේක කරන්න ඕනිත් කලින් විදියටම Data ටික request කරගෙනමයි.  connection එක මුලින් හදාගෙන තියෙන නිසා අපිට එක සැරේම update query එක run කරවන්න පුලුවන්.
<?php
if (isset($_POST['update'])) { // cheking whether form is submitted
    $name = $_POST['fname']; // getting the name
    $address = $_POST['faddress']; //getting the address
     $birthday = $_POST['fbirthday']; //getting the birthday
    $phone = $_POST['fphone']; // getting the phone no
    

     mysql_query("update register set name = '$name', address = '$address', birthday = '$birthday', phone = '$phone' where id = {$_REQUEST['id']}");
     
}
?>
<div class="link">
    <a href="view.php">View Data</a>
</div>

දැන් update එක නම් හරි. ඔහොම්ම Delete එකත් කරමු. :)

ඒකෙ නම් එච්චර දෙයක් නෑ...  අපි කලින් හදපු delete link එකට මං "did" කියලා නිකන් නමක් pass කරනවා. මේ වගේ..


while ($row = mysql_fetch_array($result)) {
    echo "<tr>";
    echo "<td>" . $row['name'] . "</td>";
    echo "<td>" . $row['address'] . "</td>";
    echo "<td>" . $row['birthday'] . "</td>";
    echo "<td>" . $row['phone'] . "</td>";
    echo "<td><a href='update.php?id={$row['id']}'>Update</a></td>";
    echo "<td><a href='?did={$row['id']}'> Delete</a></td>";
    echo "</tr>";
}

හොදට බැලුවනම් පේනවා ඇති මං update එකේ වගේ නෙවෙයි මං file name එකක් දාන් නැතුව නිකන්ම 
?did={}  කියලා දාලා තියෙනවා. මේකෙන් වෙන්නේ ඒ page එකටම අදාල value එක pass වෙන එකයි.
දැන් පුලුවන් අපිට did value එක  set වෙලා තියෙනවද කියලා බලලා ඒ file එකේ ඉදන්ම 
delete query එක run කරන්න.
<?php


if(isset($_REQUEST['did'])){
   $delete_query =  mysql_query("delete from register where id = {$_REQUEST['did']}");
    
    if($delete_query){
        echo "Record Deleted";
    }
}

දැන් බලන්න run කරලා update එකයි delete එකයි ලස්සනට වැඩ කරයි. මොනා හරි පූශ්න තියෙනවනම් අහන්න comments වලින්. අනිවා උත්තර දෙනවා. පහල link එකෙන් files ටික බාගන්න. තව post එකකින් set වෙමු.

http://www.mediafire.com/?gebezueeyv5gjqi