jo, velnias, pamiršau yra :) Taip, iš kitos lentos yra insertinama kai atsiranda naujas įrašas (db irgi skiriasi). Problema, kad galima įvesti naują vertimą tiek per viena tiek per kitą vietą, o lentelių struktūra skiriasi.

vertimų lentos trigeris:

BEGIN
    INSERT INTO `vocabulary` (OXID,oxtrans_LT,oxtrans_LV,oxtrans_EE,oxtrans_RU,oxtrans_EN,oxtrans_SE,oxtrans_FI,oxtrans_NO,oxtrans_DK) 
        VALUES (NEW.id,NEW.lt,NEW.lv,NEW.ee,NEW.ru,NEW.en,NEW.se,NEW.fi,NEW.no,NEW.dk);
   END

man kažkodėl meta klaidą, kai bandau įrašyti duomenis į tėvinę lentą.
#1442 - Can't update table 'vocabulary' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

Trigeris:

DROP TRIGGER IF EXISTS `vertimai_INSERT` ;

CREATE DEFINER = `root`@`localhost` TRIGGER `vertimai_INSERT` BEFORE INSERT ON `vocabulary`
FOR EACH ROW 
BEGIN 
IF( NEW.oxtype <>3 )
THEN
INSERT INTO `vertimai` (id,lt,lv,ee,ru,en,se,fi,no,dk)
VALUES (
NEW.OXID, NEW.oxtrans_LT, NEW.oxtrans_LV, NEW.oxtrans_EE, NEW.oxtrans_RU, NEW.oxtrans_EN, NEW.oxtrans_SE, NEW.oxtrans_FI, NEW.oxtrans_NO, NEW.oxtrans_DK
);

END IF ;

END

insertas:

 INSERT INTO `vocabulary` (`OXID`, `OXTYPE`, `OXTRANS_LT`, `OXTRANS_LV`, `OXTRANS_SE`, `OXTRANS_FI`, `OXTRANS_EN`, `OXTRANS_EE`, `OXTRANS_RU`, `OXTRANS_PL`, `OXTRANS_NO`, `OXTRANS_DK`) VALUES ('12345678901234567890123456789011', '2', 'rgthyer', 'wrhtwhtw', '', '', '', '', '', '', '', '')

problema kaip suprantu yra "IF( NEW.oxtype <>3 )", ka siššaukia trigerio cikliškumą. Kaip apeiti šią vietą? Noriu tik tam tikrus įrašus perkelti į kitą lentutę (konkrečiai jeigu oxtype nelygu 3).

pasižaidžiau su strpos ir strlen ir gavau reikiamą galunę :) problem solved.

Situacija:
turiu pavadinimą, kuris savyje turi kelis delimiterius. Pirmąjį randu pagal jau žinomą masyvą ir galiu delimiterį išsisaugoti iš db kito stulpelio reikšmės. Antrojo gali ir nebūti, tačiau visos jo reikšmės yra saugojamos db. Kaip išsisauoti antrąjį delimiterį, pagal kurį buvo (arba ne) padalintas galas sakinio?

Jau esu daėjęs iki vietos, kad atsikertu ten kur reikia, bet pačio delimiterio negaunu.

Info pvz:

valio alio XXXXX X aaa Y
alio valio valio valio YYYYY aaa Y
alio valio valio XXXXX X bbb
alio valio valio valio YYYYY bbb Y

pirmieji delimiteriai: "XXXXX" ir "YYYYYY"
antrasis delimiteris turėtų būti "aaa" ir "bbb" kaip man prie kiekvienos eilutės juos išsitraukti? Abudu delimiteriai yra masyvai iš 3k+ elementų.

man keli adminai sakė, kad windows 2008 R2 serveris negali pasikurti mysql (net ir 64 bitų) su didesniu nei 1GB ram'o naudojimu (pvz innodb). Ar yra kokie tai nustatymai tarkim WAMP'o konfige pasikeisti, kad mysqld64.exe naudotų bent 50% ramo. šiuo metu serve yra 32GB ramo.

Norisi pasitikrinti kada dingsta info. Turiu lentutę, kurioje norisi stebėti vieno įrašo duomenis tarkim kas 5minutes. Ar aš galiu mysql'e pasirašyti kažkokį eventą, kad jis tam tikro įrašo lentutėje A dėtų į lentutę B kas 5 minutes?
Kaip atrodytų viskas mysql'e ? :)

ačiū, buvau pamiršęs panaudoti tą pačią lentutę du kartus vienoje užklausoje skirtingose aliasuose :)
Kaip turi būti antroji užklausa? Ką ji turėtų parinkti? Tik tą laiko intervalą?
ON bus s1.uzsakymo_nr=s2.uzsakymo_nr

P.S. spėju LEFT JOIN (select2) turėjo būti, taip?

NA 10 peržiūrų ir nė vienas expertas nesupratot? :)
lentutė:
uzsakymo_nr | uzsakymo_data | pastas | uzsakymo_busena | data | mob_nr

kaip man pagal pirmąją užklausą dar pasitikrinti gautus rezultatus iš visos lentos, kad mob_nr sutampa ir jeigu sutampa data yra +/-2h ?
Where IN gal tiktų? žinau logiką, bet nemoku aprašyti su mysql :/

Sveiki,

turiu galvos laužymą, ar sukti kelis selectus ir tikrinti array'ius pačiam php arba pasidaryti užklausą, kuri iš karto grąžintų tik reikiamus įrašus.
Pradinė užklausa yra

SELECT uzsakymo_nr,uzsakymo_data,pastas,uzsakymo_busena
FROM uzsakymai
WHERE mokejimas='automatinis' and
statusas!='apmoketa' and mokejimo_statusas!='OK' and 
mokejimo_data='0000-00-00 00:00:00' and
uzsakymo_statusas='naujas' and
atsauktas=0

kuri surenka tenkinančius neapmokėtus užsakymus pagal reikiamas sąlygas.
Reikia patikrinti, ar tas pats klientas nepadarė naujo užsakymo +/- 2h pirmojo bėgyje ir eliminuoti iš užklausos tokį įrašą.
How? :)

Iš anksto dėkoju,

10

(7 replies, posted in PHP)

Taigi, ačiū už pagalbą Aivarui, finišas:

if($attachments[$i]['is_attachment']) 
                {
                    $attachments[$i]['attachment'] = imap_fetchbody($inbox, $email_number, $i+1);

                    /* 4 = QUOTED-PRINTABLE encoding */                    
                    if($structure->parts[$i]->encoding == 3) 
                    { 
                        $attachments[$i]['attachment'] = base64_decode($attachments[$i]['attachment']);
                    }
                    /* 3 = BASE64 encoding */
                    elseif($structure->parts[$i]->encoding == 4) 
                    {
                        $attachments[$i]['attachment'] = quoted_printable_decode($attachments[$i]['attachment']);
                    }
                    /* 6 = UUENCODE encoding */                    
                    elseif($structure->parts[$i]->encoding == 6) 
                    {
                        $myFile = "1.csv";
                        file_put_contents($myFile, "");
                            $fileData = explode("\n", $attachments[$i]['attachment']);
                                foreach($fileData as $line) {
                                    $b = convert_uudecode($line);
                                    file_put_contents($myFile, $b, FILE_APPEND);
                                }
                    }    
                }

11

(7 replies, posted in PHP)

taip, galiu asmenine žinute tuoj atsiųsiu

12

(7 replies, posted in PHP)

kostmosas.. http://www.silisoftware.com/tools/uudecode.php decodina tą patį mano stringą ir siūlo downloadintis x.dat failą, kuriame yra visas csv contentas. Man lokaliai nieko nepavyksta :/

13

(7 replies, posted in PHP)

Aivarai, ačiū už atsakymą, tačiau tas decode'as nieko doro nepadaro. Jau radau, kad man siunčia tokius emeilus iš *nix'ų bash'o.
Komanda:

 uuencode attach.txt attach..csv | mail -s "My Subject" me@somewhere.com

kaip man tokį reikalą pasidaryti vėl csv? Jeigu downloadini per gmailą į pc normaliai su exceliu atsidaro. Kur problema?

14

(7 replies, posted in PHP)

radau! Content-Transfer-Encoding: uuencode
gal galit pasakyti kaip tą valgyti? :)

15

(7 replies, posted in PHP)

sveiki,
radau pavyzdžius kaip daryti, bet gaunu .csv failo encoding - 6 ir nesuprantu kaip jį sutvarkyti, kad žmonių kalbą rodytų :)

