PHP
Memo PHP
Pentru INSERT/UPDATE
1 |
mysqli_query($con, $sql) OR die(mysqli_error($con)); |
Afişare valoare numerică, cu zecimale şi delimitator pentru mii
1 |
echo number_format("1234567",2,",","."); // afişează 1.234.567,00 |
Aplicare format dată-timp pentru câmp tip Timestamp preluată din BD MySQL
1 2 3 4 5 |
<?php // formatul din tabela MySQL: 2022-07-14 12:52:00 $camp_data = strtotime($camp_data); // afişează 1657803120 $camp_data = date("d.m.y | H:i", $camp_data ); // afişează 14.07.22 | 12:52 ?> |
Functie format data
Pentru formatul corect de transmis funcției date() în PHP în scopul inserării rezultatului într-o coloană MySQL de tip datetime.
1 2 3 4 5 6 |
function fc_data_bd($data_viz) { $marcaj_timp = strtotime($data_viz); $data_formatata = date('Y-m-d H:i:s', $marcaj_timp); return $data_formatata; } |
Exemplificare
1 |
ECHO fc_data_bd('10/29/2022').'<br>'; // afiseaza 2022-10-29 00:00:00 |
Sursa: StackOverflow.com
Altă variantă de formatare a datei
Funcția setlocale()
poate fi utilizată în programare pentru a seta limba și regula de codare a sistemului.
Exemplificare
1 2 3 4 5 |
<?php setlocale(LC_TIME, array('ro.UTF-8', 'ro_RO.UTF-8')); date_default_timezone_set('Europe/Bucharest'); echo strftime('%A %B %d, %Y', strtotime('2023-01-01')); ?> |
Putem încerca mai multe variabile, poate ajută: setlocale(LC_TIME, array('ro.utf-8', 'ro_RO.UTF-8', 'ro_RO.utf-8', 'ro', 'ro_RO', 'ro_RO.ISO8859-2'));
O observaţie necesară este că funcţia strftime()
s-ar putea să nu mai poată fi utilizată în versiunile actuale/viitoare PHP, fiind depreciat.
Preluare intr-un COMBOBOX a valorii existente, dintr-un formular de UPDATE
varianta 1
1 2 3 4 5 |
<select name="apFel_trs"> <option value="sms"<?php if($ap_feLtrs == 'sms'){ echo ' selected="selected"'; } ?>>SMS</option> <option value="fb"<?php if($ap_feLtrs == 'fb'){ echo ' selected="selected"'; } ?>>Facebook</option> <option value="whatsapp"<?php if($ap_feLtrs == 'whatsapp'){ echo ' selected="selected"'; } ?>>Whatsapp</option> </select> |
varianta 2
Sursa: StackOverFlow.com
1 2 3 4 5 6 7 8 9 10 11 |
<?php $feluri_trs = array( 'sms' => 'SMS' , 'fb' => 'Facebook' , 'whatsapp' => 'Whatsapp' ); ?> <select name="apFel_trs"><?php FOREACH( $feluri_trs AS $var => $fel_trs ) { ?> <option value="<?php echo $var ?>"<?php IF( $var == $ap_feLtrs ){ ?> selected="selected"<?php } ?>><?php echo $fel_trs ?></option> <?php } ?> </select> |
Utilitatea redirectului
1 2 3 4 |
<!-- Varianta 1 (HTML în HEAD) --> <META HTTP-EQUIV="Refresh" Content="0; URL=index.php"> <?php // Varianta 2 (PHP) header('Location::index.php'); |
După introducerea unei valori în baza de date prin intermediul unui formular, apelați metoda unset() pentru a șterge datele.
1 |
unset($_POST); |
Pentru a preveni inserarea datelor la Refresh, faceți redirecționare a paginii către aceeași pagină sau către o pagină diferită după inserarea înregistrării.
1 |
header('Location:'.$_SERVER['PHP_SELF']); |
Afisarea tuturor variabilelor SESSION active
1 2 3 4 |
FOREACH($_SESSION AS $variab=>$val) { ECHO '<pre>'.$variab." ".$val."</pre>"; } |
Exemplu de iesire din sesiune
1 2 3 4 5 6 |
<?php session_start(); session_destroy(); header("location:login.php"); exit(); ?> |
Acţiune pe aceeaşi pagină cu formularul
Trimiteți formularul pe aceeași pagină: gestionați formularul trimis utilizând scriptul PHP. Acest lucru se poate face setând acțiunea din formular la adresa URL a paginii curente.
1 2 3 4 5 6 7 |
<?php IF(ISSET($_POST['submit'])) { // Introduceți codul pe care doriți să-l executați după ce a fost trimis formularul // Afișează mesajul de succes sau eșec (dacă există) } ELSE{ // Afișează formularul și butonul de trimitere } ?> |
Codificare/decodificare cu MIME base64
• codificare:
base64_encode($valoare) ;
• decodificare:
base64_decode($valoare) .
Exemplificare:
1 2 3 4 5 6 |
<?php $val = 'Exemplu text codificat'; ECHO base64_encode($val); // afişează RXhlbXBsdSB0ZXh0IGNvZGlmaWNhdA== $val = 'RXhlbXBsdSB0ZXh0IGNvZGlmaWNhdA=='; ECHO base64_decode($val); // afişează Exemplu text codificat |
Extragerea doar a unui câmp dintr-o interogare
Dacă se doreşte aducerea dintr-o interogare a unor înregistrări, este soluţia simplă.
1 2 3 4 |
$result = mysqli_query($con, $sql); $row=mysqli_fetch_assoc($result); ECHO $row['id']; ECHO $row['camp']; |
O variantă rapidă, fiind vorba de un array, când ne interesează doar conţinutul unui câmp este ca mai jos:
1 2 |
$result = mysqli_query($con, $sql); ECHO mysqli_fetch_assoc($result)['camp']; |
Fixare caractere UTF8
1 2 3 |
mysqli_set_charset($con,"utf8"); // sau mysqli_set_charset($con,"utf8mb4"); |
Este important să avem în vedere ca pagina HTML în care sunt afişate datele să aibă declarat charset-ul corect: <meta charset="utf-8">
„Decodare” mesaj de eroare
În cazul apariţiei unui mesaj de tipul „mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in”, pentru a vedea mai exact cauza, se poate plasa, după funcţia mysqli_query, următorul script:
1 2 |
$result = mysqli_query($con, $query); IF (!$result) {trigger_error(mysqli_error($con), E_USER_ERROR);} |
Sursa: StackOverflow.com
Accept validare diacritice, cratimă, spaţiun într-un şir
1 2 3 4 5 |
$text = "abcABC-äöüÄÖÜßéèâø ăîâşţĂÎÂŞŢȘșȚț"; if (preg_match("#^[a-zA-Z0-9-äöüÄÖÜßéèâøăîâşţĂÎÂŞŢȘșȚț ]+$#", $text)) { echo 'String can only contain letters, numbers, hyphen and white spaces.'; } |
Sursa: AskingBox.com
MySQL
Memo MySQL
Realizare diferente intre o valoare si cea anterioara (de ex. de la o lună la alta)
1 2 3 4 |
SELECT *, YEAR(Data_cit) AS anul, birou1+birou2 AS total_luna , (birou1+birou2)-LAG((birou1+birou2), 1) OVER ( ORDER BY (birou1+birou2) ASC) As dif_ante FROM act_birou ORDER BY anul DESC, luna DESC |
Ranking
1 2 3 4 |
SELECT nume, varsta, gen , @curRank := @curRank + 1 AS nr_crt FROM persoane p, (SELECT @curRank := 0) AS r ORDER BY varsta; |
Calculare subtotaluri pe coloana
1 2 3 4 5 6 |
SELECT Fact_id, DataFact, c.ValFact ,( SELECT sum(ValFact) FROM Comenzi WHERE Fact_id <= c.Fact_id ) AS 'Total curent' FROM Comenzi AS c |
Update View
1 2 3 4 5 6 7 8 9 10 11 |
ALTER ALGORITHM=MERGE VIEW v_utiliz AS SELECT id , nume_fam , nume_cas , pren , nivel , telefon FROM t_useri; |
Update pentru duplicare INSERT
1 2 3 4 5 |
INSERT INTO table (id, camp1, camp2, camp3) VALUES (1, 'val 1', 'val 2', 'val 3') ON DUPLICATE KEY UPDATE camp1 = 'val 1' , camp2 = 'val 2' , camp3 = 'val 3'; |
Poate fi util ca, pe lângă cheia primară, să fie, de regulă, un câmp cu valori unicat.
În cazul în care INSERT-ul s-ar face doar pentru câmpuri de tip cheie primară compusă (cum ar fi tabelele copil) şi am presupune că unul din câmpurile cheii primare ar exista şi ar trebui introdus doar celălalt, putem folosi INSERT... ON DUPLICATE KEY...
astfel:
1 2 3 |
INSERT INTO tbl_copil (pers_id, even_id) VALUES (1124, 500) ON DUPLICATE KEY UPDATE pers_id = pers_id; |
Astfel, această interogare este folosită când introducem un nou eveniment şi există posibilitatea ca această combinaţie deja să existe.
Inserare dată şi timp curent la update-ul înregistrărilor
Ar fi de dorit ca orice tabelă să conţină înregistrarea timpului când a fost făcută înregistrarea sau, chiar, timpul când s-a făcut modificarea. Astfel, dacă pentru data curentă, câmpul va avea ca valoarea implicită CURRENT_TIMESTAMP, la modificarea unei înregistrări putem folosi clauza ON UPDATE la câmpul respectiv. Redăm mai joi cele trei situaţii în care am putea influenţa câmpul de update (la crearea tabelei, la adăugarea câmpului după crearea tabelei sau la modificarea câmpului nedefinit iniţial cu clauza de update.
La crearea tabelei
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
CREATE TABLE IF NOT EXISTS t_pers ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT , camp VARCHAR(25) NOT NULL , data_in TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP -- la inregitrarea nouă afişează data curentă , data_up TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP -- la modificare înregistrare, inserează data curentă. ) |
Adăugarea ulterioară a câmpului
1 2 3 4 5 |
ALTER TABLE t_pers ADD data_up TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP; |
Modificarea câmpului existent
1 2 3 4 5 |
ALTER TABLE t_pers MODIFY COLUMN data_up TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP; |
Cheie străină
Exemplificare
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
CREATE TABLE tbl_parinte( id_parinte INT AUTO_INCREMENT PRIMARY KEY, denumire VARCHAR(50) NOT NULL ) ENGINE=INNODB; -- Varianta simpla CREATE TABLE tbl_copil ( id INT AUTO_INCREMENT PRIMARY KEY , alt_camp VARCHAR(25) NOT NULL , id_cheie_str INT , FOREIGN KEY (id_cheie_str) REFERENCES tbl_parinte(id_parinte) ); -- Varianta completa CREATE TABLE tbl_copil ( id INT AUTO_INCREMENT PRIMARY KEY , alt_camp VARCHAR(25) NOT NULL , id_cheie_str INT , CONSTRAINT fk_id FOREIGN KEY (id_cheie_str) REFERENCES tbl_parinte(id_parinte) ON UPDATE CASCADE ON DELETE CASCADE ); |
După cum este şi firesc (se remarcă şi din scriptul de mai sus) întâi trebuie să existe tabela părinte, pentru a putea crea cheia străină. Dacă se doreşte vizualizarea constrângerii, în phpMyAdmin, este necesar să ne asigurăm că Storage Engine este InnoDB, accesabil din tab-ul Operations.
Modificare Collation
La nivelul bazei de date
1 |
ALTER DATABASE baza_date CHARACTER SET utf8mb4 COLLATE utf8mb4_romanian_ci; |
La nivelul tabelei
1 |
ALTER TABLE tabela CONVERT TO CHARACTER SET utf8 COLLATE utf8_romanian_ci; |
La nivelul câmpului
1 |
ALTER TABLE tabela MODIFY nume_col VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_romanian_ci; |
1 2 3 4 5 6 7 8 9 10 11 |
<?php $result=mysqli_query('show tables'); while($tables = mysqli_fetch_array($result)) { foreach ($tables as $key => $value) { mysqli_query($con,"ALTER TABLE $value CONVERT TO CHARACTER SET utf8 COLLATE utf8_romanian_ci"); } } echo "A fost schimbat tipul de colaţionare!"; ?> |
- Sursa: StackOverflow.com
Creare câmpuri matriciale
Dacă se doreşte ca, de exemplu, dintr-o coloană conţinând sexul (M/F), se doreşte crearea a două coloane distincte (sex_M, respectiv, sex_F), se poate folosi fie funcţia SUM, fie COUNT.
Varianta 1 – SUM
1 2 3 4 5 |
SELECT sex , SUM(CASE WHEN sex="M" THEN 1 ELSE 0 END) AS sex_M , SUM(CASE WHEN sex="F" THEN 1 ELSE 0 END) AS sex_F FROM gestionar GROUP BY sex; |
Varianta 2 – COUNT
1 2 3 4 5 |
SELECT sex , COUNT(CASE WHEN sex="M" THEN 1 ELSE NULL END) AS sex_M , COUNT(CASE WHEN sex="F" THEN 1 ELSE NULL END) AS sex_F FROM gestionar GROUP BY sex; |
Se observă că diferenţa este la argumentul ELSE, unde pentru a nu însuma, se foloseşte valoarea 0, iar la numărare, pentru a nu fi contorizat, se inserează NULL. Cum este de aşteptat, în ambele situaţii rezultatul este acelaşi.
Rezultat
sex | sex_M | sex_F |
---|---|---|
F | 0 | 26 |
M | 8 | 0 |
Afisare lista de procese MySQL
1 |
SHOW PROCESSLIST |
Informaţii despre o tabelă
1 2 |
SHOW TABLE STATUS WHERE NAME = 'nume_tabela' |
(posibil să nu funcţioneze pe tabele InnoDB) sau
1 2 3 4 |
SELECT CREATE_TIME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'nume_bd' AND TABLE_NAME = 'nume_tabela' |
Surse: MySQL.com, StackOverflow.com
JS
Memo JS
Închidere (ascundere) „buton”
1 |
<span class="btnInchid" onclick="this.parentElement.style.display='none'">×</span> |
Butoane pentru ascundere sau afişare elemente
Ascundere
1 2 3 4 5 6 7 8 9 10 |
<div id="caseta_1"> <a href="#" onclick="fc_inchid_div(caseta_1);">Închidere ⛒</a> Caseta va dispărea la apăsarea butonului </div> <script> function fc_inchid_div(id_elem) { id_elem.style.display = "none"; } </script> |
Desigur, dacă linkul conţinând butonul ar fi în afara acestui div, nu va fi ascuns.
Afisare
1 2 3 4 5 6 7 8 9 10 |
<a href="#" onclick="fc_deschid_div(caseta_2);">Deschidere ⚪</a> - la apăsare, va apărea un div <div id="caseta_2" style="display:none;" > Caseta e vizibilă pentru că a fost apăsat butonul </div> <script> function fc_deschid_div(id_elem) { id_elem.style.display = "block"; } </script> |
Faţă de prima acţiune (Ascundere), la cea de-a doua, după cum se poate remarca, avem nevoie ca div-ul să fie implicit ascuns.
Comutare
Varianta simpla
1 2 3 4 5 6 7 8 9 10 11 12 |
<div id="caseta_3"> Dispare sau apare, prin alternanţa apăsării butonului </div> <script> function fc_comut(id_elem) { if (id_elem.style.display === "none") { id_elem.style.display = "block"; } else { id_elem.style.display = "none"; } } </script> |
Varianta elegantă
Este mult spus „elegantă” fiind vorba doar şi de comutarea aspectului butonului.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<a href="#" onclick="fc_comut(caseta_3);"><span id="inchis" >⛒ Închidere</span><span id="deschis" style="display:none;">⚪ Deschidere</span></a> <div id="caseta_3"> Dispare sau apare, prin alternanţa apăsării butonului </div> <script> function fc_comut(id_elem) { if (id_elem.style.display === "none") { id_elem.style.display = "block"; document.getElementById("inchis").style.display = "block"; document.getElementById("deschis").style.display = "none"; } else { id_elem.style.display = "none"; document.getElementById("inchis").style.display = "none"; document.getElementById("deschis").style.display = "block"; } } </script> |
Redirect la altă pagină, după câteva secunde
În cazul de faţă, comutarea la index.php se va realiza după 2 secunde (2 x 1000=2000).
Varianta 1
1 2 3 |
<script> setTimeout("location.href = 'login.php'",2000); </script> |
Varianta 2
1 2 3 |
<script> setTimeout(function(){window.location.replace("login.php");}, 2000); </script> |
Varianta 3
1 2 3 |
<script> setTimeout(function() {window.location='index.php'}, 2000); </script> |
Varianta 4
Dacă se doreşte folosirea ca variabilă, se poate alege scriptul de mai jos.
1 2 3 |
<script> var timer = setTimeout(function() {window.location='index.php'}, 2000); </script> |
header('Refresh: 2; URL=http:pagina.php');
Folosirea comenzii PROMPT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<button onclick="fcPrompt()">Try it</button> <p id="afisare"></p> <script> function fcPrompt() // window.onload = function () { var pagina; let text; let person = prompt("În ce an te-ai născut?", "1990"); if (person > 2000) { text="Access Denied"; pagina="login.php"; } else { text = "Access Granted"; pagina="index.php"; } document.getElementById("afisare").innerHTML = text; setTimeout(function(){window.location.replace(pagina);}, 2000); } </script> |
- Dacă se doreşte încărcarea apariţia întrebării la încărcarea paginii, se decomentează linia window.onload = function () comentând, în schimb function fcPrompt() pentru a eluda folosirea butonului.
- Ţinând cont că întrebarea conţine diacritice, este necesar ca între etichetele <head></head> să fie inclusă linia <meta charset="UTF-8">
- Desigur, dacă se doreşte să avem posibilitatea de a reveni la pagina anterioară, se poate alege setTimeout(function(){ window.location.href = pagina;}, 2000);
WordPress
Memo WP
Inhibare acces fişiere php auxiliare
Dacă, de exemplu, nu dorim ca fişierul functions.php să fie accesat direct, putem folosi funcţia EXIT() pentru a opri acţiunea:
1 |
IF (!DEFINED('ABSPATH')) {EXIT();} // mai pe scurt IF (!DEFINED('ABSPATH')) EXIT; |
Limitare a numărului de caractere din extras
În fişierul functions.php se introduce următoarea funcţie:
1 2 3 4 |
function fc_lung_extras_txt( $length ) { return 10; } add_filter( 'excerpt_length', 'fc_lung_extras_txt', 999 ); |
Aplicare şablon de articol în funcţie de anumite categorii
Pentru a realiza acest deziderat, se poate folosi funcţia, evident, în functions.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
add_filter('single_template', 'fc_verif_categ_articol'); FUNCTION fc_verif_categ_articol( $val ) { FOREACH( (array) get_the_category() as $cat ) { IF ( file_exists(get_stylesheet_directory() . "/ctg-art-{$cat->cat_ID}.php") ) return get_stylesheet_directory() . "/ctg-art-{$cat->cat_ID}.php"; IF($cat->parent) { $cat = get_the_category_by_ID( $cat->parent ); IF ( file_exists(get_stylesheet_directory() . "/ctg-art-{$cat->cat_ID}.php") ) return get_stylesheet_directory() . "/ctg-art-{$cat->cat_ID}.php"; } } return $val; } |
Custom Fields
the_field() este la fel cu echo get_field(). Astfel, dacă se foloseşte prima variantă, nu necesită „echo”.
Exemplu utilizare the_field()
1 |
<p><?php the_field('titlu_autor'); ?></p> |
Exemplu de afişare condiţionată
1 2 3 |
<?php if( get_field('titlu_autor') ): ?> <p><?php the_field('titlu_autor'); ?></p> <?php endif; ?> |
Sursa: AdvancedCustomFields.com
CSS
Memo CSS
Linkuri pentru FontAwesome
1 2 3 4 5 6 7 8 |
/* Font Awesome 4 */ @import url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css'); /* sau Font Awesome 5*/ @import url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.9.0/css/all.min.css'); /* sau Font Awesome 6 */ @import url('ttps://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css'); |
Sursa: CDNJS.com
Matrici DIV centrate
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<style> #aliniere { width: max-content; max-width:100%; min-height: 300px; border: 1px dotted gray; border-radius:10px; display: flex; flex-wrap: wrap; align-content: center; margin:0 auto; height:auto; } #aliniere div { width: 100px; height: 100px; margin: 0 auto; border: 3px solid lightgray; } #aliniere div:nth-child(1) {background:blue;} #aliniere div:nth-child(2) {background:yellow;} #aliniere div:nth-child(3) {background:red;} #aliniere div:nth-child(4) {background:orange;} #aliniere div:nth-child(5) {background:green;} </style> <div id="aliniere"> <div></div> <div></div> <div></div> <div></div> <div></div> </div> |
Exemplificare
Efect Glow pentru casete
1 |
.glow_box {box-shadow: 0 0 10px 5px green;} |
Exemplificare
1 |
.glow_box_difuz {box-shadow: 0 0 50px 10px green;} |
Exemplificare
1 |
.glow_box_difuz {box-shadow: 0 0 5px 1px gray;} |
Exemplificare
1 |
.glow_box_difuz {box-shadow: 0 0 7px 3px blue;} |
Exemplificare
Linie dialog (cratimă)
Va afişa, în loc de bullet, linia clasică utilă în redarea dialogurilor.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
ul.dialog { margin: 0; } ul.dialog { list-style-type: none; } ul.dialog > li { text-indent: -15px; } ul.dialog > li:before { content: "\2012"; /* ‒ */ text-indent: -10px; padding-right:5px; } |
Exemplificare
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
- Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
- Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Text flancat de linii orizontale
Sursa: CodeGrepper.com
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
.flanc { overflow: hidden; text-align: center; color: #00f; } .flanc:before, .flanc:after { background-color: #00f; content: ""; display: inline-block; height: 1px; position: relative; vertical-align: middle; width: 50%; } .flanc:before {right: 0.5em; margin-left: -50%;} .flanc:after { left: 0.5em; margin-right: -50%;} |
1 |
<h4 class="flanc">Text cu linii pe flancuri</h4> |
Exemplificare
Text cu linii pe flancuri
FontAwesome
• Font Awesome 4 (de tipul „fa fa-user”)
1 |
@import url("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"); |
• Font Awesome 5 (de tipul „fas fa-user”)
1 |
@import url("https://use.fontawesome.com/releases/v5.7.1/css/all.css"); |
– câteva exemple: w3schools.com
Bookmark pentru Cuprins
Sursa: NicolasGallagher.com
1 2 3 4 5 6 |
#cuprins { padding-top: 50px; margin-top: -50px; -webkit-background-clip: content-box; background-clip: content-box; } |
Alternativa pentru <sup >
1 2 3 4 5 |
.superscript { position: relative; top: -0.5em; font-size: 80%; } |
Ex:
• folosirea etichetei <sup >: Acest text are scris la exponent. • folosirea clasei de mai sus: Acest text simulează exponentul.
Sursa: StackOverflow.com
Delay afisare continut
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
a.delay { background: blue; -webkit-transition: .5s all; -webkit-transition-delay: 5s; -moz-transition: .5s all; -moz-transition-delay: 5s; -ms-transition: .5s all; -ms-transition-delay: 5s; -o-transition: .5s all; -o-transition-delay: 5s; transition: .5s all; transition-delay: 5s; } a.delay:hover{ background:coral; -webkit-transition-delay: 0s; -moz-transition-delay: 0s; -ms-transition-delay: 0s; -o-transition-delay: 0s; transition-delay: 0s; } |
Exemplificare
Sursa: StackOverflow.com
Excel
Memo MS Excel
Extragere data nasterii din CNP
1 |
=DATE(IF(OR(LEFT(B4,1)="5",LEFT(B4,1)="6"),"20"&MID(B4,2,2), "19"&MID(B4,2,2)),MID(B4,4,2),MID(B4,6,2)) |
Afişare diferită a notei, în funcţie de anumite criterii
La note vreau să fac următoarele diferenţieri de formatare, în aspectul notei:
- dacă este 10, să fie fără zecimale
- dacă este sub 5 să fie cu roşu.
Accesez formularul „Format Cells” (fie dând click dreapta, fie prin intermediul meniului). Din tab-ul Number dau click pe categoria Custom şi inserez una din variante:
- prima condiţie: [>=10]0;0.00
- a doua condiţie: [Red][<5]0.00;0.00
- cele două condiţii simultan: [>=10]0;[Red][<5]0.00;0.00
VBA
Memo MS Excel
Extragere data nasterii din CNP
1 |
=DATE(IF(OR(LEFT(B4,1)="5",LEFT(B4,1)="6"),"20"&MID(B4,2,2), "19"&MID(B4,2,2)),MID(B4,4,2),MID(B4,6,2)) |
Afişare diferită a notei, în funcţie de anumite criterii
La note vreau să fac următoarele diferenţieri de formatare, în aspectul notei:
- dacă este 10, să fie fără zecimale
- dacă este sub 5 să fie cu roşu.
Accesez formularul „Format Cells” (fie dând click dreapta, fie prin intermediul meniului). Din tab-ul Number dau click pe categoria Custom şi inserez una din variante:
- prima condiţie: [>=10]0;0.00
- a doua condiţie: [Red][<5]0.00;0.00
- cele două condiţii simultan: [>=10]0;[Red][<5]0.00;0.00