var arrayLignes = document.getElementById("monTableau").rows; var longueur = arrayLignes.length; var i=2 // 2eme ligne var arrayColonnes = arrayLignes[i].cells; var j=3; var cellule=arrayColonnes[j]; cellule.style.backgroundColor = "red"; // change la couleur de la 3eme celulle de la 2eme ligne rowIndex sectionRowIndex // numéro de ligne 0 en bas nbligne-1 en haut var nouvelleLigne = document.getElementById("monBody").insertRow(-1); // insère une ligne en bas du tableau // clique sur une cellule récupère le col_num et row_num et modifie le contenu $(document).ready(function(){ $("#client_table td").click(function() { var col_num = parseInt( $(this).index() ) ; var row_num = parseInt( $(this).parent().index() + 1); $("#result").html( "Row_num =" + row_num + " , Rolumn_num ="+ col_num ); document.getElementById("client_table").rows[row_num].cells[col_num].innerHTML='yyyy'; }); });
Javascript sélection modification de contenu
Sélectionner un objet
<div id="message" class="maclass"&gt; contenu du div</div> var monobjet= document.getElementById('message'); var monobjet= document.getElementByClassName('maclass'); var monobjet= document.querySelector('message'); var monobjet= $('#message'); // jquery var monobjet= $('.maclass'); // jquery var myElements = document.querySelectorAll(".bar"); // plusieurs monobjet.innerHTML='test123'; document.getElementById('message').innerHTML='test123'; $('#message').html('test123'); $(monobjet).html('test123');
insertAdjacentHTML() inserre un contenu, avant ou après, dans un DIV par exemple
<script> var log = document.getElementById('message'); message.insertAdjacentHTML('beforeend', 'message ajouté à la fin du contenu'); message.insertAdjacentHTML('afterBegin', 'message ajouté au début du contenu'); message.insertAdjacentHTML('beforeBegin', 'message ajouté avant le DIV (ou objet)'); message.insertAdjacentHTML('afterEnd', 'message ajouté après le DIV (ou objet)'); </script>
infos ICI
querySelector innerHTML et textContent
document.querySelector('#message').innerHTML='test123'; document.querySelector('#message').textContent='test123'; // en jquery $('#monchamps').html('32132'); $('#monchamps').text('32132'); $('#monchamps').append('32132'); // pour ajouter
Windows utilitaires
sysinternals Suite d’utilitaires indispensables pour Windows
Javascript array
var voiture = ['Saab', 'Volvo', 'BMW']; var cars = new Array('Saab', 'Volvo', 'BMW'); // même chose syntaxe trop lourde //plus lisible pour les longues listes var voiture = [ 'Saab', 'Volvo', 'BMW' ]; voiture[0] // contient Saab var mesvoiture[1] = voiture; // on peut tout stocker dans une ligne de tableau, un autre tableau, un objet, une fonction ... var mesvoiture[3] = ['Saab','Peugeot', 'Fiat'] ; // un tableau stocké dans un tableau typeof voiture; // returns object et pas array utiliser plutôt : Array.isArray(voiture); // true var camion = []; // -> création du tableau camion vide // ne pas utiliser si on veut un tableau -> voir objets var person = {firstName:'John', lastName:'Doe', age:46}; // un peu comme un tableau, mais un objet -> les propriétés tableau ne s'y appliquent pas voiture['marque']='peugeot'' // voiture est devenu un objet -> ne pas faire /********************************************************/ var x = voiture.length; // x -> 3 var voiture_tri = voiture.sort(); // une copie de voiture triée par ordre alpha voiture.push('Renault'); // ajoute à la fin du tableau et retourne la longeur du tableau unshift() // idem début du tableau var tt=voiture.pop(); // enlève le dernier élément du tableau et le met dans tt var tt=voiture.shift(); // idem premier element voiture.splice(2, 0, 'Fiat', 'Citroen'); // se positionne en 2 dans voiture, enlève 0 élement et insère Fiat, Citroen var a = voiture.indexOf('Volvo'); // 1 voiture[1] = 'Volvo' permet de tester si une valeur est dans un tableau -1 si pas trouvé var a = voiture.lastIndexOf('Volvo'); // comme indexOf mais parcours le tableau en partant de la fin /***********************************************************/ // parcourir le tableau var index; for (index = 0; index < voiture.length; index++) { console.log(voiture[index]); } // la même chose function aff(item, index){ console.log(item);} voiture.forEach(aff); // parcour tout le tableau applique une fonction et retourne le résultat dans un tableau var v2 = voiture.map( function(valeur, index){return valeur + 'tt';} ); //v2 -> ["Saabtt", "Volvott", "BMWtt"] // idem mais retourne une seule valeur var v2 = voiture.reduce( function(total, valeur){return total + '--' + valeur;} // total est le return du calcul précedent ); //v2 -> "Saab--Volvo--BMW" reduceRight() ; // la même chose mais parcour le tableau de droie à gauche voiture.reverse(); //['Saab', 'Volvo', 'BMW'] -- > ['BMW', 'Volvo', 'Saab']; /************************************************************/ var voiture_txt = voiture.join(); // -> "Saab,Volvo,BMW" toutes les valeur du tableau dans une chaîne var vehicule = voiture.concat(camion); // faire un tableu avec deux // recherche le premier sur critère (saute les valeurs vides) var ages = [3, 10, 18, 20]; function checkAdult(age) { return age >= 18; } var adult = ages.find(checkAdult); // retourne 18 : la première réponse true de la fonction checkAdult var adult ages.findIndex(checkAdult); // même chose mais retourne l'index : 2
les array sont aussi des objets -> voir les possibilité des object
liens
CSS sélecteur
<link rel="stylesheet" type="text/css" href="style.css"> * {font-size: 14px;color:orange;} /* selectionne tout ne sert à rien seul */ h1 { color: navy; } /* une balise*/ li a {font-size: 10px;} /* espace -> sélectionne tous les a contenu dans un li, ne sélectionne pas le li */ p > img {text-align: center;} /* La même chose, mais ne prends img que si tout de suite après p, pas d'autres balises sur le chemin */ h1, h2, h3 {background-color: red;} /* sélectionne toutes les h1 et h2 et h3*/ .message{ border: 1px solid black; background: white; } <div id="prix" class="message"> ... </div> /* affecte la class message au div*/ <div id="qte" class="message"> ... </div> /* même class sur un autre div*/ #msg2{ border: 1px solid black; } /* comme une classe mais doit être unique */ <div id="mesg2"> ... </div> /* affecte le style mesg2 au div*/ div[tarif] { color: blue; } /* tous les div qui ont un attribut tarif*/ <div id="mesg3" tarif="3.20"> ... </div> /* affecte le style mesg3 au div*/ div[code_postal="38500"] { color: red; } /* tous les div dont l'attribut code_postal vaut 38500*/ <div id="mesg3" code_postal="38500"> ... </div> /* affecte le style mesg3 au div*/ div[code_postal=^"38"] { color: pink; } /* tous les div dont l'attribut code_postal commence pas 38*/ div[code_postal=~"38"] { color: pink; } /* tous les div dont l'attribut code_postal contient 38*/ <div id="mesg3" code_postal="38 75 33 01"> ... </div> /* affecte le style mesg3 au div*/ a {} a:hover {} a:visited a:active .menu a:hover {} div:hover p:first-child /* premier sous-element*/ p i:first-child /* premier sous-truc des i qui sont dans des p */ /* si plusieurs règles s'appliquent à un même élément c'est la moins générale, la plus précise, qui l'emporte*/ p{color:red;} .message{color:green;} <p class="message"></p> /* sera green*/ /* */
PHPExcel
Lecture ecriture de fichiers Excel en PHP
<?php require_once($_SERVER[DOCUMENT_ROOT]."/monchemin/class/PHPExcel.php"); require_once($_SERVER[DOCUMENT_ROOT]."/monchemin/class/PHPExcel/IOFactory.php"); $modele = $_SERVER[DOCUMENT_ROOT]."/monchemin//modele/excel_modele.xls"; $excelReader = PHPExcel_IOFactory::load($modele); //charge le fichier excel $excelReader->setActiveSheetIndex(1); // sélection deuxième onglet (1) facultatif $excelReader->getActiveSheet()->SetCellValue("C2", "test"); // Mets "test" dans la cellule C2 // acces aux cellule en numérique pratique pour des boucles $excelReader->getActiveSheet()->setCellValueByColumnAndRow(1, 3, "test"); // Mets "test" dans la cellule B3 // mets une date MySQL dans la cellule C4 $bidon=faire_date($row["DATE"],$excelReader, "C4" ); // force le format texte pour afficher par exemple un code barre $excelReader->getActiveSheet()->setCellValueExplicit("F5", $row[GENCOD], PHPExcel_Cell_DataType::TYPE_STRING); // envoi le fichier excel au navigateur header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); header("Content-Disposition: attachment;filename=mon_nouveau_fichier.xls"); header("Cache-Control: max-age=0"); $objWriter = PHPExcel_IOFactory::createWriter($excelReader, "Excel5"); $objWriter->save("php://output"); // ou pour sauver dans un fichier sur le disque (sans les header) $objWriter->save("monfichier.xls"); function faire_date($dt,&$excelReader, $cel ){ $date1 = explode("-",$dt); $time1 = PHPExcel_Shared_Date::FormattedPHPToExcel($date1[0], $date1[1], $date1[2]); $excelReader->getActiveSheet()->getStyle($cel)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY); $excelReader->getActiveSheet()->SetCellValue($cel, $time1); } ?>
Microsoft excel affiche parfois des messages concernant l’intégrité ou la sécurité des fichiers produits. Préparer les modèles avec Libreoffice évite ce problème
quelques liens
Redshift luminosité ecran
Règle la luminosité et la couleur de l’écran en fonction de l’heure, pour Linux
Script d’installation, fichier de config, et icone dans la barre d’état.
Très bien pour limiter la fatigue visuelle le soir.
SVG dessin vectoriel utilisable sur le web
https://www.animatron.com pour faire des animations directement en ligne, mixe son vidéos, objets vectoriels, export divers format dont le svg, ou pack HTML5
http://svgcircus.com/ création d’animations SGV en ligne le source est dispo
https://jakearchibald.com/2013/animated-line-drawing-svg/ animation de SGV en javascript, explications
http://tympanus.net/codrops/2014/12/15/elastic-svg-elements/ menu animés en SGV et javascript
Javascript pivot table TCD tableaux croisés dynamique
webpivottable deux versions dont une payante environ 1500€ utilise Node.js sur le serveur
http://webix.com/ pivot + autres aplli js à tester une version free d’autres payantes
pivot.js pas un TCD, mais plutôt présentation des données avec regroupement
http://www.jbpivot.org/# A voir aussi
http://gumption.org/2004/pivot_table/test_page.html vieux truc simple efficace à fouiller
http://ukman.github.io/ simple à etudier
MySQL Numéroter les lignes d’une facture
A partir de cette table Obtenir ce résultat
NUM | REF | QTE | PRIX | LN | NUM | REF | QTE | PRIX | |
F114895 | BOITE12 | 5 | 5,00 € | 1 | F114895 | BOITE12 | 5 | 5,00 € | |
F114895 | VIS | 4 | 6,00 € | 2 | F114895 | VIS | 4 | 6,00 € | |
F114895 | COCA | 1 | 7,00 € | 3 | F114895 | COCA | 1 | 7,00 € | |
F114896 | BOIT16 | 1 | 8,00 € | 1 | F114896 | BOIT16 | 1 | 8,00 € | |
F114896 | PAPIER | 10 | 9,00 € | 2 | F114896 | PAPIER | 10 | 9,00 € | |
F114896 | BOITE20 | 22 | 10,00 € | 3 | F114896 | BOITE20 | 22 | 10,00 € | |
F114896 | BIC | 1 | 11,00 € | 4 | F114896 | BIC | 1 | 11,00 € | |
F114897 | FIC15 | 45 | 12,00 € | 1 | F114897 | FIC15 | 45 | 12,00 € | |
F114897 | COCA | 1 | 13,00 € | 2 | F114897 | COCA | 1 | 13,00 € | |
F114897 | PAIN | 10 | 14,00 € | 3 | F114897 | PAIN | 10 | 14,00 € | |
F114897 | FROMAGE | 12 | 15,00 € | 4 | F114897 | FROMAGE | 12 | 15,00 € |
La requête MySQL :
UPDATE CDE AS a LEFT JOIN ( SELECT NUM FROM CDE GROUP BY NUM ) AS b ON b.NUM=a.NUM SET LN = @ordre := IF(a.NUM= @NUM_mem, @ordre+1, ( @NUM_mem:=b.NUM) OR @ordre:=1) WHERE b ON b.NUM=a.NUM
Si vous avez plus simple je suis peneur