PDA

View Full Version : چرا کلاس این کد کار نمی کنه ؟



phpworker
سه شنبه 30 خرداد 1391, 22:15 عصر
سلام.
از هرکی پرسیدم گفت بیام برنامه نویس.
من php کار میکنم.البته تازه واردم ولی رفقام میگن خوب پیش رفتم.

دوستان
کد php زیر رو ببینید:


$con=mysql_connect('localhost','root','');
mysql_select_db('hotel',$con);

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


<?php
class db {
var $host;
var $username;
var $password;
var $database;
function db ($host="localhost",$username="root",$password="",$database="hotel"){
$this->host=$host;
$this->username=$username;
$this->password=$password;
$this->database=$database;
}
function open_connection(){
$this->con=mysql_connect($this->host,$this->username,$this->password);
$this->select_db = mysql_select_db($this->database) or die(error);
}
}
?>


حالا کد زیر رو ببینید :


$query="SELECT * FROM register";

$select=mysql_query($query);


while($row=mysql_fetch_array($select)){
echo $row['id'].' - '.$row['name'].' - '.$row['family'].' - '.$row['kodemeli'].' - '.$row['city'].' - '.$row['mobile'].' - '.$row['tarikherezervaz'].' - '.$row['ta'].' - '.$row['residepardakht'].'<br>';

}
mysql_close($con);



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

دلیل اینکه کد اول + کلاس اول رو اینجا گذاشتم واسه اینه که بدونید من کلاس معمولی که خودم بفهمم میخوام. نه کلاسایی که کلی فایل باهاشه.

خلاصه:
لطف کنید و بگید کلاسش چجوری میشه ممنون میشم+ توضیح کلاس

farhadfery
سه شنبه 30 خرداد 1391, 23:03 عصر
شما بهتر روی مفاهیم شی گرایی ابتدا تمرکز کنید و سپس دست به کد بشید. الان من به شما هم بگم که مشکل از چی هست. چه سودی داره وقتی شما شی گرایی را هنوز نمی دونید.
اینکه تازه کار هستید و از ابتدا روی شی گرایی تمرکز دارید خیلی خویه.:تشویق:

phpworker
سه شنبه 30 خرداد 1391, 23:20 عصر
سلام.
میگن عدو ( دشمن ) شود سبب خیر , بیرا نمیگن.
من تا همینجا اومدم.الان نیاز دارم به کلاس این کد. شما لطف کن بگو چی میشه؟
چون این واسه امتحان عملیه منه. استادم دید گفت کدا درسته چرا؟ چون کار میکنه.اما باید کلاس بندی کنی. هرچی گفتم آخه توی php با توجه به این کدا نیازی نیس گفت الا و للا باید کلاس کنی.
حالا من توی این موندم. هر کاری کردم نشد.
شما لطف کن کلاسشو بهم بگو.

farhadfery
سه شنبه 30 خرداد 1391, 23:28 عصر
خوب اول بگو:

میگن عدو ( دشمن ) شود سبب خیر , بیرا نمیگن.
منظورت کیه؟
دوم اینکار را بکن:
یه کلاس اماده برای کار با db از همین انجمن یا گوگل دانلود کن. چون می خواهی پروژه بدی و نمی خواهی چیزی یاد بگیری!
اخه الان کلاست ناقص و چند تا متد باید براش بنویسی.

phpworker
سه شنبه 30 خرداد 1391, 23:42 عصر
دادا منظور از عدو پروژه امتحانیمه.
اخلاق توی اینجور محیطا (انجمن )حرف اولو میزنه چون همه داریم به هم کمک می کنیم.
دوما من کد php مینویسم.الان مشکلم با کلاس هست.یعنی با کلاس از نظر منطقی نمی تونم ارتباط برقرار کنم و الا کلی خط کد php می نویسم و همشونم کار میکنه.
سوم :واسه کلاس کلی گشتم ولی متاسفانه چیزی که بتونم باهاش کار کنم پیدا نکردم.
شما ظاهرا بلدی اگه میشه کلاس این کدو بمن بگو اگه نه که منتظر بقیه دوستان هستم.
من فقط کلاس واسه کد بالا رو میخوام.همین

farhadfery
سه شنبه 30 خرداد 1391, 23:49 عصر
توی انجمن هست تو گوگل هم که زیاد.
من یه سرچ برای شما زدم یک نمونه اش را ببینید:
http://adodb.sourceforge.net/

-------
البته بعدها که خودت کار می کنی با pdo انجام بده

phpworker
سه شنبه 30 خرداد 1391, 23:58 عصر
ممنون.اما کدی که نوشتم علاوه بر کانکت شدن باید یسری مقادیر رو هم نشون بده.
به کدام دقت کن.
واسه همین میگم باید اول یه کدی که خودم نوشتم و واسه من سخته رو یکی واسم تبدیل به کلاس کنه و یه توضیح بده تا متوجه بشم.کد اولی فوق العاده راحت بود و خودم تبدیل کردم اما کد دومی گیره. چرا ؟ نمیدونم .
من علاوه بر این وب به وب سایت های دیگه چه فارسی و چه انگلیسی سر زدم. نمیگم کار نمی کنه ولی کدی که نوشتم رو نمی تونم با کد کلاس بنویسم.

ravand
چهارشنبه 31 خرداد 1391, 09:00 صبح
<?php
class cms{
var $host="localhost";
var $user="root";
var $database="cms2";
function connect()
{
mysql_connect(

->host,$this->user) or die("Could not connect. " . mysql_error());
mysql_select_db($this->database) or die("Could not select database. " . mysql_error());

}

}

$cms=new cms();
$cms->host = 'localhost';
$cms->user = 'root';
$cms->database = 'cms2';
$cms->connect();
?>

