كيف أعمل قائمة منسدلة بها كل التصنيفات في القاعدة بـ php؟

أسيل محمد • منذ 4 سنوات

السلام عليكم ورحمة الله تعالى وبركاته

أنا عامله ملف php لإضافة تصنيف رئيسي،

وملف لإضافة تصنيف فرعي وفي هذا الملف أريد عمل قائمة منسدلة بها (التصنيفات الرئيسية الموجودة في قاعدة البيانات) فعند إضافة تصنيف فرعي يجب الاختيار من القائمة (التصنيف الرئيسي الذي سيندرج تحته التصنيف الفرعي).

أنشأت قاعدة بيانات اسمها "store" -- وهذه الجداول بداخلها:

جدول category للتصنيفات الرئيسية وبه حقلين واحد للـ id والآخر لاسم التصنيف الرئيسي،

وجدول subcat للتصنيفات الفرعية وبه 3حقول حقل للـid ،وحقل subcat_nm لاسم التصنيف الفرعي، وحقل parent_id لـid التصنيف الرئيسي

أي أن >>    cat_id = parent_id


CREATE TABLE `category` (
  `cat_id` int(4) NOT NULL AUTO_INCREMENT,
  `cat_nm` varchar(30) NOT NULL,
  PRIMARY KEY (`cat_id`)
);


CREATE TABLE `subcat` (
  `subcat_id` int(4) NOT NULL AUTO_INCREMENT,
  `parent_id` int(4) NOT NULL,
  `subcat_nm` varchar(35) NOT NULL,
  PRIMARY KEY (`subcat_id`)
);

وهذه أكواد إضافة تصنيف فرعي

ملف addsubcategory.php

<?php
require_once './config.php';
?>
  <div class="row">
    <div class="panel panel-primary">
      <div class="panel-body">
        <form class="form-horizontal" name="contact_form" id="contact_form" enctype="multipart/form-data" method="post" action="process_subcategory.php">
          <input type="hidden" name="mode" value="<?php echo ($_GET["m"] == "update") ? "update_old" : "add_new"; ?>" >
          <input type="hidden" name="subcat_id" value="<?php echo intval($results[0]["subcat_id"]); ?>" >
          <fieldset>
		   <div class="form-group">
		   <label class="col-lg-4 control-label" for="subcat_nm">اختر التصنيف الرئيسي</label>
              <div class="col-lg-5">
		   <?php 
          // هنااا أريد وضع قائمة منسدلة بها كود جلب التصنيفات الرئيسية من القاعدة
           ?>
              </div>
            </div>
										
				<br><p>
            <div class="form-group">
              <label class="col-lg-4 control-label" for="subcat_nm">إضافة تصنيف فرعي</label>
              <div class="col-lg-5">
                <input type="text" value="<?php echo $results[0]["subcat_nm"] ?>" placeholder="" id="subcat_nm" class="form-control" name="subcat_nm" required="required">
              </div>
            </div>  
            <div class="form-group">
              <div class="col-lg-5 col-lg-offset-4">
                <button class="btn btn-primary" type="submit">Submit</button> 	
              </div>
            </div>
			
          </fieldset>
        </form>
      </div>
    </div>
  </div>  
 

وملف process_subcategory.php


<?php

require './config.php';

$mode = $_REQUEST["mode"];
if ($mode == "add_new" ) {
  $parent_id = trim($_POST['parent_id']);
  $subcat_nm = trim($_POST['subcat_nm']);
  $error = FALSE;

  if (!$error) {
    $sql = "INSERT INTO `subcat` (`parent_id`,`subcat_nm`) VALUES " . "( :parent_id, :subcat_nm )";

    try {
      $stmt = $DB->prepare($sql);

      // bind the values
	  $stmt->bindValue(":parent_id", $parent_id);
      $stmt->bindValue(":subcat_nm", $subcat_nm);
     

      // execute Query
      $stmt->execute();
      $result = $stmt->rowCount();
      if ($result > 0) {
        $_SESSION["errorType"] = "success";
        $_SESSION["errorMsg"] = "تمت الإضافة بنجاح.";
      } else {
        $_SESSION["errorType"] = "danger";
        $_SESSION["errorMsg"] = "فشل في الإضافة.";
      }
    } catch (Exception $ex) {

      $_SESSION["errorType"] = "danger";
      $_SESSION["errorMsg"] = $ex->getMessage();
    }
  } 
  header("location:addsubcategory.php");
}
?>

وهذا ملف الاتصال بالقاعدة config.php


<?php
error_reporting( E_ALL & ~E_DEPRECATED & ~E_NOTICE );
ob_start();
session_start();

define('DB_DRIVER', 'mysql');
define('DB_SERVER', 'localhost');
define('DB_SERVER_USERNAME', 'root');
define('DB_SERVER_PASSWORD', '');
define('DB_DATABASE', 'store');


define('PROJECT_NAME', 'test');
$dboptions = array(
              PDO::ATTR_PERSISTENT => FALSE, 
              PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 
              PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
              PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
            );

try {
  $DB = new PDO(DB_DRIVER.':host='.DB_SERVER.';dbname='.DB_DATABASE, DB_SERVER_USERNAME, DB_SERVER_PASSWORD , $dboptions);  
} catch (Exception $ex) {
  echo $ex->getMessage();
  die;
}

//get error/success messages
if ($_SESSION["errorType"] != "" && $_SESSION["errorMsg"] != "" ) {
    $ERROR_TYPE = $_SESSION["errorType"];
    $ERROR_MSG = $_SESSION["errorMsg"];
    $_SESSION["errorType"] = "";
    $_SESSION["errorMsg"] = "";
}
?>

أرجووو المسااااااااعدة 

كلمات دليلية: php

ساعد بالإجابة

"إن في قضاء حوائج الناس لذة لا يَعرفها إلا من جربها، فافعل الخير مهما استصغرته فإنك لا تدري أي حسنة تدخلك الجنة."

الإجابات (1)

yazan qwaider • منذ 4 سنوات

وعليكم السلام
حسب ما فهمته ,, مجرد جلب البيانات من جدول التصنيفات الرئيسية ووضعها في قائمة منسدلة , فالجواب :

اولا فتح تاغ قائمة منسدلة خارج كود php :
 

<select>

ثم جلب البيانات من الجدول وعرضها كل منها في تاغ العنصر :
 

<?php

$sql = "SELECT * FROM category";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "<option>" . $row["cat_nm"]. "</option>";
    }
}
?>

ثم تغلق تاغ القائمة :
 

</select>

بهذا قد انشئت قائمة متجددة البيانات , كل مرة تغير فيها البيانات داخل الجدول تتغير في القائمة , واعمل نفس الامر مع القائمة الفرعية .

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !