Jump to content
php.lv forumi

Kaklz

Moderatori
  • Posts

    1,401
  • Joined

  • Last visited

Posts posted by Kaklz

  1. bubu, a ja faila nosaukums ir malicious.file.exe ? tad extension tev būs file.exe, nevis tikai .exe ;)

     

    ja šī problēma neuztrauc, tad var droši izmantot bubu variantu, es parasti to daru ar explode:

     

    $parts = explode('.', $filename);
    $extension = $parts[count($parts) - 1];

  2. Būtībā jau problēma ir faktā, ka cilvēks, kas ir devies uz darba interviju ar savu pārliecību par savu varēšanu un prasmi ir aplauzies un tagad nevar samierināties, cenšas visā vainot potenciālo darba devēju. Izskatās bērnišķīgi.

  3. Laiks: 20 minūtes, tajā laikā pamanījos vēl ar kolēģiem parunāties un apkārt paskatīties.

     

    SQL:

    CREATE TABLE `menu` (
     `id` int(11) NOT NULL default '0',
     `title` varchar(100) NOT NULL default '',
     `parent` int(4) NOT NULL default '0',
     `collapseonclick` int(1) NOT NULL default '0',
     `lang` varchar(100) NOT NULL default '',
     PRIMARY KEY  (`id`)
    ) TYPE=MyISAM; 
    
    # MySQLCC - [Local] Query Window
    # Connection: Local
    # Host: localhost
    # Saved: 2004-09-09 13:48:58
    # 
    # Query:
    # SELECT *
    # FROM `menu`
    # 
    'id','title','parent','collapseonclick','lang'
    '1','primais','0','1','lv'
    '2','otrais','0','0','lv'
    '3','tresais','0','0','lv'
    '4','first','0','1','en'
    '5','second','0','0','en'
    '6','third','0','0','en'
    '7','pirmais - viens','1','0','lv'
    '8','pirmais - divi','1','0','lv'
    '9','tresais - viens','3','0','lv'

     

    PHP

    <?php
    
    mysql_connect('localhost', 'root', '') or trigger_error(mysql_error());
    mysql_select_db('test')  or trigger_error(mysql_error());
    $lang= (!empty($_REQUEST['lang']) ? $_REQUEST['lang'] : 'lv');
    $qry = "SELECT * FROM menu WHERE lang = '$lang' AND parent = 0;";
    $res = mysql_query($qry) or trigger_error(mysql_error());
    $activeMenuId = (!empty($_REQUEST['mid']) ? $_REQUEST['mid'] : 0);
    
    echo '<a href="?lang=lv">lv</a><a href="?lang=en">en</a>';
    while ($row = mysql_fetch_assoc($res)){
     echo '<li><a href="?mid='.$row['id'].'&lang=' . $lang . (($activeMenuId == $row['id'] && !empty($row['collapseonclick']) && empty($_REQUEST['collapse'])) ? '&collapse=1' : '') . '">'.$row['title'].'</a></li>';
     if ($activeMenuId == $row['id'] && empty($_REQUEST['collapse'])){
    	 $qry = "SELECT * FROM menu WHERE lang = '$lang' AND parent = '".$row['id']."'";
    	 $res2 = mysql_query($qry);
    	 if (mysql_num_rows($res2)){
       echo '<li class="sub"><ul>';
       while ($row2 = mysql_fetch_assoc($res2)){
      	 echo '<li><a href="?mid='.$row2['id'].'&lang='.$lang.'">'.$row2['title'].'</li>';
       }
       echo '</li></ul>';
    	 }
     }
    }
    ?>

  4. Būtībā jau neviens neaizliedz intervijā arī pateikt, ka stundas laikā tu to nevari izveikt to, ko topošais darba devējs prasa, bet izstāstīt, cik daudz un ko tu vari izdarīt stundas laikā un to arī nodemonstrēt.

  5. a tad vispaar kas askiriigs no 4urtaas versijas tur ir?

     

    /me slinkums pasham likt un skatiities (:

    uzliekot un paskatoties nekādu atšķirību tu neredzēsi :P pavazājies pa zend.com, tur atradīsi ;)

  6. Ja ir pieejams SimpleXML, tad tas kljuust pavisam triviaali

     

    <?php
    $xmlstr = file_get_contents('xml.xml');
    $xml = simplexml_load_string($xmlstr);
    $currencyList = $xml -> body -> crates -> currencies -> currency;
    foreach ($currencyList as $currencyItem){
     echo $currencyItem -> id . $currencyItem -> units . $currencyItem -> rate . "<br />";
    }
    ?>

  7. bankas valūtu kursus var dabūt viņu lapā:

    http://www.bank.lv/vk/xml.xml

     

    Reiz sensenos laikos, kad man nebija pieejams ne SimpleXML, ne xml saimes funkcijas uzrakstīju pāris funkcijas:

     

    <?php
    function valuta($kods){
    $str = file('http://www.bank.lv/vk/xml.xml');
    $str = join('', array_slice($str, 4, count($str) - 7));
    $str = str_replace("\n", '', $str);
    $str = str_replace("\r", '', $str);
    $str = preg_replace("/[\t]*/", '', $str);
    $str = preg_replace("/[ ]*/", '', $str);
    $str = str_replace('<Currency><ID>', '', $str);
    $str = str_replace('</ID><Units>', '-', $str);
    $str = str_replace('</Units><Rate>', '-', $str);
    $str = str_replace('</Rate></Currency>', "\n", $str);
    $valutas = explode("\n", $str);
    foreach ($valutas as $valutaItem){
     $valutaInfo = explode('-', $valutaItem);
     $valutasListe[$valutaInfo[0]] = $valutaInfo[1] . $valutaInfo[0] . ' maksaa Ls ' . ($valutaInfo[2] * 1);
    }
    return $valutasListe[$kods];
    }
    
    
    function listvaluta(){
    $str = file('valuta.xml');
    $str = join('', array_slice($str, 4, count($str) - 7));
    $str = str_replace("\n", '', $str);
    $str = str_replace("\r", '', $str);
    $str = preg_replace("/[\t]*/", '', $str);
    $str = preg_replace("/[ ]*/", '', $str);
    $str = str_replace('<Currency><ID>', '', $str);
    $str = str_replace('</ID><Units>', '-', $str);
    $str = str_replace('</Units><Rate>', '-', $str);
    $str = str_replace('</Rate></Currency>', "\n", $str);
    $valutas = explode("\n", $str);
    foreach ($valutas as $valutaItem){
     $valutaInfo = explode('-', $valutaItem);
     $valutasListe[] = $valutaInfo[0];
    }
    return 'reku sheku, man ir shitaadi valuutas kursi: ' . join (', ', $valutasListe) . '. Ko vinji katrs noziimee, gan man neprasi :P';	
    }
    ?>

  8. Ahh, tas OOP mani padarīs traku! Līdzko viena problēma atrisināta, uzrodas nākamā. :)

     

    Tagad man ir divas klases - viena tabulu veidošanai:

     

    ..

     

    otra form elementiem:

     

    ..

     

    Bet ko darīt situācijā, ja man ir vēlme izveidot Groupbox (no form klases), ievietot iekš tā tabulu (no table klases), un iekš tabulas likt atkal form elementus?

    Piedrāzt to OOP tādā gadījumā :)

     

    Man arī iesākumā likās, ka formas ģenerēt ar OOP palīdzību ir stilīgi, labi, tālejoši domājoši un tā tālāk. Bet tā nav. Katra forma jebkurā gadījumā ir savādāka un prasa savādāku pieeju, tāpēc es ieteiktu aizmirst par OOP kodu, kas ģenerē formas. Daudz vienkāršāk ir ņemt un formas sarakstīt tīrā XHTML un pēc tam vienādi ar CSS noformēt.

     

    Tieši to pašu es gribētu teikt par tabulu veidojošo klasi - lai paredzētu visus tabulu veidus, kādus vien var ievajadzēties, tev nāksies 20 reizes izgudrot jaunu divriteni, pie tam tu tikai lieki sarežģīsi savu kodu. OOP ir izmantojams vietās, kur tas dzīvi atvieglo, nevis rada liekas problēmas.

     

    Tam visam ir viens iemesls - tu nevari paredzēt un iekļaut visus formas atribūtus savā OOP kodā. Kaut vai viens piemērs - uztaisi man ar savu OOP kodu read-only text input lauku. Ko darīsi? Pārrakstīsi savu klasi. Nākamais piemērs - uztaisi man ar savu OOP kodu teksta lauku, kurā var ierakstīt ne vairāk kā 100 simbolus - atribūts maxlength, atkal vēl viens parametrs, kas ir nododams klases metodei. Tā varētu turpināt līdz bezsamaņai, jo jebkurā brīdī klients var palūgt, lai tu ievieto blakus divus teksta laukus (teiksim, personas kodam) un atkal tev nākas pārrakstīt savu klasi. Tajā pašā laikā, rakstot formas kodu no rokas tu uz šīm izmaiņām vari noreaģēt burtiski dažu minūšu laikā un nebūs jālauza galva par to, vai tavs OOP kods tādu lietu atļauj, vai nē.

  9. ir divi dažādi gadījumi, kuros attiecīgi ir jārīkojas atsevišķi.

     

    1) ja pievienotā informācija nav domāta labošanai, tad var datubāzē saglabāt informāciju ar HTMLENTITIES, HTMLSPECIALCHARS vai vēl kādu citu filtru.

     

    2) ja pievienotā informācij vēl būs jālabo, tad datubāzē vajadzētu glabāt visu informāciju tieši tādu, kāda tā nāk no lietotāja (protams, novēršot SQL injekciju iespējamību ar addslashes/mysql_escape_string vai kādu citu līdzvērtīgu funkciju citai datubāzu pārvaldības sistēmai.

  10. Es te skatīju cauri un brīnījos, kādēļ visi runā par nezkādiem tur specifiskiem php random ciklu skriptiem, lai, piemēram, izdabūtu randomā banerus. Es pamēģināju SELECT *... WHERE ... GROUP BY RAND (). Un man randoms uz atselektētajiem pēc kritērijiem baneriem darbojas. Vai ir kāds iemesls, kādēļ visi šo parasto MySQL fīču neizmanto? Esmu iesācējs iekš PHP, tādēļ varbūt jautājums tāds dikti vienkāršs :)

    Kādēļ neizmantot GROUP BY RAND () ???

    grupēšana noteikti strādās ilgāk par sakārtošanu, tāpēc parasti izmanto SELECT * FROM tabula ORDER BY RAND() ASC;

  11. ja kādreiz kaut kur lasi manuāļos par 'generic font family', tad zini, ka tās ir tās divas iepriekš pieminētās fontu grupas 'serif' un 'sans-serif'.

    note: nevis divas, bet vismaz 5 -

    serif, sans-serif, cursive, fantasy, monospace

    sans ir Franču vārds

     

    serif no sans serif atšķiras ar to, ka viņiem ir tādi "īsinājumi" un papildlīnijas burtu līniju galos, sašaurinājumi. sans-serifi ir tādi "taisnstūrīgāki", it kā zīmēti ar reisfēderu.

     

    attiecībā uz ievēro to, ko teica blackhalt par fontu grupām - to nu kā jau dizainiera sirds pateiks. /me piemēram grib datumus redzēt vai nu georgia, vai verdana.

    o, paldies par skaidrojumu!

  12. body {font-family: georgia, verdana, tahoma,  sans-serif, arial; font-size: 13px}

    fonti ir jānorāda prioritārā secībā, kuru gribi kā pirmo, kuru kā otro, kuru kā trešo. Pririotāte ir vajadzīga tikai gadījumā, ja lietotāja datorā nav kāda no fontiem. Šajā gadījumā tavs aprakstošais CSS izskatās kā ' Meklējam lietotāja datorā fontu Georgia, ja neatrodam, meklējam verdana, ja neatrodam meklējam tahoma, ja neatrodam, ņemam jebkuru fontu, kuram nav serif efekta, bet ja arī tādu nav, tad ņemam arial'

     

    Viss šis ir galīgi neloģiski, jo

    1) ievēro to, ko teica blackhalt par fontu grupām. Ir divu veidu fontu grupas - ar serif efektu un bez. Ar serif efektu ir fonti times new roman, georgia un tiem līdzīgi, bez serif efekta ir fonti arial, tahoma, verdana, helvetica, utt. CSS to var pierakstīt vienkārši - fontiem ar serif efektu raksti 'serif' un fontiem bez serif efekta raksti 'sans-serif' (kaut kādā valodā, iespējams, ka latīņu, 'sans' nozīmē 'bez')

    2) aiz sans-serif vēl norādīt konkrētu fontu ir absolūti garām, jo pasakot, ka tu esi ar mieru ņemt jebkuru fontu no šīs grupas, lietotāja dators tā arī izdarīs.

     

    tātad savu stilu tu vari aprakstīt kā

    body {font-family: georgia, serif; font-size: 13px}

    vai

    body {font-family: verdana, tahoma, arial, sans-serif; font-size: 13px}

     

    P.S. ja kādreiz kaut kur lasi manuāļos par 'generic font family', tad zini, ka tās ir tās divas iepriekš pieminētās fontu grupas 'serif' un 'sans-serif'.

  13. Unknown column 'msgtime' in 'where clause'

     

    Msg time bija mysql fields msgtime...

    to arī nozīmē - tavā kolonu sarakstā kolonas ar nosaukumu 'msgtime'

     

    iespējamie cēloņi:

    1) neesi pie from ielicis tabulu, kura satur šo kolonu

    2) esi pārrakstījies rakstot kolonas nosaukumu

    3) case - sensitivity? lai gan ja pareizi atceros, tad kolonu nosaukumiem nav atšķirības, vai tos raksta ar lielajiem, vai mazajiem burtiem.

×
×
  • Create New...