Jump to content
php.lv forumi

jaut. par OOP php un mysql ...


blondine

Recommended Posts

tatad fīča ir tāda, catalog.class.php - tiek apstrādāti dati no db izmantojot:

 

while($row = mysql_fetch_assoc($this->sql_res))

 

viss itkā strādā, bet tad meginaju pieslegties paging.class.php failam, kur atrodas class pager mainigie, funkcijas utt.

Ir nepieciesams izaukt funkciju, bet neizdodas ideja varetu but tada..

 

 

$pager = new pager($sql,'page',5);

while($row = mysql_fetch_array($pager->sql_res))..

 

ceru, ka doma ir saprotama!

Link to comment
Share on other sites

Ja godīgi nesaprotu kur īsti ir problēma.

 

Izveido publisko klases atribūtu $sql_res un piešķir tam ResultObject, kuru saņem pēc mysql_query()...

 

class Pager {
public $sql_res;

public function __construct() {
	...
	$this->sql_res = mysql_query(...);
	...
}
}
$pager = new Pager();

while($row = mysql_fetch_assoc($pager->sql_res))
...

Link to comment
Share on other sites

izskatās, ka vispirms jāizsauc $pager->doQuery(), un pēc tam tikai kkas būs tajā $pager->sql_res

 

iespējams, ka sqlā ir kļūda. paskaties iekš doQuery(), ko izdod mysql_error(). vnk tur šobrīd nav nekāda potenciālo error apstrāde (laikam kodēja ļoti pašpārliecināts koderis :D). tas varētu izskaidrot arī kāpēc tev bija tas errors, tipa "mysql_fetch_assoc(): supplied argument is not a valid MySQL..."

 

un vēl catalog.class.php 56. rindiņā ir mainīgais $sql_query, kurš tajā funkcijā nemaz nav definēts...

jebkurā gadījumā 58. rindiņā tam mysql_fetch_assoc() tad būtu jāpadod $pager->sql_res, nevis $this->sql_res

 

vsp izstrādes laikā ir ieteicams rādīt visus errorus: error_reporting(E_ALL);

tad jau pati būtu pamanījusi kļūdu

 

secinājumi: pirms sākt kodēt katalogus un peidžingot (neatkarīgi no ar/bez oop), vēlams iemācīties php/mysql pamatus

Edited by 2easy
Link to comment
Share on other sites

Pamācies tomēr pamatus. Papildus - liekas, ka esi lasījis (lasījusi? Palikšu pie vīriešu dzimtes) vecus OOP tutoriāļus vecākām PHP versijām.

 

Konstruktori būtu jādefinē ar funkciju __costruct(). Tavs variants ir novecojis, un drīz tam būtu jābūt (ja jau nav) deprecated.

Klases atribūtus arī nevajag definēt ar var. Tas jaunajām PHP versijām ir deprecated. Tā vietā būtu jāraksta, piemēram, public $property;

Ja tu no klases Catalog gribi piekļūt klases pager (tev klases vajadzētu saukt ar lielo burtu - Pager) atribūtam, tad nav jāraksta $this->sql_res, bet gan $myPaging->sql_res (tavā variantā). $this attiecas uz konkrēto klases objektu.

 

Un vispār tev tur vēl ir visādas kļūdiņas, kaut vai kaut kā izvade pirms header() lietošanas...

 

Es arī iesaku apgūt sākt ar pamatiem. PHP, pagaidām, nav baigi tīrā OOP valoda, tādēļ sāc bez OOP. Tad apskaties šo: http://uk3.php.net/manual/en/language.oop5.basic.php Tur būs jaunāka un pareizāka informācija...

Link to comment
Share on other sites

$sql_query definets mysql.class.php... bet nu nekaa ;( pamazam ari pamati tiek apguti ;)

jā tur ir definēts $sql_query, taču lai citā klasē (kas manto šo mainīgo no mysql klases) tam varētu piekļūt, izmanto $this->sql_query

 

vsp lai paņemtu datus no db un izdrukātu ar/bez padžinga, oop nafig nav nepieciešams. organizēt kodu loģiskos moduļos var arī vnk grupējot līdzīgas funkcijas. šeit vienīgā daudz maz iekš php izmantojamā oop fīča >> mantošana << tiek izmantota netēmā: extendod mysql, lai taisītu catalog. omg, var jau būt tas mūsdienās ir baigi labais oop stils tā darīt, taču db pieprasījumus var veikt ar parastu function call un rezultātus turpat uz vietas arī apstrādāt. kr4 kodu var organizēt ar pāris vnkāršām funkcijām, kas katra labi izdara savu darbu. bet tagad tu pati putrojies tajās klasēs...

 

oop ir labs/kruts, taču to vajag lietot tad, kad tas kko atvieglo, nevis sarežģīt vnkāršas lietas

Edited by 2easy
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...