farhadfery
چهارشنبه 31 خرداد 1391, 12:42 عصر
<?php
class cms{
var $host="localhost";
var $user="root";
var $database="cms2";
function connect()
{
mysql_connect(

->host,$this->user) or die("Could not connect. " . mysql_error());
mysql_select_db($this->database) or die("Could not select database. " . mysql_error());

}

}

$cms=new cms();
$cms->host = 'localhost';
$cms->user = 'root';
$cms->database = 'cms2';
$cms->connect();
?>
افرین به ravand که دستبکار شد. حالا من هم راهنمایی می کنم.:تشویق:
اسم کلاس را مرتبط با نام کاری که انجام می ده بگذارید. مثلا DbWorker
از Var استفاده نکیند و بزنید public یا private و ...
کلاس را بهتر از اینهم می تونید بکنید. مثلا مقدار دهی به host و user و ... تو خود کلاس و در سازنده انجام بگیرید. نه اینکه برای هر بار استفاده از این کلاس، شی باید انها را مقدار بدهد.
--------
در قدم بعد جناب راوند بیا چندتا متد و فانکش به این کلاس اضافه کن. یکی برای execute. یکی برای closedb , ....

ravand
چهارشنبه 31 خرداد 1391, 12:50 عصر
روش آموزشی من با بقیه ی روش های آموزش فرق داره :لبخند:
من امدم این اسکریپ رو به دو بخش تقسیم کردم . یکی قسمت فرمان که از این خط شروع میشه :

$cms=new cms();
و دیگری قسمت تابع فرمان و در واقع اجرا کننده ی فرمان که از class cms{ تا اونجایی که آکولادش بسته میشه هست.
توضیحات:
اول با متغيير ها مشخصات ديتابيس رو مشخص ميكنيم اينا رو بهش ميگن متغيير هاي اسكالر.
بعد در قسمت فرمان با توجه به مقداري كه براي هاست و يوذر و ديتابيس مشخص كرديم با فرمان به تابع connect() و با استفاده از متغييرهاي $this مقداري رو كه در قسمت فرمان براي هاست و يوذر و ديتابيس انتخاب كرديم به اون ها ميديم. :لبخند:

farhadfery
چهارشنبه 31 خرداد 1391, 12:53 عصر
هر جور که فکر می کنی درست!(گر چه اشتباه فکر می کنی) همونطور عمل کن.

phpworker
چهارشنبه 31 خرداد 1391, 23:18 عصر
از هردو ممنون. فقط یه چیزی.
من کلاس کد زیر رو میخوام:



$query="SELECT * FROM register";

$select=mysql_query($query);


while($row=mysql_fetch_array($select)){
echo $row['id'].' - '.$row['name'].' - '.$row['family'].' - '.$row['kodemeli'].' - '.$row['city'].' - '.$row['mobile'].' - '.$row['tarikherezervaz'].' - '.$row['ta'].' - '.$row['residepardakht'].'<br>';

}
mysql_close($con);






شما دوتا بزرگوار رفتین کلاسی واسه اتصال به دیتابیس رو که خودم نوشته بودم و درست هم بود , دوباره نوشتین.
عزیزان کد بالا رو ببینید . من کلاس کد بالا رو با توجه به نوع کلاس بندیی که خودم متوجه شدم و نوشتم , طبق اولین مطلب همین پست (http://barnamenevis.org/showthread.php?346932-%DA%86%D8%B1%D8%A7-%DA%A9%D9%84%D8%A7%D8%B3-%D8%A7%DB%8C%D9%86-%DA%A9%D8%AF-%DA%A9%D8%A7%D8%B1-%D9%86%D9%85%DB%8C-%DA%A9%D9%86%D9%87-%D8%9F) رو میخوام.در مطلب اول خودم کد نوشتم و تبدیل به کلاس کردم و درسته ولی کد دوم رو که خودم نوشتم و کار هم میکند نتونستم به کد تبدیل کنم.

ravand
پنج شنبه 01 تیر 1391, 08:02 صبح
بیا اینم اون چیزی که میخوای:

<?php
class cms{
var $host="localhost";
var $user="root";
var $database="cms2";

function connect()
{
mysql_connect($this->host,$this->user) or die("Could not connect. " . mysql_error());
mysql_select_db($this->database) or die("Could not select database. " . mysql_error());
}
function display()
{
$sql="SELECT * FROM jadval";
$result=mysql_query($sql) or die (mysql_error());
while ($row=mysql_fetch_array($result)){
$id=$row['id'];
$title=$row['title'];
$msg=$row['msg'];
}
echo "$title";
echo "<br>";
echo "$msg";

}

}

$cms=new cms();
$cms->host = 'localhost';
$cms->user = 'root';
$cms->database = 'cms2';
$cms->connect();
$cms->display();
?>

phpworker
پنج شنبه 01 تیر 1391, 08:40 صبح
ravand عزیز کارت حرف نداشت. دستت درد نکنه.
فقط دو مشکل
1 - فارسی رو به صورت ???? بر میگردونه.چیکار کنم؟
2 - تنها سطر آخر table منو نشون میده.
مثلا
1-id title msg
2-id title msg
3 - id title msg
تنها سطر 3 رو نشون میده. در صورتی که باید تمام سطرهای موجود در db رو نشون بده.
ممنون میشم اینارو هم بگی.

phpworker
پنج شنبه 01 تیر 1391, 08:43 صبح
مشکل دوم رو خودم پیدا کردم. یه اشتباهی توی کد نویسی شما بود حل کردم.
فقط مشکلم اون ???? هاست

phpworker
پنج شنبه 01 تیر 1391, 08:49 صبح
آقا مشکل علامت سوال رو هم حل کردم:لبخند: