سایت خود را بسازید ، به روش saalek110

saalek110

Well-Known Member
صفحه ۳۶:
ادامه بحث آپلود
و سپس ابزارهای کار با دیتابیس



نرم افزار KSWEB

 
آخرین ویرایش:

saalek110

Well-Known Member
اهمیت بک آپ:

من یکی دو روز پیش از دیتابیس و فایلها ، بک آپ گرفتم.
امروز اشتباهی ، در فایل منیجر هاست ، یک فایل سایت را دیلت کردم.
اگر بک آپ نبود ، باید کل فایل را از اول می نوشتم و خیلی کار رنج آوری بود.

پس توصیه می کنم هر چند وقت یک بار از فایلهای خود کپی بگیرید. ولو ناقص. مثل save بازی می مونه. از اونجا دوباره بازی می کنید نه از اول.

شاید بهتر باشه هر وقت روی فایلی کار می کنید ، دانلودش بکنید و بریزید روی فایل قدیمی اش در بک آپ فایلهای سایت در دستگاهتان.
 
آخرین ویرایش:

saalek110

Well-Known Member
در کد پست بعدی ، وقتی فایل آپلودی عکس باشد ، اطراف لینک Img می گذارد و اگر غیرعکس باشد ، بدون ‌‌img ، لینک را چاپ می کند.
قسمت آخر کد این نقش را دارد.
 
آخرین ویرایش:

saalek110

Well-Known Member
کد زیر ، کد بعد کد آپلود است:
PHP:
    $my_loci=$_SERVER['SERVER_NAME']; 
            $link1="http://".$my_loci."/forum/images" ;   
if ($_FILES["fileToUpload"]["type"]=="image/jpeg"  )
{
    if ($my_option==1){
      $pattern = "/.jpe?g/i";
    $cleaned_base_name=preg_replace($pattern, "", $base_name);     
  rename($target_file,   "../".$cleaned_base_name."_n".$number.".jpg");
    $link2=$link1."/".$cleaned_base_name."_n".$number.".jpg";
    }  // option1
 if ($my_option==2){
  rename($target_file, "../n".$number.".jpg");
  $link2=$link1."/n".$number.".jpg";
      }  // option=2
}   // jpg

if ($_FILES["fileToUpload"]["type"]=="image/png"  )
{
        if ($my_option==1)
        {
  $pattern = "/.png/i";
     $cleaned_base_name=preg_replace($pattern, "", $base_name);     
 rename($target_file,   "../".$cleaned_base_name."_n".$number.".png");
                            $link2=$link1."/".$cleaned_base_name."_n".$number.".png";

        }  // option1
 if ($my_option==2){ 
  rename($target_file, "../n".$number.".png");
    $link2=$link1."/n".$number.".png";
         }  // option2
}   // png
if ($_FILES["fileToUpload"]["type"]=="image/gif"  )
{
   if ($my_option==1)
    {
      $pattern = "/.gif/i";
      $cleaned_base_name=preg_replace($pattern, "", $base_name);     
  rename($target_file,   "../".$cleaned_base_name."_n".$number.".gif");
                        $link2=$link1."/".$cleaned_base_name."_n".$number.".gif";
    }  // option1

  if ($my_option==2){     
  rename($target_file, "../n".$number.".gif");
    $link2=$link1."/n".$number.".gif";
  }  // option 2
}   //  gif

//================================

if ($_FILES["fileToUpload"]["type"]=="application/zip"  )
{
    if ($my_option==1){
      $pattern = "/.zip/i";
    $cleaned_base_name=preg_replace($pattern, "", $base_name);     
  rename($target_file,   "../".$cleaned_base_name."_n".$number.".zip");
    $link2=$link1."/".$cleaned_base_name."_n".$number.".zip";
    }  // option1
 if ($my_option==2){
  rename($target_file, "../n".$number.".zip");
  $link2=$link1."/n".$number.".zip";
      }  // option=2
}   // zip
//=============================
//=============================
if ($_FILES["fileToUpload"]["type"]=="application/pdf"  )
{
    if ($my_option==1){
      $pattern = "/.pdf/i";
    $cleaned_base_name=preg_replace($pattern, "", $base_name);     
  rename($target_file,   "../".$cleaned_base_name."_n".$number.".pdf");
    $link2=$link1."/".$cleaned_base_name."_n".$number.".pdf";
    }  // option1
 if ($my_option==2){
  rename($target_file, "../n".$number.".pdf");
  $link2=$link1."/n".$number.".pdf";
      }  // option=2
}   // zip


