Tag Archives: MySQL

Funcţie mysql de scoatere a unei chei dintr-un câmp

Scriam într-un articol despre o funcţie ce adăuga o cheie într-o listă.

În continuare am să vă prezint o funcţie mysql creeată tot de mine, care va scoate o cheie dintr-o listă ce conţine mai multe chei. Funcţia va primii doi parametrii şi anume: câmpul de unde dorim să extragem cheia, respectiv cheia care dorim sa o scoatem.

DELIMITER $$

DROP FUNCTION IF EXISTS `RM_KEY` $$
CREATE FUNCTION `RM_KEY`(lista TEXT,cheie INT(11))
RETURNS TEXT CHARSET utf8
BEGIN

  IF(lista = cheie)  THEN
    SET lista = '';
  ELSE
    SET lista = REPLACE(lista,CONCAT(cheie,','),    '');
    SET lista = REPLACE(lista,CONCAT(',',cheie,','),'');
    SET lista = REPLACE(lista,CONCAT(',',cheie),    '');
  END IF;

  RETURN lista;

END $$

DELIMITER ;

Să vedem un exemplu concret:

UPDATE grupuir SET id_persoane=RM_KEY(id_persoane,25) WHERE ID_grup=1

Funcţie mysql de adăugare cheie într-un câmp

Adesea în mysql se foloseşte relaţia 1 la mai multe sau relaţia mai multe la 1. De regulă construcţia acestor relaţii este formată prin separarea cheilor străine prin virgulă.

Aşadar  am creat o funcţie mysql care adaugă o cheie  în câmpul ce reţine cheile străine. Funcţia a fost creeată în scopul uşurării muncii.

Să luăm un exemplu în php: presupunem că avem o bază de date ce conţine două tabele, utilizatori respectiv grupuri. Mai mulţi utilizatori vor aparţine unui grup, astfel vom creea relaţia mai mulţi la 1. Tabela grupuri va conţine câmpurile: ID_grup , nume_grup şi id_utilizatori. Tabela utilizatori va conţine câmpurile: ID_utilizator şi nume. În câmpul id_utilizatori din tabela grupuri se vor reţine cheile utilizatorilor care aparţin unui grup separat prin virgulă.

Pentru manipularea datelor sa considerăm o aplicaţie scrisă in limbajul de programare php. Atunci când se pune problema adăugării unui utilizator la un grup, în aplicaţie va trebui sa facem o comandă de SELECT către serverul mysql care va returna un şir de caractere cu lista cheilor dintr-un grup. Pentru adăugarea cheii utilizatorului la campul selectat va trebui sa transformăm şirul de caractere într-un vector de tip array. La acest vector va trebui adaugatacheia utilizatorului. După adăugarea cheii se va transforma din nou într-un şir de caractere şi inserat in baza de date la câmpul menționat mai sus.

Funcția ADD_KEY() construită în mysql elimină operațiunile amintite la paragrafele anterioare. Parametrii tranzmişi acestei funcţii fiind câmpul unde se va introduce cheia şi cheia care dorim să fie introdusă. Luând exemplul de mai sus vom construi o comandă sql utilizând această funcție:

UPDATE grupuir SET id_persoane=ADD_KEY(id_persoane,25) WHERE ID_grup=1

În continuare am să va prezint construcţia funcţiei:


DELIMITER $$

CREATE FUNCTION `ADD_KEY` (lista TEXT,cheie INT(11))
RETURNS TEXT CHARSET utf8
BEGIN
  IF(lista='') THEN
    SET lista = cheie;
  ELSE
    SET lista = CONCAT(lista,',',cheie);
  END IF;
  RETURN lista;
END $$

DELIMITER ;

Tutorial de backup a bazei de date in cpanel

Cu totii stim ca cat de neplacute sunt pierderile de date. In tutorialul urmator voi explica in cativa pasi cum putem realiza o copie de siguranta a bazei de date (backup) periodic:

Pasul 1 : Dupa autentificarea in panoul de control intrati  in sectiunea Files -> File Manager File Manager

Pasul 2 : Creati un director in radacina (ex: /home/numesite/dbbackup)

Pasul 3 : Mergeti in panoul de control la sectiunea Advanced -> Cron jobs Cron Jobs cPanel

Pasul 4 : In campul Command scrieti urmatoarea instructiune:
date=`date -I` ; /usr/bin/mysqldump -hlocalhost -uuser_baza_de_date --password=parola_de_conectare --opt baza_de_date | gzip -9 -c > /home/numesite/dbbackup/$date.sql.gz

Pasul 5 : Setati intervalul la care doriti sa se execute copia de siguranta a bazei de date

*cuvintele ingrosate se vor inlocui cu parametrii setati de dvs.