Jump to content
php.lv forumi

Recommended Posts

Posted (edited)

ir doma veidot šādu tabulu:

 

jaunumi:

id|kategorija|nosaukums|bilde|ievads|pilns_teksts|autora_id|datums|gads|menesis|lasits|komentaru_skaits

+

komentari:

id|jaunuma_id|autors|teksts|epasts|web|ip

jautājums#1: vai ir nepieciešams izdalīt ievads un pilns_teksts jeb šos abus laukus apvienot un izvadot galvenajā lapā mazus ievadus jaunumiem limitēt izvadāmo simbolu skaitu.. kurā variantā performance būs labāka?

 

jautājums#2: man ir sadaļa arhīvs un tur var izvēlēties gadu, pēc tam mēnesi un aplūkot rakstus. tam man papildus kolonnai datums ir arī kolonnas gads un menesis. vai ir iespējs iztikt bez šīm divām kolonnām un noteikt kuri raksti atbilst pieprasitajam gadam, menesim?

 

un varbut vel kautkas ir piebilstams attiecībā uz tabulu laukiem..?

 

paldies iepriekš.

Edited by direktors
Posted

kam tev adaliitas datumam 3 kolonas?

pilniibaa pietiek ar vienu DATATE

MySql ljoti labi maak atlasiit gan peec gada gan menesha gan datuma ;)

kautvai vari paluugt atlasiit 33 dienas vecus utt....

Posted

pec sava piemera es protu visu dabut. vai vari ko sikak izstastit, par to kā atlasīt ja atstāju vienu pašu lauku datums. laiku es saglabāju ievietoju tabulā ar time(), tas der tavam variantam?

Posted

lai dabuutu vajadziigo datumu

vienkaarsha saliidzinaashana

SELECT * FROM tabula WHERE datums='2007-10-19'

ja vajag gadu un menesi

tad izmanto f-jas YEAR(), MONTH(), DAYOFMONTH()

ja vajag ierakstiit tad izmanto CURDATE() , vai ar PHP DATE() izveido stringu....

ja vajag teiksim 33 dienas vecus ierakstus tad

SELECT * FROM tabula WHERE datums < DATE_ADD(CURDATE(), INTERVAL 33 DAY)

noformateetu datumu var dabuut

DATE_FORMAT(datums,'%Y bla bala %m bla2 bla %d') as pilns_datums

kur bla bla jebkas iznjemot % (lai to lietotu skat manuaali)

Posted (edited)

es tagad sāku pīpēt ieteikumus.

 

tabulā laukam datums noradiju tipu datetime

 

tālāk,

$sql = "INSERT INTO jaunumi (nosaukums, datums) VALUES ( 'nosaukums kautkaads' , CURDATE())";

 

tabula aizpildās lūk kā:

nosaukums kautkaads 2006-07-13 00:00:00

 

kādēļ laiks ir pa nullēm?

 

un vai tiktāl doma ir pareiza, pēcāk varēs atlasīt pa gadiem, mēnešiem?

 

EDIT:

atradu, ka CURDATE() vietā var likt NOW(). tas strādā.

 

saglabāts tiek YYYY-MM-DD HH:MM:SS.

 

kā tad ir ar to izvadīšanu tagad? kā atlasīt piemēram 2005 gada jūnija ierakstus?

Edited by direktors
Posted (edited)

kam tev DATETIME ja pietiek ar DATE ?

gribas arii pulksteni ? ;)

 

<CIT> kā atlasīt piemēram 2005 gada jūnija ierakstus? </CIT>

SELECT * FROM tabula WHERE YEAR(datuma_lauks)=2005 AND MONTH(datuma_lauks)=6

 

edit:

CURDATE() ir prieks datutipa DATE // tikai datums

NOW() prieksh DATETIME // datums un pulkstenis

Edited by Grey_Wolf
Posted
gribas arii pulksteni ? ;)

aha. lai atverot rakstu var cilvēks redzēt precīzu laiku kad tas pievienots.

 

Liels paldies par palīdzību Grey_Wolf

 

Tiktāl viss ir kārtībā.

Posted (edited)

bet vai rakstīt šitā lai atlasa 2005 gada jūniju nebūs ātrāk

select * from table where datuma_lauks >="2005-06-01" AND datuma_lauks<"2005-07-01"

 

viena projecta tabulā ar 1632365 ierakstiem un indexu uz datuma_lauks selectējot 1 mēneša ierakstus ar

* intervālu: 154,763 total, Query took 0.0225 sec

* year() un month(): 154,763 total, Query took 1.6377 sec

Edited by v3rb0
  • 2 weeks later...
Posted (edited)
viena projecta tabulā ar 1632365 ierakstiem un indexu uz datuma_lauks selectējot 1 mēneša ierakstus ar

kā var piegrabināt db ar vismaz ar miljons ierakstiem? es uztaisiju mazu skritu ar

for ($i = 1; $i <= 1000000; $i++) {...

palaidu šamo.. pec minūtes uzmeta

Fatal error: Maximum execution time of 60 seconds exceeded in C:\db.php on line 30

 

pa to minūti aptuveni 3800 ierakstus tikai veica.

 

EDIT.

 

un vai varat pateikt kadēļ man nežēlīgi bremzē lapa, ja es gribu viņā izvadīt kopējo rindu skaitu un izmantoju šādu kodu:

$query = mysql_query("SELECT * FROM zinjuarhivs"); $number=mysql_num_rows($query);
echo "<br />Kopв ievietoti raksti ".$number;

vai iespējams kāds efektīvāks veids kā izvadīt šos datus?

Edited by direktors
Posted

* nomaini tās 30 secundes uz lielāku ciparu - php configā max execution time vai kko tādu pameklē.

 

* atver ar operu, un uzliec lai automatsiki refreshojas reizi pardesmit secundēs.

 

* nedari neko no tā, bet spaidi refresh - daudz :)

Posted
set_time_limit(0)

un kaa noteiksi vai kompis uzkaaraas vai vel skripts izpildaas?

taa vismaz zini ja peec 5 min neizmet eroru japarstartee, (janokauj dotaa sesija)....

Posted (edited)

atgriežoties pie neskaidrā.

vai varat pateikt kadēļ man nežēlīgi bremzē lapa, ja es gribu viņā izvadīt kopējo rindu skaitu un izmantoju šādu kodu:

$query = mysql_query("SELECT * FROM zinjuarhivs"); $number=mysql_num_rows($query);

echo "<br />Kopв ievietoti raksti ".$number;

vai iespējams kāds efektīvāks veids kā izvadīt šos datus?

Edited by direktors
×
×
  • Create New...