//======================
echo"<center>";
echo"<br>";
$d_type=$_FILES["fileToUpload"]["type"];
if ($d_type=="image/jpg" || $d_type=="image/png" || $d_type=="image/gif")
{
echo $link2;
echo"<div id='link_img'>";
echo"[Img]".$link2."[/Img]";
echo"</div>";
}  // if image
else
{
echo"<div id='link_img'>";
echo $link2;
echo"</div>";
}  // if not image
echo"<br>";
echo"<br>";

در مورد آپشن برنامه قبلا گفتم ، کاربر در فرم آپلود با تیک زدن یک چک باکس ، انتخاب می کند که نام برنامه حفظ شود یا نه.

در کد بالا ، برای ۵ نوع فایل ، کد تکراری داریم. ۳ نوع عکس و زیپ و pdf.
 

saalek110

Well-Known Member
در مورد کد زیر:
PHP:
$d_type=$_FILES["fileToUpload"]["type"];

متغیر d_type ساختگی من است تا اون عبارت دراز ، ۳ بار در خط بعدی چاپ نشود.
بعضی مواقع فقط بخاطر کوتاهی خط ای کار را نمی کنیم. گاهی کوتیشن های عبارت مزاحم است و برایش یک متغیر جایگزین می سازیم.

Screenshot_۲۰۲۴-۰۹-۲۶_۰۹۲۱۲۹.jpg

در عکس بالا نتیجه اجرا را می بینیم. اسم فایل اصلی n2.jpg است که قبلا در هاست آپلود کرده بودم ، دانلود کردم تا دوباره آپلود کنم و آپلود را تست کنم.
می بینید که چون نوع فایل عکس بوده ، تگ img اضافه شده.و شماره ۱۵ بهش داده شده.
تمام فایلها شماره سریال یکسان دارند و فقط پسوندها فرق داره ، مثلا فایل بعدی اگر pdf باشه شماره 16 بهش اختصاص داده میشه ولی پسوند pdf خواهد داشت.

با افزوده شدن آپلود به فروم من ، دیگه کمبودی ندارد و میشه درش فعالیت کرد. در مورد سایز عکس هم باید ببینم چه کار میشه کرد.
 
آخرین ویرایش:

saalek110

Well-Known Member
تگ عکس دارای تنظیم سایز در صفحه آپلود:

کد زیر در صفحه آپلود ، جای خط مشابه خود قرار بگیرد:

PHP:
echo"[img]".$link2."[img_m]"."width:400px;height:auto; "."[/img]";

و ۳ خط زیر در فایل str replace قرار می گیرد:

PHP:
     $post=str_replace("[img]","<img src='",$post);
     $post=str_replace("[img_m]","' style='",$post);
     $post=str_replace("[/img]","' >",$post);

با این کدها ، کاربر در ادیتور می تواند سایز عکس را تغییر دهد.
پس ما توانایی داشتن عکسهای با سایزهای مختلف را داریم. و میشه center هم کرد عکس را.

نتیجه کار:


Screenshot_۲۰۲۴-۰۹-۲۶_۱۶۳۲۴۶.jpg

در پست بالا ، عکس با عرض ۱۰۰ سنتر شده ، یعنی وسط پست قرار گرفته.

پس عکسهای ما حالا در فروم ما ، قابلیت تنظیم اندازه را دارد.


Screenshot_۲۰۲۴-۰۹-۲۶_۱۶۳۷۱۹.jpg

در عکس بالا ادیتور را می بینیم که می بینید عدد ۱۰۰ قابل تغییر است.
من اون عدد را به ۳۰۰ تغییر دادم و نتیجه این شد:


Screenshot_۲۰۲۴-۰۹-۲۶_۱۶۳۹۱۴.jpg

در عکس بالا می بینید که سایز عکس در پست بزرگ تر شده.

در عکس زیر به جای auto مقدار طول وارد شده و طول عکس کم شده:


Screenshot_۲۰۲۴-۰۹-۲۶_۱۶۴۲۴۳.jpg
 
آخرین ویرایش:

saalek110

Well-Known Member
بحث ساخت فایل منیجر و بحث آپلود فعلا تمام شد

ادامه فروم سازی:

برای انتقال یک تالار به درون تالار دیگر ، کافیه شماره والد اون را عوض کرد.
برای انتقال یک تاپیک از یک تالار به تالار دیگر ، شماره فروم اون را عوض می کنیم.

فرومهای حاضری ابزارهایی برای این کارها دارند.
البته من با مدیریت phpbb بیشتر کار کرده ام.

