انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: يه php كار با مرام و با معرفت مي تونه مشكل مرا حل كنه؟  (دفعات بازدید: 3263 بار)

0 کاربر و 2 مهمان درحال مشاهده موضوع.

آفلاین firethumbs

  • Full Member
  • *
  • ارسال: 173
دوستان سلام
من سر يك پروژه دانشگاهي مشكل دارم. يك برنامه به زبان پي اچ پي دارم مي نويسم كه يه جائي از آن ايراد داره خواهش مي كنم (فقط از دوستاي با مرام و با مروت و با معرفت)  راهنمائي كنيد. خلاصه برنامه اينه كه مي خوام به بانك ماي اس كيو ال وصل بشم و عمل درج و حذف و انتخاب و بروز رساني را انجام بدم منتها مي خوام بوسيله يك كلاس اينكار را انجام بدم يعني query را بدم به توابع عضو اون كلاس و از اون كلاس جواب بگيرم. اينم برنامه مشكل دار من .
اين همون كلاسيه كه گفتم:
نقل‌قول

<?php

class DataAccess{
private $pass="123";
private $user="root";
private $server="localhost";
private $port="3306";
private $database;
private $mysqli;
private $result;

//////////////////////////////////////////////////////
function _construct($value){
$this->database=$value;
}//end of constructor-

////////////////////////////////////////////////////
function connect(){
$this->mysqli=new mysqli($this->server,$this->user,$this->pass,$this->database);
if($this->mysqli->errno){
printf("Unable to connect to the database:
%s",$this->mysqli->error);
exit();
}//end of if statement
}//end of connect


////////////////////////////////////////////
function hello(){
echo "hello";
}//end of hello-

//////////////////////////////////
function disconnect(){
$mysqli.close();
}//end of disconnect

///////////////////////////////////////////////////////////
function select_query($valu){

$this->result = $this->mysqli->query($valu, MYSQLI_STORE_RESULT);
// Iterate through the result set
while ($row = $this->result->fetch_array(MYSQLI_NUM))
سطر بالا سطريه كه خطا روي آن گرفته شده است.
{
$sku = $row[0];
$name = $row[1];
$price = $row[2];
echo "($sku) $name: $price
";
}
}//end of excute_query function
///////////////////////////////////////////////////////
function executeQuery($val){
$this->result=$this->mysqli->query($val,MYSQLI_STORE_RESULT);
echo "query has been excute";

}// end of excuteQuery function.

}//end of class
?>
[/b]

اينم فايلي است كه شئي از اين كلاس ايجاد و تابع عضو را صدا مي زنم
نقل‌قول
<?php
//passenger.php
include "DataAccess.php";

$dal=new DataAccess("bus");
$dal->connect();
$dal->hello();

$query = "select * from passenger ";

$dal->select_query($query);

//Fatal error: Call to a member function fetch_array() on a non-object in /opt/lampp/htdocs/DataAccess.php on line 42
/*
$mysqli=new mysqli("localhost","root","123","bus");
if($mysqli->errno){
printf("Unable to connect to the database:
%s",$mysqli->error);
exit();
}

$query = "SELECT * from passenger";
$result = $mysqli->query($query, MYSQLI_STORE_RESULT);
// Iterate through the result set
while(list($ID, $Fname, $Lname,$codemelli,$email) = $result->fetch_row())
printf("(%s) %s   %s: %s %s
", $ID, $Fname, $Lname,$codemelli,$email);

*/
?>

اينم خطائي كه مي ده
Fatal error: Call to a member function fetch_array() on a non-object in /opt/lampp/htdocs/DataAccess.php on line 4[/i]2


اين كد هم تازه نوشتم همون انتظار را ازش دارم منتها از ارث بري استفاده كرده ام. اين هم كار نمي كنه و خطا مي ده
نقل‌قول
<?php
class Dispatcher extends mysqli{
    private $pass="123";
    private $user="root";
    private $server="localhost";
    private $port="3306";
    private $database;
    
    public function _construct($database){
        parent::_construct($this->server,$this->user,$this->pass,$database);
        if (mysqli_connect_error()) {
            die('Connect Error (' . mysqli_connect_errno() . ') '
                    . mysqli_connect_error());
        }//end of if        
    }// end of Constructor
    
    public function excute_query($val){
        $result=parent::query($val,MYSQL_STORE_RESULT);
        while(list($ID, $Fname, $Lname,$codemelli,$email) = $result->fetch_row()){
            printf("(%s) %s    %s: %s %s
", $ID, $Fname, $Lname,$codemelli,$email);
        }//end of while        
    }//end of excute_query function
}//end of Dispatcher class
?>
خيلي ممنون
« آخرین ویرایش: 20 آذر 1388، 02:43 ق‌ظ توسط firethumbs »

آفلاین جادی

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1610
    • در دفاع از آزادی بیان
کماکان به نظرم ارزشگذاری درست نیست. لازم نیست بگی آدم با مرام (یعنی هر کس کمک نکرد مرام نداره؟) . به سادگی یک سوال بپرس و اگر کسی خواست جواب می ده. قرار نیست آدم ها رو توی رودربایستی قرار بدیم که.

به هرحال من در حال حاضر امکان دیباگ کردن ندارم (چون نه پی اچ پی دارم و نه اسکیول) اما به راحتی می تونم بگم اگر برنامه خودم بود چیکار می کردم.

نقل‌قول
یک ضرب المثل مهم برنامه نویسی می گه: برنامه بزرگی که کار می کنه، روزگاری برنامه کوچیکی بوده که کار می کرده.

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

while ($row = $this->result->fetch_array(MYSQLI_NUM))
خب این خط رو تیکه تیکه کن. ظاهرا توی MYSQLI_NUM هیچ مقداری نیست. این قراره از کجا مقدار بگیره؟ برو اونجا و اونجا ببین چی توشه و ... کار سختی نیست ولی کمی حوصله می خواد و خرد کردن و تعقیب مشکل.
آزادی کیبورد حق هر انسان است - جادی