[1] => Array
        (
            [is_attachment] => 1
            [filename] => 20150115.csv
            [name] => 20150115.csv
            [attachment] => begin 660 20150115.csv
M3.1H971Y<W1U;FYI<W1E.U1O:6YE;B!LY&AE='ES='5N;FES=&4[37EY;G1I
M=&EL875S;G5M97)O.TUA:W-A:F%N('-O<&EM=7-T=6YN=7,[4&%L=F5L=3M(
M879A:6YT;R!P=FT[26YF;VMO;V1I.U!A:6YO.U1I;&%V=75S.U-Y=GEY<SM,
M979E>7,[2V]R:V5U<SM,Y&AE='3D:N1N(&YI;6DQ.TSD:&5T=.1JY&X@;FEM
M:3([3.1H971TY&KD;B!O<V]I=&4Q.TSD:&5T=.1JY&X@;W-O:71E,CM,Y&AE
M='3D:N1N(&]S;VET93,[3.1H971TY&KD;B!P;W-T:71M<#M,Y&AE='3D:N1N
M('!O<W1I;G)O.TSD:&5T=.1JY&X@;6%A:V]O9&D[5F%S=&%A;F]T=&%J86X@
M;FEM:3$[5F%S=&%A;F]T=&%J86X@;FEM:3([5F%S=&%A;F]T=&%J86X@;W-O
M:71E,3M687-T86%N;W1T86IA;B!O<V]I=&4R.U9A<W1A86YO='1A:F%N(&]S
M;VET93,[5F%S=&%A;F]T=&%J86X@<&]S=&ET;7`[5F%S=&%A;F]T=&%J86X@
M<&]S=&EN<F\[5F%S=&%A;F]T=&%J86X@;6%A:V]O9&D[5&EL83M!:6MA.U!A
M:6MK83M,=6]V=71U<V%I:V$[4&%I:VMA.TMU:71T86%J83L*2D9)-C,S,CDP
M,#`P,#`T.34P,C<[(#L@.S8S,S(Y,#M)=&5L;&$@16-O;F]M>2`Q-CLQ,BXP
M,2XR,#$U.R`[+#8[,3$L-#LL,S8[+#(R.RPQ-#4[5D522U1%4B!354]-22!/
M63L@.U!,(#8S,#`[(#L@.TA%3%-)3DM).S`P,#`R.T9).U=(15-,64X@1U)/

gal kas susidūrėt su tokiu variantu, ar bent galit pasakyti koks čia kodavimas?

16

(1 replies, posted in PHP)

function loger($msg) {
    $log = "$msg\n";
    list($date, $time) = explode(' ', date('Y-m-d H:i'));
    list($year, $month, $day) = explode('-',$date);
    //list($hour, $min, $sec) = explode(':', $time);
    
    $file_name="logs/".$year."/".$month."/".$day."/log.log";
    if(!file_exists(dirname($file_name)))  mkdir(dirname($file_name), 0777, true);
    
    file_put_contents($file_name, $log, FILE_APPEND);
}

niekada nebuvo paprasčiau :D

17

(1 replies, posted in PHP)

Norėčiau pasidaryti loginimą kiekvienos užklausos į tam tikros dienos folderį. Kiekvienas logas kaip naujas su timestampu.
Formatas vakar dienos :
logs/2014/10/26/145325001.log
šiandienos:
logs/2014/10/27/122581001.log

Net nežinau kaip googlo užklausti, nes kiek brausinau, nerandu net pavyzdžių.. Gal kas turit ar bent žinot kaip ieškoti? :)

Ačiū, bet man atrodo aš matau problemą su 0. Pas mane jie formatu 0.00, o pas tave tik 0. Kaip man konvertuoti duomenis, arba kaip pasirašyti užklausą, kad nesiskirtų skaičiai?

man kažkodėl neleidžia ir grąžina nulį rezultatų abejais atvejais. Lentelės struktūra:
sku     varchar(64)    NO     PRI     NULL   
price     float(64,2)    NO         NULL   
1price     float(64,2)    NO         NULL   
2price     float(64,2)    NO         NULL   
3price     float(64,2)    NO         NULL   
4price     float(64,2)    NO         NULL   

galbūt dėl duomenų tipo esantys '0' nėra įtraukiami į paiešką..
Dabar mano query atrodo taip:
SELECT *
FROM prices
WHERE LEAST( `1price` , `2price` , `3price` , `4price` ) < price
AND LEAST( `1price` , `2price` , `3price` , `4price` ) >0
ir bandžiau su IS NOT NULL ir >1 ir !=0 ir !=0.00

Gal ką praleidau?

Heh, matyt klaidą kažkur buvau syntaxėj padaręs, kad grąžindavo problemą su LEAST :)
Dar klausimas, kaip filtruoti, kad netrauktų nemano nulinių kainų? Koks apjungimas su tikrinimu !=0 ?