ولی من در همون phpmyadmin ، فعلا کار انتقال فرومها و انتقال تاپیک ها را انجام می دهم.
گاهی لازمه یک ستون با چیزی پر بشود ، در قسمت sql همون phpmyadmin این کار را انجام می دهم.

یک برنامه هایی هم برای کار با دیتابیس ساختم. مثلا برای حذف یک ردیف ، مثلا حذف یک پست یا حذف یک تاپیک از اون برنامه ها استفاده می کنم.


پس فعلا بحث میشه مدیریت فروم ، و کار با دیتابیس.
 

saalek110

Well-Known Member
من با همون فایل منیجری که در اون تاپیک ساخت فایل منیجر ساختم ، قسمتهایی از برنامه های مدیریت دیتابیس خودم را می زنم تا کمکی به شما باشد.
 

saalek110

Well-Known Member
PHP:
$sql = "SELECT * FROM texts

خط بالا خواندن یک جدول است .
بعد هر کوئری ، اجرای کوئری را داریم:

PHP:
$result = mysqli_query($ccoonn ,$sql);

شما فایل کانکشن را بالای برنامه require کردید و داخل اون فایل ccoonn تهیه شده. قبلا در مورد فایل کانکشن در این تاپیک صحبت کردیم.بعد اجرای کوئری ، مثلا چام نتایج را داریم یا حداقل خوندن نتایج.

PHP:
while($info = mysqli_fetch_array( $result ))
    {
    }

در کد بالا می بینید با استفاده از نتیجه اجرا یا همون result میشه نتایج را خواند، البته result یک متغیر است و علامت دلار قبلش داره. ما در کد بالا فچ array کردیم ، یعنی استخراج اطلاعات از داخل آرایه.

با نوشته های بالا که می تونه یک جدول را چام کنه کار را شروع کردیم...
داخل اون گیونه ها چی بنویسیم؟
PHP:
echo $info['number'];

داخل گیومه نوشتم محتوای ستون نامبر را چاپ کن.
چون while و حلقه است ، پشت سر هم ، ستون نامبر با کل بالا چاپ میشه.
این بحث چاپ جدول را قبلا در تاپیک کردیم ، جزییاتش را اونجا بخوانید ، اینجا فقط یک مرور بود و مقدمه.

اینم کوئری اینسرت:


PHP:
 $sql = "INSERT INTO `texts` (`number`,`soton2`,`text`) VALUES ('$number','$soton2','$text')";
 $result = mysqli_query($ccoonn ,$sql);


البته بعدا من ستون نامبر را خود افزایش یابنده کردم و دیگه نامبر در کوئری بالا حذف میشه.
به کوتیشن های کج و کوتیشن های عمودی نگاه کنید.توجه کنید متغیر مثلا $soton2 داخل کوتیشن عمودی است. و خود ستون ۲ در کوتیشن کج است. کل کوئری هم داخل دابل کوتیشن است.
 

saalek110

Well-Known Member
کد های پست قبل برای خوندن یک دیتابیس و درج ردیفی در یک جدول است.
دیگه فرم های برنامه را نمی گذارم. به مباحث قبلی مراچعه کنید.
PHP:
        <?php

?>
 

  <select name="db"   style=" font-size:50px; height:120px; width:250px">

   <option value="table1">tabke1 </option>
     <option value="table2">table2</option>
 
</select>
       
<?php
?>

کد بالا ، یک select است . سلکت را لیست پایین افتادنی معنی کرده اند.
در کد بالا اسم دو جدول را داریم میشه اسم دهها جدول را اضافه کرد.
من کد بالا را داخل یک فایل php گذاشتم و اینکلود می کنم داخل برنامه ام ولی شما می توانید اون علامتهای php باز و php بسته را از دورش بردارید و در فرم برنامه خود استفاده کنید.

کلا انتخاب جدکل را خیلی از برنامه ها نیاز دارند، بخاطر همین من سلکت را در یک فایل جدا و در پوشه پشتیبانی گذاشتم. تا هنه ازش استفاده کنند و اینکلود می کنم اون را بالای فرم هایم.

نگاه کنید به اسم سلکت که db است. پس خوندنش در کدهای اکشن اینجوریه:
PHP:
$the_table=$_POST["db"];

دیگه اینجا فرم کامل را نمی ذارم و اینکه چطوری کد اکشن بسازیم. قبلا بحث شده. فقط کدهای جدید را بحث می کنم.
 
آخرین ویرایش:

saalek110

