Jump to content
php.lv forumi

vairāki jautājumi


bra

Recommended Posts

kodējot šādus tādus scitiņus man ir radušies pāris jautājumi...

1) kā teiksim izmantojot rand() f-ciju varētu iegūt 5 ciparu skaitli, kurš nekad neatārtos un teiksim ja dadijumā atkārtotos (pārbaudot ieš db atrodamos) tad irpildam atkal šo pašu f-ciju lai iegūtu skaitli kurš neatkārtotos.

 

2) kā noteikt dir izmēru (KB vai MB) nevis faila, bet dir, un kā noteikt kādas konkrētas MySql DB izmēru (KB vai MB)

 

3)kur varētu iegūt viegli iesācējam lasāmu materiālu(s) par OOP ja nemalod jāzeps bija ko saraxtījis, bet šobrīd laikam tas viss nav peejams. visur kur meklēju atduros uz to ka viss ir baigi gudri saraxtīc, bet tā saprotami nekur, jā saprotmi tas ir tiem kuri to jau zin bet ne iesācējam. Un kapēc visipar OPP ir jāizmanto man teiksim nepatīk tas ka esot jānodefinē mainīgais jau klases sākumā, vai tas neierobežo jo teiksim f-cijām tas tā nav jādara. Varbūt pēdējais teikums izklausījās, pēc zonoša cilvēka, bet par OPP man ir radies tāds priekštats pētot sorces un mēģinot lasīt dažādus materiālus. un teiksim šo te $this-> es vispār neizprotu no kurienas tas $this rodas utt .

 

4)kā pārlūkā izvadīt dienu skaitu cik palikušas, līdz kādam konkrētam datumam vai arī, cik pagājušas dienas kopš kāda konkrāta datuma

 

Palies jau iepriekš

 

P.S.šinī forumā nav iespējams neko atrast meklējot pēc OOP jo liegta iespēja meklēt ja vārds satur mazāk kā 4 simbolus

Edited by bra
Link to comment
Share on other sites

1) priekškam tas vajadzīgs? vai nav vienkāršāk likt iekš db kolonna NULL vērtību, kurai flags ir AUTO_INCREMENT, tādējādi panākot, ka vienmēr arī būs unikālas vērtības? Ja nu tas tomēr neder (lai gan nesaprotu kāpēc) tad tak elementārs cikls (nesaprotu, kā līdz tādam var nedadomāties??):

do {
 $i = rand(10000, 99999);
 $q = mysql_query("SELECT COUNT(*) FROM tabula WHERE kolonna = $i");
 list($cnt) = mysql_fetch_row($q);
 mysql_free_result($q);
} while ($cnt > 0);

 

2) datubāzes izmēru var noteikt summējot kolonnas Data_length vērtības šādā kverijā:

SHOW TABLE STATUS FROM database

(sīkāka infa iekš - http://dev.mysql.com/doc/mysql/en/show-table-status.html)

a bet direktorijām vienkārši: uzraksti rekursīvu procedūru, kas apstaigā direktorijas un summējot atgriež kopēju izmēru (pameklē pa šito forumu, kautkas tāds jau ne vienrez vien ir bijis te apspriests un rakstīts tam kods)

 

3) tik vienkāršu aprasktu neatradīsi, un zin, īpaši jau to - kāpēc vispār oop jālieto. Ja tev pietiek ar to kas ir, tad lieto laimīgs un īpaši nesatraucies par to OOP. Var mierīgi iztikt bez tās. (par tiem mainīgajiem klases sākumā - nav taisnība, ka fjām tie nav jādefinē - kas tad fjām ir parametri? tos arī nevajag definēt?)

 

4) ļoti vienkārši:

$datums = mktime(0, 0, 0, 2, 10, 2004); // 2004. gada 10. februāris
$info = getdate();
print_r($info);
$tagad = mktime(0, 0, 0, $info['mon'], $info['mday'], $info['year']); // tekošais datums
$delta = intval(($datums-$tagad)/(3600*24));
if ($delta > 0) {
 echo "Vēl palikusi(-šas) ".$delta." diena(s)!";
} else if ($datums < $tagad) {
 echo "Jau pagājusi(-šas) ".(-$delta)." diena(s)!";
} else {
 echo "Tā ir šodiena!";
}

 

