كار با ديتابيس ها (فايل)
اگه شما به ديتابيس هاس اس كيو ال مثل ماي اس كيو ال و اوراكل دسترسي نداريد ميتونيد از ديتابيس هاي DBM استفاده كنيد حتي اگه شما اگه نداشته باشينش پي اچ پي اون رو براي شما شبيه سازي ميكنه و به شما اجازه ميده داده هاتون رو توش ذخيره كنيد و بازيابي كنيد شون .
در ضمن شما نياز به استفاده از دستورات اس كي ال نداريد چون بسيار راحت و انعطاف پذير هستن .
در اين بخش ياد ميگيريم چطور :
يك ديتابيس DBM رو باز كنيم
چگونه داده را وارد كنيم
چگونه داده را فراخواني كنيم
چگونه تغيير ايجاد كنيم يا داده هارا پاك كنيم
چگونه داده هاي پيچيده اي را وارد ديتا بيس كنيم
باز كردن ديتا بيس :
با استفاده از دستور dbmopen() شما ميتونيد ديتا بيس را باز كنيد و اين تا بع دو آرگومان ميگيره
يكي مسير ديتابيسمون و ديگري نوع دسترسي به ديتا بيس كه نوع دسترسي ها به اين شكل هست
توضيح نوع دسترسي
در حالت فقط خواندي r
براي خواندن و نوشتن w
ساختن ديتابيس و اگر وجود دارد براي خواندن و نوشتن c
ساخت يك ديتابيس جديد n
با استفاده از دستور زير اگر ديتابيسي با اين نام وجود نداشته باشد باز ميشود :
PHP:
$db = dbmopen( "./products", "c" ) or die( "Couldn't open DBM" );
وقتي كارمون با ديتا بيس تموم شد با استفاده از دستور زير ديتابيس رو ميبنديم .
PHP:
dbmclose($db);
اضافه كردن اطلاعات به ديتابيس :
به مثال زير توجه كنيد :
PHP:
<?php
$db=dbmopen("./users","c") or die("Could not open DBM");
dbminsert($db,"PersianTools.com","30000");
dbminsert($db,"IranVig.com","6000");
dbminsert($db,"CodeVig.com","100");
dbmclose($db);
?>
PHP:
<?php
$db=dbmopen("./users","c") or die("Could not open DBM");
dbmreplace($db,"PersianTools.com","464420");
dbmreplace ($db,"IranVig.com","62351");
dbmreplace ($db,"CodeVig.com","6463");
dbmclose($db);
?>
PHP:
$users=dbmfetch($db,"PersianTools.com");
PHP:
<table border=1 cellpadding ="5">
<tr>
<td align="center"> <b>product</b></td>
<td align="center"> <b>price</b> </td>
</tr>
<?php
$db = dbmopen( "./users", "c" ) or die( "Couldn't open DBM" );
$key = dbmfirstkey( $db );
while ( $key != "" )
{
$value = dbmfetch( $db, $key );
print "<tr><td align = \"left\"> $key </td>";
print "<td align = \"right\"> \$$value </td></tr>";
$key = dbmnextkey( $db, $key );
}
dbmclose( $db);
?>
</table>
حالا شايد سوال پيش بياد كه چجوري بفهميم دادمون قبلا تو ديتا بيس وارد شده يا نه ؟؟
PHP:
if ( dbmexists( $db, "PersianTools.com" ) )
print dbmfetch( $db, " PersianTools.com " );
PHP:
dbmdelete($db,"PersianTools.com");
اضافه كردن يك مقدار پيچيده به ديتابيس :
PHP:
$array = array( 1, 2, 3, 4 );
$db = dbmopen( "./ test", "c" ) or die("Couldn't open test DBM");
dbminsert( $db, "arraytest", $array );
print gettype( dbmfetch( $db, "arraytest" ) );
PHP:
<?php
$products = array("PersianTools.com" => array( users=>"2200",stats=>"1500", color=>"blue" ),
"Iranvig.com" => array( users=>"2213",stats=>"1234",color=>"blue" )
);
$db = dbmopen( "./test", "c" ) or die("Couldn't open products DBM");
while ( list ( $key, $value ) = each ( $products ) )
dbmreplace( $db, $key, serialize( $value ) );
dbmclose( $db );
?>
</table>
PHP:
<?php
$dbh = dbmopen( "./users", "c" ) or die("Couldn't open test DBM");
if ( isset ( $delete ) )
{
while ( list ( $key, $val ) = each ( $delete ) )
{
unset( $prices[$val]);
dbmdelete( $dbh, $val );
}
}
if ( isset ( $prices ) )
{
while ( list ( $key, $val ) = each ( $stats ) )
dbmreplace( $dbh, $key, $val );
}
if ( ! empty( $name_add ) && ! empty( $stats_add ) )
dbminsert( $dbh, "$name_add", "$stats_add" );
?>
<html>
<body>
<form action="<? print $PHP_SELF; ?>" action="POST">
<table border="1">
<tr>
<td>delete</td>
<td>Users</td>
<td>stats</td>
</tr>
<?php
$key = dbmfirstkey( $dbh );
while ( $key != "" )
{
$price = dbmfetch( $dbh, $key );
print "<tr><td><input type='checkbox' name=\"delete[]\" ";
print "value=\"$key\">$/td>";
print "<td>$key</td>";
print "<td> <input type=\"text\" name=\"prices[$key]\" ";
print "value=\"$stat\"> </td></tr>";
$key = dbmnextkey( $dbh, $key );
}
dbmclose( $dbh );
?>
<tr>
<td> </td>
<td><input type="text" name="name_add"></td>
<td><input type="text" name="stats_add"></td>
</tr>
<tr>
<td colspan=3 align="right">
<input type="submit" value="amend">
</td>
</tr>
</table>
</form>
فكر ميكنم اين سوال براتون پيش بياد كه چه موقع بايد از اين نوع ذخيره داده استفاده كنيم :
خوب بايد بگم زماني كه داده هاي كمي برا ذخيره كردن داريد ميتونيد از اين روش استفاده كنيد كه خيلي روش ساده اي هست و بدرد بخور .
اميدوارم لذت برده باشيد .
_______
مهدی صفری