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