Jump to content
php.lv forumi

Pentiums

Reģistrētie lietotāji
  • Posts

    617
  • Joined

  • Last visited

Posts posted by Pentiums

  1. Labdien!

    Ir te tāds skriptiņš, kas atklāj pareizi uzminētos burtus vārdā, nu līdzīgi kā Lingo spēlītē.

    <?php
    function lv_strtoupper($str) {
    $l=array('a','ā','b','c','č','d','e','ē','f','g','ģ','h','i','ī','j','k','ķ','l','ļ','m','n','ņ','o','p','r','s','š','t','u','ū','v','z','ž','ō','ŗ','x','q','w','y');
    $u=array('A','Ā','B','C','Č','D','E','Ē','F','G','Ģ','H','I','Ī','J','K','Ķ','L','Ļ','M','N','Ņ','O','P','R','S','Š','T','U','Ū','V','Z','Ž','Ō','Ŗ','X','Q','W','Y');
    return str_replace($l,$u,$str);
    }
    
    $atbilde = 'Jānis Riktīgais'; //15 simboli
    $mana_atbilde = 'Jānis Riekstiņš';
    
    $word = trim(lv_strtoupper($atbilde));
    $all_letters = lv_strtoupper($mana_atbilde).' -+.,;!?%&0123456789';
    echo strlen($word); //Jābūt 15
    for($x=0; $x < strlen($word); $x++) {
    if(strstr($all_letters, $word[$x])) {
    	if($word[$x]==" ") {
    		$word_line.="  ";
    	}
    	else {
    		$word_line.=$word[$x];
    	}
    }
    else {
    	$word_line.='_<font size=1> </font>';
    }
    }
    echo '<br><br>';
    echo $word_line;
    ?>

     

    Tātad, uz ANSI viss ir čikiniekā! Bet man tākā vajadzētu to visu iedarbināt uz UTF-8 enkodinga! Tātad problēmas ar garumzīmēm un mīkstinājuma zīmēm, uz utf-8 viņš izskaita ka frāzē ir 17 simboli nevis 15, un ja uz utf-8 es strlen aizstāju ar mb_strlen('...', 'utf-8') un strstr ar mb_strstr('...', 'utf-8') garumzīmju vietā rādas ķeburi bet izskaitīt viņš izskaita ka ir 15!!! :(

     

    Gaidīšu jūsu atsauces kā atrisināt šo problēmu.

  2. mysql> EXPLAIN SELECT DISTINCT (komentari.tid), komentari.datums as datumz, raks
    ti.curl as raksta_curl, raksti.id as raksta_id, raksti.virsraksts as raksta_nosa
    ukums, lietotaji.lietotajs as niks, lietotaji.id as lietotaja_id
    -> FROM komentari LEFT JOIN raksti ON raksti.id=komentari.tid
    -> LEFT JOIN lietotaji ON lietotaji.id=komentari.uid
    -> WHERE komentari.tips='raksts' AND komentari.id IN (
    -> SELECT k2.id FROM komentari AS k2 WHERE k2.tid=raksti.id AND k2.datums IN
    (
    -> SELECT MAX(k3.datums) FROM komentari AS k3 WHERE k3.tid=raksti.id
    -> )
    -> )
    -> GROUP BY komentari.tid
    -> ORDER BY komentari.id DESC LIMIT 5
    ->;
    +----+--------------------+-----------+-----------------+---------------+---------+---------+--------------------------+------+----------------------------------------------+
    | id | select_type		| table	 | type			| possible_keys | key  | key_len | ref					  | rows | Extra			 |
    +----+--------------------+-----------+-----------------+---------------+---------+---------+--------------------------+------+----------------------------------------------+
    |  1 | PRIMARY			| komentari | ALL			 | NULL		  | NULL  | NULL	| NULL					 |  156 | Using where; Using temporary; Using filesort |
    |  1 | PRIMARY			| raksti	| eq_ref		  | PRIMARY	   | PRIMARY | 4	   | niknais_v2.komentari.tid |	1 | Using where			 |
    |  1 | PRIMARY			| lietotaji | eq_ref		  | PRIMARY	   | PRIMARY | 4	   | niknais_v2.komentari.uid |	1 |			 |
    |  2 | DEPENDENT SUBQUERY | k2		| unique_subquery | PRIMARY	   | PRIMARY | 4	   | func					 |	1 | Using where			 |
    |  3 | DEPENDENT SUBQUERY | k3		| ALL			 | NULL		  | NULL  | NULL	| NULL					 |  156 | Using where			 |
    +----+--------------------+-----------+-----------------+---------------+---------+---------+--------------------------+------+----------------------------------------------+
    5 rows in set (0.02 sec)

  3. Vaii..

     +-----+------------+-----------+--------------------------------------------------+----------+--------------+
    | tid | datumz	 | raksta_id | raksta_nosaukums  | niks	  | lietotaja_id |
    +-----+------------+-----------+--------------------------------------------------+----------+--------------+
    | 101 | 1236240840 |	   101 | raksts2		   | lietotajs4|			1 |
    | 100 | 1236102567 |	   100 | raksts5		   | lietotajs1|			2 |
    |  99 | 1236091050 |		99 | raksts8		   | lietotajs4|			1 |
    |  87 | 1235989530 |		87 | raksts3		   | lietotajs9|			3 |
    |  94 | 1235940158 |		94 | raksts1		   | lietotajs4|			1 |
    +-----+------------+-----------+--------------------------------------------------+----------+--------------+
    5 rows in set (0.03 sec)

  4. Kas tur ko explain`ot.

     

    Jāizvelk pēdējie unikālie komentāri pēc `tid` (raksta id) pievienojot lietotāju tabulu pēc `uid` (lietotāja id) un rakstu tabulu pēc `tid`. Jāizvada pieci pēdējie komentētie raksti, tie nedrīkst atkārtoties, tapēc izmantojam DISTINCT, katram rakstam klāt piemetinam raksta jaunākā komentāra autoru un komentāra datumu.

  5. $result = mysql_query("SELECT DISTINCT (komentari.tid), komentari.datums as datumz, raksti.curl as raksta_curl, raksti.id as raksta_id, raksti.virsraksts as raksta_nosaukums, lietotaji.lietotajs as niks, lietotaji.id as lietotaja_id
    FROM komentari LEFT JOIN raksti ON raksti.id=komentari.tid
    LEFT JOIN lietotaji ON lietotaji.id=komentari.uid
    WHERE komentari.tips='raksts' AND komentari.id IN (
    SELECT k2.id FROM komentari AS k2 WHERE k2.tid=raksti.id AND k2.datums IN (
    SELECT MAX(k3.datums) FROM komentari AS k3 WHERE k3.tid=raksti.id
    )
    )
    GROUP BY komentari.tid
    ORDER BY komentari.id DESC LIMIT 5");
    $hr = '';
    while($data = mysql_fetch_array($result)) {
    echo $hr.'<span id="small"><a href="?view&profile='.$data['lietotaja_id'].'">'.$data['niks'].'</a> '.dienas(date('Y-m-d H:i', $data['datumz'])).'</span><br><b><a href="?raksts='.$data['raksta_id'].'&'.$data['raksta_curl'].'">'.$data['raksta_nosaukums'].'</a></b>';
    $hr = '<hr>';
    }

  6. Pēdējo komentēto rakstu panelis, raksti neatkārtojas. Pie pēdējā komentētā raksta parādas niks, datums un raksta nosaukums.

    Pēdējie komentētie raksti parādas korekti, bet pie raksta klāt parādas nevis tas niks un tas datums kurš pēdējo reizi to rakstu komentēja bet pirmo reizi! Bet vajadzētu pēdējo komentāra niku un datumu.

     

    SELECT DISTINCT (komentari.tid), komentari.datums as datumz, raksti.id as raksta_id, raksti.virsraksts as raksta_nosaukums, lietotaji.lietotajs niks
    FROM komentari LEFT JOIN raksti ON raksti.id=komentari.tid
    LEFT JOIN lietotaji ON lietotaji.id=komentari.uid
    WHERE komentari.tips='raksts'
    GROUP BY komentari.tid
    ORDER BY komentari.id DESC LIMIT 5

     

    komentari (tid ir raksta id un uid ir lietotāja id)

    id|datums|tid|uid|komentars

  7. tas taču papildus izvadīs tikai skaitu cik reizes ir meklēts googlē kopā

     

    EDIT:

     

    Kļūdījos, bet GROUP BY arī neder, jo refferer nav vienādi, viņam tak galā tiek piekabināti visādi pārlūka shiti, piemēram atslēgvārdi ir vienādi, bet...

     

    http://www.google.lv/search?hl=lv&q=web+kameras&btnG=Google+mekl%C4%93%C5%A1ana&meta=&aq=f&oq=
    http://www.google.lv/search?q=web+kameras&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a

  8. Sveiki, man ir while cikls, kas izvada meklēšanas frāzes ar ko ieiets lapā no googles, bet tas tā...

    Negribu izvadīt vienādas frāzes, bet gan izvadīt tikai vienu no vienādajām un galā pierakstīt skaitu cik tad ir, piemēram:

     

    Anekdotes par seksu 5
    Anekdotes zaķītis 2
    Lamuvārdi 2
    Windows vista instalācija
    ..
    ...... utt..

     

    Te mans murgs:

     

    $result = mysql_query("SELECT * FROM hits WHERE referer LIKE '%google%' AND referer LIKE '%search%' AND referer LIKE '%q=%' ORDER BY hit_id DESC") or die(mysql_error());
    while($data = mysql_fetch_array($result)) {
    $referer = substr($data['referer'], 7);
    list($domain, $address) = explode('/', $referer);
    list($shitt, $phrasee) = explode('q=', $address);
    list($phrase, $shit) = explode('&', $phrasee);
    echo '<tr>
    	<td>'.htmlspecialchars(urldecode(str_replace('+', ' ', $phrase))).'</td>
    </tr>';
    }

  9. ja komentāru skaitu vajag izvadīt pie katra jaunuma/raksta tad es daru šādi:

    SELECT raksti.*, COUNT(komentari.id) as kom_skaits FROM raksti LEFT JOIN komentari ON raksti.id=komentari.rid AND komentari.tips='raksts'
    GROUP BY raksti.id
    ORDER BY raksti.id DESC

  10. Sveiki. Kādu laiciņu neesmu te runājis :) Tātad, veidoju spēli, jāatbild uz jautājumu, priekšā tiek dota atbilde kurā ir aizklāts vārds. Piemēram, šoreiz atbilde ir "vārds" un tas ir aizklāts šādi "-----", 5 burti! Es vēlos atklāt kādu burtu, nu, piemēram, trešo

    substr_replace('-----', 'r', 2, -2);

    Whoala.. iegūstam "--r--"!

     

    Rodas tagad jautājums! Kā izrēķināt tās divas vērtības substr_replace funkcijai "start" un "length" izmantojot burtu skaitu vārdā un padodamo burtu no kreisās uz labo pusi, piemēram šoreiz tas bija 3!

×
×
  • Create New...