Well-Known Member
خواندن یک جدول دیتابیس بدون دانستن نام ستون ها:
اگر جدول شما ۳ ستون هم داشته باشه کد زیر را میشه استفاده کرد ، یک سری ستون ها خالی می مونه فقط.

PHP:
    {
   echo"<tr>";
   echo"<td>";   echo $info[0];   echo"</td>";
echo"<td>";   echo $info[1];   echo"</td>";
echo"<td>";   echo $info[2];  echo"</td>";
echo"<td>";   echo $info[3];  echo"</td>";
echo"<td>";   echo $info[4];   echo"</td>";
echo"<td>";   echo $info[5];  echo"</td>";
echo"<td>";   echo $info[6];  echo"</td>";
echo"<td>";   echo $info[7];  echo"</td>";
echo"<td>";   echo $info[8];  echo"</td>";
echo"<td>";   echo $info[9];  echo"</td>";
   echo"</tr>";
 
    }

کد بالا ، خوندن جدولی است که اسمش را می دانیم ولی اسم ستونهایش را نمی خواهیم برویم دنبالش. و با عدد چاپ می کنیم.

اون گیومه های while است. یعتی خط کوئری و خط اجرای کوئری یا result و خط فچ array را باید بالای گیومه اضافه کنید. دیگه اونها را خودتون بنویسید و داخل حلقه while فچ array اینها را کدها را بزارید.
 
آخرین ویرایش:

saalek110

Well-Known Member
کدهایی که دارم بحث می کنم برای هر سایتی کاربرد داره و فقط برای فروم معلومه که نیست.

در یک برنامه ام ، اول با همون کد سلکت ، نام جدول انتخاب می شود و بعد چند text برای وارد کردن نام ستون و شماره ردیف و مقدار جدید داریم
و آخرش یک دکمه.

این کد فرمش است:
HTML:
<center>
 <form id='myform' action="<?php echo $_SERVER['PHP_SELF']; ?>"  method = 'POST'>

 
<?php
include"parts/select.php";
?>
 
 soton: <input type="text" name="soton" ><br><br>
  number: <input type="text" name="number" ><br><br>
  meghdar: <input type="text" name="meghdar" ><br><br>

        <input type="submit"  name='action_up' value="Submit"  style=" font-size:65px; height:150px; width:250px">

 
</form>
</center>

همون طور که گفتم کد select را در پوشه و فایل جدا گذاشتم که کدش را در پستهای بالایی نوشتم.
و در فرم بالا ایکلود کدم اون فایل را.
باقی فرم چند تکست است که ستون و شماره ردیف و مقدار جدید را می گیرد.

تمام جداول من ستون نامبر را داره و جای پی من برای کار با جداول همین ستون نامبر است. که بتونم شماره ردیف را نام ببرم.

در فرم بالا می خواهیم یک سلول جدول را تغییر دهیم،
 

saalek110

Well-Known Member
کد اکشن فرم بالا قسمت اولش اینه:

PHP:
     $db=$_POST["db"];
     $soton=$_POST["soton"];
     $number=$_POST["number"];
     $meghdar=$_POST["meghdar"];

و کوئری اش هم اینه:
PHP:
mysqli_set_charset($ccoonn, "utf8");

  $sql = "UPDATE $db SET $soton='$meghdar' WHERE number=$number";
  $result = mysqli_query($ccoonn ,$sql);

دور $number کوتیشن نداریم ، چون عدد است. ولی اگر متن بود فکر کنم باید بزاریم و اگر نزاریم خطا می دهد.
می بینید دور $meghdar کوتیشن داره چون ممکن است عدد نباشد.

بحث utf : قبلا گفتیم که نوع ستون هایی که ممکن است حروف فارسی درش ذخیره شود را utf8 می گیریم و برای خواندن و نوشتن در دیتابیس هم همیشه ذکر utf می کنیم. گه خط اول کد بالا همین است. تا حروف فارسی ناخوانا نشود، نه در دیتابیس و نه در روی سایت. البته اگر در دیتابیس ناخوانا بشود ، شاید بشه ندیده گرفت ولی بهتره خوانا باشد پس نکات بالا را رعایت کنید.

بقیهکد هم کد update است و شرحی ندارد. کوئری update برای تغییر دیتاببیس است.

پس با کدهای بالا ، یک جدول را با سلکت انتخاب می کنیم و سطر و ستون را هم در اون تکست ها می نویسیم و مقدار جدید را هم می نویسیم و دکمه را می زنیم تا اون سلول اون جدول دیتابیس مقدار جدید بگیرد.

