الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة في كلاس Database

بدأه MouathPHP في 9 يناير 2014 · 7 رد · 1,199 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

 

 

انا عملت كلاس للتعامل مع قاعدة البيانات ..

 

وعملت داخل الكلاس وظائف متعدةة ،،

 

وجميعها شغالة ولكن جربت أن اضع الفنكشن select داخل الأمر mysqli_num_rows() .. ما يجي للأسف ولا أعلم لماذا ،،

 

 

هذا الكود للتوضيح:

<?php

class Database {
	
	
  var $db_host = "localhost";
  var $db_user = "root";
  var $db_pass = "root";
  var $db_name = "rame";
  var $connect;
  
  
   public function __construct() {
	  
	 $connect = mysqli_connect($this->db_host,$this->db_user,$this->db_pass,$this->db_name) or die('Connection Error!');
	 $this->connect = $connect;  
	  
  }
  
  function select($table) {
	  
	$select = mysqli_query($this->connect,"SELECT * FROM $table");  
	  
  }
  
  
  function insert($table,$values,$where) {
	  
	$insert = mysqli_query($this->connect,"INSERT INTO $table VALUES($values) $where");
	  
  }
  
  function update($table,$values,$where) {
	  
	$update = mysqli_query($this->connect,"UPDATE $table SET $values $where");
	  
  }
  
  function delete($table,$where) {
	  
	$delete = mysqli_query($this->connect,"DELETE FROM $table $where");
	  
  }
  



}

$test = new Database;
$ss = $test->select('users');



$num= mysqli_num_rows($ss);

echo $num;	






?>

وهذا الخطأ اللي يجيني:

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in C:\AppServ\www\index.php on line 55

 

 

 

أتمنى المساعدة للضرورة،

 

 

وشكرا للجميع، :)

#2

جميل جدا

mysqli_num_rows()

تحتاج الى الكونيكشن وهو في هذه الحالة $connect

ولا يمكنك الوصول اليه مباشرة لانه محمي تلقائيا داخل الكلاس

 

لذلك يتعين عليك انشاء دالة جديدة وظيفتها احتساب عدد الصفوف في اي جدول بنفس الطريقة التي تقوم بها لـ select,update,delete

function count_table($table) {
$delete = mysqli_num_rows($this->connect,"SELECT * FROM $table");
}

والامر يصبح بسيط الان مع الكائنات

$ss_count = $test->count_table('users');

=============
الطموح و الحافز سر النجاح

=============

AflamHQ.com | Palphp.com

#3

شكرا أخي الكريم ،،

 

لكن  هل توجد طريقة أخرى لفك الحماية ؟

 

يعني أحس انو يكون أفضل ،،

 

لأن مثلا لو عملت استعلام .. وابغى اعرف عدد الإستعلام ،،

 

يسير يسوي استعلام واحد فقط ،،

#4

خلاص أخي شكرا لك ،،

 

لقد أفدتني حقا وتعبتك من كثر مشاكلي ،،

 

الله يجزاك خير ويعطيك العافية، :)

#5

ترا الطريقة لم تنجح أخي الكريم ،،

 

نفس المشكلة ،،

 

لا زالت المحاولات جارية،

#6

لقد استعملت هذه الطريقة ونجحت ،، ولكن كنت أتمنى أنجد طريقة أسهل من هذه وايضا عملية

<?php
/*+-------------------- ## DATABASE FUNCTIONS ## --------------------+*/
class Database {
	
	
  var $db_host = "localhost";
  var $db_user = "root";
  var $db_pass = "root";
  var $db_name = "rame";
  var $connect;
  
  
    function __construct() {
	  
	 $connect = mysqli_connect($this->db_host,$this->db_user,$this->db_pass,$this->db_name) or die('Connection Error!');
	 $this->connect = $connect;  
	  
	  mysqli_set_charset($connect,'utf8');
	  mysqli_query($connect,"set character_set_server='utf8'");
	  mysqli_query($connect,"SET NAMES 'utf-8'");
  }
  
  function select($table,$where,$limit) {
	  
	$select = mysqli_query($this->connect,"SELECT * FROM $table $where $limit");  
	  
  }
  
  
  function insert($table,$values,$where) {
	  
	$insert = mysqli_query($this->connect,"INSERT INTO $table VALUES($values) $where");
	  
  }
  
  function update($table,$values,$where) {
	  
	$update = mysqli_query($this->connect,"UPDATE $table SET $values $where");
	  
  }
  
  function delete($table,$where) {
	  
	$delete = mysqli_query($this->connect,"DELETE FROM $table $where");
	  
  }
  
  function num($table,$where) {
	
	$select = mysqli_query($this->connect,"SELECT * FROM $table $where");   
	$num 	= mysqli_num_rows($select);
	  
  }
  
  function fetch($query) {
	
	$val = mysqli_fetch_array($query);
	  
  }
  
  function protect($value) {
	  
	$values = mysqli_real_escape_string($this->connect,$value);
	  
  }
  
  function close() {
	  
	  $close = mysqli_close($this->connect);
	  
  }
  

}

$test = new Database;
$ss = $test->num('users','');



?>

على العموم أشكرك :)

#7

يوجد طرق اخرى بالطبع ,

ولكن انت الان تسير على المسار الصحيح ادا دخلت عالم البرمجة الشيئية فتمسك به , ولا تحيد

=============
الطموح و الحافز سر النجاح

=============

AflamHQ.com | Palphp.com

#8

شكرا ع النصيحة :)

مواضيع مشابهة