P.S. nemeklē - pabrowsē ierakstus zem OOP sadaļas, īpaši tos, kuriem lielākais atbilžu skaits vai ir visskatītākie!

Link to comment
Share on other sites

paldies, bet vel joprojām netieku skaidrībā ar to dir zimēru kā to varētu panākt lv.php.net atradu šādu te kodu, bet kā viņš būtu parezi jāpielieto

<?php
function dirsize($dirName = '.') {
  $dir  = dir($dirName);
  $size = 0;

  while($file = $dir->read()) {
      if ($file != '.' && $file != '..') {
          if (is_dir("$dirName$file")) {
              $size += dirsize($dirName . '/' . $file);
          } else {
              $size += filesize($dirName . '/' . $file);
          }
      }
  }
  $dir->close();
  return $size;
}
?>

 

P.S. adminiem nu salabojiet lūdzu to meklētāju jo simbolu skaits 3 ir biku par daudz nevar neko smuku sameklēt un ta vel brīnaties ka daudzu dumju jautājumu

Edited by bra
Link to comment
Share on other sites

nu pag vai tad ' . ' nonozīmē tekošo dru? :blink:

 

par MySql DB izmēru izmantoju šādu te kodu

$all = mysql_query("SHOW TABLE STATUS");
if (!$all) { echo( mysql_error()); } else { while ($row = mysql_fetch_array($all)) {

echo $row["Data_length"]; 
}
}

bet problēmas rodas tad ja vēlos saskaitīt visu kopā ir kādas idejas kā pārlūkā izvadīt visu DB izmēru?

Edited by bra
Link to comment
Share on other sites

Nu tak netaisi echo $row["Data_length"];!

Taisi: $sum += intval($row["Data_length"]);

un tad pēc cikla, pašās beigās: echo "Db izmērs = $sum";

14044[/snapback]

 

ņā bet šis man izdod

total: 328

total: 37144

total: 37336

total: 37880

total: 39024

total: 39652

total: 50512

total: 50672

total: 51496

total: 52003

total: 52003

total: 73995

total: 74619

 

bet man vajag visu vienā tipa saskaitīt visus šitos

 

par to dir izmēru kā tad izsaukt to fuciju

nadrabojas ne

dirsize($dirName = '.')

vai

dirsize($dirName = 'manadira')

nez arī

dirsize()

un kurnu vel

$dir ="manadira";

dirsize($dir);

Edited by bra
Link to comment
Share on other sites

Nu cilvēk! Ja tev ciklā ir rakstīts: echo $row["Data_length"]; Tad ko vēl tu sagaidi, ja ne izvadīšanu uz ekrāna kaudzi ar skaitļiem!?!

Ja gribi saskaitīt, tad tā arī raksti: $sum += intval($row["Data_length"]);

Eh... kad reiz cilvēki sāks rakstīt tā kā runā, nevis raksta vienu un brīnās kāpēc tas nestrādā savādāk!?!

$q = mysql_query("SHOW TABLE STATUS FROM tavas_db_nosaukums");
$sum = 0;
if ($q) {
 while ($row = mysql_fetch_array($all)) 
   $sum += intval($row["Data_length"]);
 mysql_free_result($q);
}
echo "Tavas DB izmērs = $sum";

Edited by bubu
Link to comment
Share on other sites

par to dir izmēru kā tad izsaukt to fuciju

nadrabojas ne

dirsize($dirName = '.')

vai

dirsize($dirName = 'manadira')

Rādās, ka tomēr nezini, ko tā sintakse nozīmē. Palasi manuāli: http://lv.php.net/manual/en/functions.argu...guments.default

 

un kurnu vel

$dir ="manadira";

dirsize($dir);

Un kāpēc lai gan šis nestrādātu?
Link to comment
Share on other sites

Shadu variantu es izmantoju:

 

function formatsize($file_size){

 if($file_size >= 1048576)
 {$file_size = round($file_size / 1048576 * 100) / 100 . "Mb";}
   elseif($file_size >= 1024)
           {$file_size = round($file_size / 1024 * 100) / 100 . "Kb";}
   else{$file_size = $file_size . "b";}

return $file_size;
}

un pec tam tik echo "formatsize($sum)";

Link to comment
Share on other sites

×
×
  • Create New...