Jump to content
php.lv forumi

imop

Reģistrētie lietotāji
  • Posts

    30
  • Joined

  • Last visited

Profile Information

  • Location
    Latvija, Talsi

imop's Achievements

Newbie

Newbie (1/14)

  1. patiesībā jau ir tā ka man tā funkcijas ir gaužām svešas, tapēc jau vēršos šeit pēc padoma un vēlēdot kādas mazliet reālākas atbildes. Piemēram kur paskatāities, palasīt info kā šādas sakarības var izveidot! Veidoju ko tādu pirmo reizi!
  2. Tie varianti tika izmēģināti un neviens īsti nestrādā, ja skaitlis ir: 101.90 tad man jāizvada - viens simts viens lats, 90 santīmi patreiz ir - viens simts viens lats, 90 santims ja skaitlis ir 101.91 tad jāizvada - viens simts viens lats, 91 santīms patreiz ir - viens simts viens lati, 90 santīmi ja skaitlis ir 80.10 tad jāizvada - astoņdesmit lati, 10 santīmi patreiz ir - astoņdesmit lats, 10 santims utt. vajadzētu lai skripts atšķir kad ir desmiti / simti / tulkstoši - man nekādigi nesanāk Šeit viss skripts: <?php /** * o------------------------------------------------------------------------------o * | This package is licensed under the Phpguru license. A quick summary is | * | that for commercial use, there is a small one-time licensing fee to pay. For | * | registered charities and educational institutes there is a reduced license | * | fee available. You can read more at: | * | | * | http://www.phpguru.org/static/license.html | * o------------------------------------------------------------------------------o * */ /** * Converts a given number to a textual representation of it */ class TextualNumber { private static $units = array(NR_0, NR_1, NR_2, NR_3, NR_4, NR_5, NR_6, NR_7, NR_8, NR_9); private static $teens = array(NR_10, NR_11, NR_12, NR_13, NR_14, NR_15, NR_16, NR_17, NR_18, NR_19); private static $tens = array(2 => NR_20, NR_30, NR_40, NR_50, NR_60, NR_70, NR_80, NR_90); private static $suffix = array(NR_1000, NR_MILL, NR_BILL, NR_TILL, NR_QUAD); /** * Returns appropriate text for given number. Despite * appearances the number should (though isn't required) be * passed in as a string. This allows large numbers to be * converted. Integers are handled just fine though. * Negative numbers are handled fine. * * The billion/trillion etc suffixes are done using the American * style (eg 9 zeros for billion, 12 for trillion), which albeit * being mathmetically incorrect, is (I believe) the commonly * accepted norm. Since this code was written for the purpose * of validating human vs spider form submissions, this is the * more appropriate way to go. * * @param string $int The number to convert. Optional. * @return text Resulting text */ private static function ToString($int) { // Check for purely numeric chars if (!preg_match('#^[\d.]+$#', $int)) { throw new Exception('Invalid characters in input'); } // Handle decimals if (strpos($int, '.') !== false) { $decimal = substr($int, strpos($int, '.') + 1); $int = substr($int, 0, strpos($int, '.')); } // Lose insignificant zeros $int = ltrim($int, '0'); // Check for valid number if ($int == '') { $int = '0'; } // Lose the negative, don't use abs() so as to allow large numbers if ($negative = ($int < 0)) { $int = substr($int, 1); } // Number too big? if (strlen($int) > 18) { throw new Exception('Out of range'); } // Keep original number $orig = $int; /** * Main number deciphering bit thing */ switch (strlen($int)) { // Single digit number case '1': $text = self::$units[$int]; break; // Two digit number case '2': if ($int{0} == '1') { $text = self::$teens[$int{1}]; } else if ($int{1} == '0') { $text = self::$tens[$int{0}]; } else { $text = self::$tens[$int{0}] . ' ' . self::$units[$int{1}]; } break; // Three digit number case '3': if ($int % 100 == 0) { $text = self::$units[$int{0}] . ' simts'; } else { $text = self::$units[$int{0}] . ' simts ' . self::GetText(substr($int, 1)); } break; // Anything else default: $pieces = array(); $suffixIndex = 0; // Handle the last three digits $num = substr($int, -3); if ($num > 0) { $pieces[] = self::GetText($num); } $int = substr($int, 0, -3); // Now handle the thousands/millions etc while (strlen($int) > 3) { $num = substr($int, -3); if ($num > 0) { $pieces[] = self::GetText($num) . ' ' . self::$suffix[$suffixIndex]; } $int = substr($int, 0, -3); $suffixIndex++; } $pieces[] = self::GetText(substr($int, -3)) . ' ' . self::$suffix[$suffixIndex]; /** * Figure out whether we need to add "and" in there somewhere */ $pieces = array_reverse($pieces); if (count($pieces) > 1 AND strpos($pieces[count($pieces) - 1], ' and ') === false) { $pieces[] = $pieces[count($pieces) - 1]; $pieces[count($pieces) - 2] = 'and'; } // Create the text $text = implode(' ', $pieces); // Negative number? if ($negative) { $text = 'minus ' . $text; } break; } /** * Handle any decimal part */ if (!empty($decimal)) { $pieces = array(); $decimal = preg_replace('#[^0-9]#', '', $decimal); for ($i=0, $len=strlen($decimal); $i<$len; ++$i) { $pieces[] = self::$units[$decimal{$i}]; } $text .= ' point ' . implode(' ', $pieces); } return $text; } /** * Returns text for given number. Parameter should ideally * be a string (to handle large numbers) though integers are * OK. * * @param string $int Number to convert * @return string Resulting textual representation */ public function GetText($int) { return self::ToString($int); } /** * Returns text and number for a randomly generated number. * * @return array Array of number and textual representation */ public function Get() { $int = mt_rand(); return array($int, self::ToString($int)); } /** * Returns currency version of a given number. * * @param string $int Number to convert * @param string $major Word to use for left hand side of decimal point * @param string $minor Word to use for right hand side of decimal point * @return string Resulting string */ public function GetCurrency($int, $major = 'lats', $minor = 'santims') { if (strpos($int, '.') !== false) { $left = substr($int, 0, strpos($int, '.')); $right = substr($int, strpos($int, '.') + 1); // Mainīgais pirms punkta ? if (substr($left,1,strlen($left)) <= 1) { $major = 'lats'; } else { $major = 'lati'; } // Mainīgais pēc punkta ? if (substr($right,1,strlen($right)) <= 1) { $minor = 'santīms'; } elseif (substr($right,0,strlen($right)) == 90) { $minor = 'santīmi'; } else { $minor = 'santīmi'; } // $text = self::GetText($left) . " $major and " . self::GetText($right) . " $minor"; // Cena ar cipars Lats, cipars santīms $text = self::GetText($left) . " $major, " . $right . " $minor"; // Cena ar cipars Lats, 31 santims } else { $text = self::GetText($int) . " $major"; } return $text; } } ?>
  3. Sveika tauta! Man maza problēma ar cipariem un LV locījumiem pie skaitļu izvades ar vārdiem. piem_1. ja summa ir 11.21 man izvadās: vienpadsmit Lati, 21 santīms piem_2. ja summa ir 10.20 man izvadās: desmit Lats, 20 santīms Tā pati problēma ir ar gan latiem, gan santīmiem - 0 / 10 / 20 / 40 / utt. Latiem izvadās kā piem. četrdesmit Lats, 00 santīms šeit ir kods: public function GetCurrency($int, $major = 'lats', $minor = 'santims') { if (strpos($int, '.') !== false) { $left = substr($int, 0, strpos($int, '.')); $right = substr($int, strpos($int, '.') + 1); // Mainīgais pirms punkta $major ? if (substr($left,1,strlen($left)) <= 1) { $major = 'lats'; } else { $major = 'lati'; } // Mainīgais pēc punkta $minor ? if (substr($right,1,strlen($right)) <= 1) { $minor = 'santīms'; } else { $minor = 'santīmi'; } // $text = self::GetText($left) . " $major and " . self::GetText($right) . " $minor"; // Cena ar cipars Lats, cipars santīms $text = self::GetText($left) . " $major, " . $right . " $minor"; // Cena ar cipars Lats, 31 santims } else { $text = self::GetText($int) . " $major"; } return $text; } zinu ka kodam vajadzēti izskatīties apmērm šādam: // Mainīgais pirms punkta $major ? if (substr($left,1,strlen($left)) <= 1) { $major = 'lats'; } elseif (substr($left,2,strlen($left)) == 10) { $major = 'lati'; } else { $major = 'lati'; } bet man neizdodās to panākt, vai arī kods ignorē to skaitli Help...
  4. imop

    Gabaldarbs!

    Sveiki! Klientam mainījās domas par lapu, tapēc nākās pārstrādāt tehnisko specifikāciju. Līdz 12.aprīlim viss būs saskaņots, tad arī būs pieejams dokuments.
  5. imop

    Gabaldarbs!

    Nepieciešams izveidot weblapu / CMS: 1) PHP 2) MySQL 3) JavaScript / Jquery 4) Flash (pēc vienošanās) - minimāli Programēšanai paredzētā summa ap 350 LVL (neskaitot flash) p.s. Par pirmām iemaksām vienosimies!
  6. Man šeit doma panesās a kapēc nē ja nu var šādi kaut ko ar php kopā: Lai nav jāraksta lielais penteris pēc augšējā parauga, kas pie lielākām DB varētu būt smagnējs process... bet gan ar šāda veidojuma palīdzību paveikto to visu automātiski: <?php // Piesledzos mysql_connect("localhost","lietotajs","parole"); mysql_select_db("datubazes_nosaukums"); // Nu tad aiziet $res = mysql_query("SHOW TABLES"); while ($row = mysql_fetch_array($res) while ($col = mysql_fetch_array($res) ) { foreach ($row as $key => $table) foreach ($col as $key => $column) { mysql_query("ALTER TABLE " . $table . " MODIFY " . $column . " BINARY('255');"); echo $key . " => " . $table . " un " . $column . " <b>IZDEVAS</b> parveidot<br />"; mysql_query("ALTER TABLE " . $table . " MODIFY " . $column . " VARCHAR('255') CHARACTER SET utf8 COLLATE utf8_bin;"); echo $key . " => " . $table . " un " . $column . " <b>IZDEVAS</b> parveidot<br />"; mysql_query("UPDATE " . $table . " SET " . $column . " = REPLACE(" . $column . ", x'00', '');"); echo $key . " => " . $table . " un " . $column . " <b>IZDEVAS</b> parveidot<br /> <br />"; } } ?> Tikai problēma, kā lai pasaka php ka viņam jāčēko sākumā TABULA kurās ir tikai "VARCHAR('???')" kur ??? vietā var būt dažādi skaitļi piem.: 1, 32, 255 utt. un veic darbibu: mysql_query("ALTER TABLE " . $table . " MODIFY " . $column . " BINARY('???');"); echo $key . " => " . $table . " un " . $column . " <b>IZDEVAS</b> parveidot<br />"; Tad kad tas ir pārveidots, lai sāk čēkot tās TABULAS kurās ir tikai "BINARY('???')", kur ??? vitā var būt dažādi skaitļi piem.: 1, 32, 255 utt. un veic darbību: mysql_query("ALTER TABLE " . $table . " MODIFY " . $column . " VARCHAR('255') CHARACTER SET utf8 COLLATE utf8_bin;"); echo $key . " => " . $table . " un " . $column . " <b>IZDEVAS</b> parveidot<br />"; nu un trešā darbība ir easy, bet jautājums vai tas ir iespējams izvilkt no DB to ko es vēlos un veikt konkrētās darbības, ja ir tad varbūt varat palīdzēt?
  7. Sākumā nevarēju saprast kapēc man aiz visiem uzrakstiem parādās \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 bet beigās palasīju laacz rakstu mazliet uzmanīgāk un galu galā man izdevās! Tad darīju tā: Sākumā ALTER TABLE `kategorijas` MODIFY `kategorijas_nosaukumi` BINARY(255); un tad tikai uz utf8 ar šo: ALTER TABLE `kategorijas` MODIFY `kategorijas_nosaukumi` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin; un tad noņemam nulles un visu slashus "\" nost UPDATE `kategorijas` SET `kategorijas_nosaukumi` = REPLACE(`kategorijas_nosaukumi`, x'00', ''); Jāatdzīst penteris snāk liels pa visu DB, bet galarezultāts ir tas ko es vēlējos viss ir smuki un pareizi! Paldies!
  8. thx visiem, tiešām būs ko apsmadzeņot, tā kā viss tiek apgūts tad tiešām paldies! par rezutātie painformēšu kas un kā man izdevās! p.s. īsti vīri backup tomēr taisa un paglabā kādu laiku! :D
  9. Pašā DB jāsaimana charset/collation visām tabulām, kā default man tagad stāv utf8_bin pie ierakstu veidošanas, bet gan pašām tabulām ir latin1_swedish_ci Viens risinājums ir paņemt eksportēt DB iekopēt kādā editorā un samainīt vienkārši latin1 ierakstus uz utf8 un latin1_bin uz utf8_bin, bet nezinu vai tas īsti ir pareizi, jo tad viņš man DB rāda visām tabulām utf8_general_ci, ja tas neimaina lietas būtību, tad var arī palikt utf8_general_ci ir ok - utf8_general_ci vai tomēr utf8_bin
  10. Sveiki! Man jautājums par to kā var noaminīt jau esošai DB "Collation" no latin1_swedish_ci uz utf8_bin, Bet VISĀM tabulām, mēģināju palaist šādu (ALTER DATABASE `manabaze` CHARACTER SET utf8 COLLATE utf8_bin;) skriptu iekš phpmyadmin, bet nesanāca :( varbūt kāds zin kā to var izdarīt savādāk man ar rokām mainīt visam būtu pārāk ilgi!
  11. Paldies par piedalīšanos konkursā, ir izvēlēts cilvēks kur šo darbu paveiks! Ja būs vēl kādi darbi veicami publicēšu tos forumā! AC, imop
  12. Principā viņš paliks viens pats! klients atzīmē checkbox, tad tiesnešu skaitu, summu utt un viss izdod aprēķinu!
  13. Tā tad lieta sekojoša: Pašam nav tādu prasmju, tapēc ir vajadzīgs kāds kurš to izveidos! ir vajadzīgs kalkulātors loti līdzīgs šim: kalkulators Jautājums paliek atklāts: Kurš ko tādu varētu izveidot tuvāko dienu laikā? Samaksa: Piedāvājums ar zemāko cenu! (puse pirms izveides un puse pēc) gaidu piedāvājumus!
  14. Te jau viņam ir norādīts ka sniegs krīt iekš body un iekš tādos parametros var i, doc_width = 800, doc_height = 600;
×
×
  • Create New...