دیگه مونتاژ برنامه بالا با خودتون. بحث های فرم و کد اکشن را قبلا در تاپیک کردیم.
 
آخرین ویرایش:

saalek110

Well-Known Member
پس من قسمت مدیریت خیلی شیک و کامل در فروم ندارم.
یک سری کارها را در همان phpmyadmin انجام می دهم. و یکسری کارها را با برنامه ساخته خودم که کدش را در بالا گفتم.

البته برای هر مشکل در سایت خودتون می توانید برنامه بسازید.
لازم نیست اسم همه حداول در برنانه شما باشد.



برنامه حذف یک ردیف از یک جدول خاص:

مثلا می توانید یک برنامه بنویسید برای حذف یک ردیف از یک جدول خاص. چون که مثلا گاهی اشکالاتی در سایت شما بوجود می آید که باید یک ردیف از یک جدول خاص باید حذف شود.
بالای برنامه شرح بنویسید که حذف یک ردیف از فلان جدول و یک تکست بزارید تا شماره ردیف را وارد کنید و دکمه را بزنید. یعنی خلاصه شده ای از برنامه دو پست قبل میشه.

اینم کوئری اش در کد اکشن فرم:
PHP:
  $sql = "DELETE FROM $the_table WHERE number=$number";

کوئری خطرناک
حواستان باشد اگر شرط را اشتباه وارد کنید کوئری بالا کل جدول را پاک می کند.
پس قبلش از جدول کپی بگیرید یا روی یک جدول تست کوئری را امتحان کنید اول.
یا اصلا این کوئری را ننویسید و بروید در phpmyadmin جلوی هر ردیف یک دکمه دیلت است اون را بزنید.

مثلا برنامه حذف یک تاپیک را من نوشتم و کوئری اش این است:
PHP:
$sql = "DELETE FROM my_topic WHERE number=$number";
 
آخرین ویرایش:

saalek110

Well-Known Member
PHP:
$sql = "SELECT * FROM $the_table ORDER BY number DESC ";

چاپ با ردیف کردن بر اساس محتوای یک ستون
برعکسش فکر کنم میشه ASC
 

saalek110

Well-Known Member
نوشتن کوئری در ورودی فرم:

یک برنامه هم داشتم که زیاد استفاده ازش نشد
داخل یک تکست کوئری می نوشتم و بعد کوئری با خط زیر در کدهای اکشن خونده میشد:


PHP:
$the_sql=$_POST["the_sql"];

گویا لازم بود تریم بشه trim ، با کد زیر:

PHP:
$sql=trim($the_sql);

و بعدش اجرای کوئری:


PHP:
$result = mysqli_query($ccoonn ,$sql);

این برنامه فکر کنم کار کرد ولی زیاد ازش استفاده نشد و رها شد، یادم نیست چرا. شاید ناجور یا بی فایده بوده ، یادم نیست چی شد سرانجامش.

فقط گفتم شاید بعضی ها بخوان این مسیر را بروند ، تجربیات خودم را گفتم.
 

saalek110

Well-Known Member
خوب ، کدهای ابزارهای خودم را در بالا نوشتم.

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



هر وقت ببینم یک چیزی زیاد داره اذیت می کنه یک ابزار برایش درست می کنم . گاهی اون ابزار تغییر کدهای فروم است.


یک مشکل و روش حل اون مشکل ، نداشتن عنوان تاپیک:

مثلا من دیدم کاربران یادشون می رود عنوان تاپیک را وارد کنند و باعث مشکل میشد، در کدها نوشتم اگر عنوان تاپیک نول بود ، پست را در عنوان هم قرار بده.

PHP:
if ( $title==NULL ) $title=$post;


کاربر می تونه برود بعدا عنوان را ادیت کنه ولی اگر عنوان نباشه نمی تونه اصلا وارد تاپیک بشه ، پس یک عنوان غلط بهتر از بی عنوانی است و با یک خط کد مشکل حل شد ، البته راه درستش فکر کنم جاوا اسکریپت باشه که به کاربر بگه عنوان را هم وارد بکن.

حالا اگر می خواستم برای این قضیه ابزار بنویسم کلی وقت می گرفت.
البته بهتره بعدا کار بهتری بکنم ، ولی فعلا فروم کارهای مهم تری دارد و کارهای جزئی تر را باید گذاشت برای بعد.
 
آخرین ویرایش:

saalek110

Well-Known Member
کدام کارها را اول انجام بدهم؟


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

images.jpeg
 

جدیدترین ارسال ها

بالا