Préparation général

1.1 Page html simple

<html>
	<head>
		<title> ma page simple </title>
		<meta charset="utf-8" />
	</head>
	<body>
		Le premier exemple html
	</body>
</html>

1.2 Page html connecter à la base

<?php
	//connection a la base de données mysql
	$connection = @mysqli_connect('localhost','root','','mabase');
	//effacer l'enregistrement
	$id = @$_GET['ID'];
	if (!empty($id)) {
		//echo ('ID = '.$id.'<br/>');
		$sql = 'delete from nationalite where ID = '.$id;
		//echo ('sql = '.$sql.'<br/>');
		$requete = mysqli_query($connection,$sql);
	}
	//execution de la requete
	$requete = mysqli_query($connection,'SELECT * from nationalite ORDER BY ID');

	$table = "<table border=1>";

	// affichage du resultat de la requetet
	while ($ligne = mysqli_fetch_assoc($requete)) {
		$table.= "<tr><td>".$ligne['ID']."</td><td>".$ligne['LIB'].'</td><td> <a href="?id='.$ligne['ID'].'">supprimer</a> </tr>';
	}
	//ferme la base de données

	$table.="</table>";
	@mysqli_close ($connection);
?>
<html>
	<head>
		<title> ma page simple </title>
		<meta charset="utf-8" />
	</head>
	<body>
		<?=$table?>
	</body>
</html>

1.3 Page html redirection

<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Refresh" content="0; url=prive.php" />
	</head>
	<body>
		<p>Suivez ce lien</p>
	</body>
</html>

2.1 Page php simple

<?php
	$name = 'Marie';
	echo $name.'<br/>';
	echo 'texte<br/>';
	echo 18;
?>

2.2 Les 3 boucles

Ex :boucle while

<?php
	//Initaliser deux variable
	$nom = 'OLIVIER';
	$longeur = strlen($nom);
	//Initialiser un indice
	$indice = 0; 
	//Tant que l'indice est inférieur à la longeur de la chaîne
	while ($indice < $longeur) {
		//Afficher le caractère correspondant à l'indice suivi
		//d'un point.
		echo "<b>$nom[$indice].</b>";
		//Incrémenter l'indice
		$indice++;
	}
	echo '<br/>';
?>

Ex :boucle do

<?php
	//Initaliser deux variable
	$nom = 'OLIVIER';
	$longeur = strlen($nom);
	//Initialiser un indice
	$indice = 0; 
	//Tant que l'indice est inférieur à la longeur de la chaîne
	do {
		//Afficher le caractère correspondant à l'indice suivi
		//d'un point.
		echo "$nom[$indice].";
		//Incrémenter l'indice
		$indice++;
	} while ($indice < $longeur);
	echo '<br/>';
?>

Ex :boucle for

<?php
	//Utilisation de la structure for pour un tableau
	//à indices entier consécutifs
	//initialisation du tableau
	$couleurs = array('bleu','blanc','rouge');
	$nombre = 3;
	//Boucle utilisant un indice $i qui démarre à 0 ($i = 0)
	//qui est incrémenté d'une unité à chaque itération ($i++);
	//la boucle se poursuit tant que l'indice est inférieur au
	//nombre d'éléments présents dans le tableau ($i < $nombre)
	for ($i = 0; $i <$nombre; $i++) {
		echo "$couleurs[$i]<br/>";
	};
?>

2.3 Instruction empty

<?php
	//https://dengfamily.fr/marie/teste15.php
	$nom = 'Dupont';
	$est_vide = empty($nom);
	//echo "\$est_vide =".$est_vide.'<br/>';
	if ($est_vide) {
		echo 'C\'est vide.<br/>';
	} else {
		echo 'Ce n\'est pas vide et $nom = ' .'\''. $nom.'\'<br/>';
	}
		var_dump($nom);
?>

2.4 Page html intégrant du php

<!doctype html>
<html>
	<head>
		<title>Navigateur</title>
	</head>
	<body>
		Les informations sur le Navigateur sont :
		<?php
			echo $_SERVER['HTTP_USER_AGENT'];
		?>
	</body>
</html>

2.5 Suppression d’un enregistrement en php

<?php
	//connection a la base de données mysql
	$connection = @mysqli_connect('localhost','root','','mabase');
	//effacer l'enregistrement
	$id = @$_GET['ID'];
	if (!empty($id)) {
		//echo ('ID = '.$id.'<br/>');
		$sql = 'delete from nationalite where ID = '.$id;
		//echo ('sql = '.$sql.'<br/>');
		$requete = mysqli_query($connection,$sql);
	}
	//execution de la requete
	$requete = mysqli_query($connection,'SELECT * from nationalite ORDER BY ID');
	
	// affichage du resultat de la requete
	while ($ligne = mysqli_fetch_assoc($requete)) {
		echo $ligne['ID'] . ' ' . $ligne['LIB'] . ' - <a href="?ID='.$ligne['ID'].'">supprimer</a> <br/>';
	}
	//ferme la base de données
	@mysqli_close ($connection);
?>

2.6 Création code aléatoire

<?php
//echo chr(122);  //48-57
               //65-90
			   //97-122

	function random_string2($length=6){
	    $i=0;
		$string = '';
		while($i<$length){
			$nb=rand(48,122);
			if (($nb>=48 && $nb<=57)||($nb>=65 && $nb<=90)||($nb>=97 && $nb<=122)) {
				$i++;
				$string .= chr($nb);
			}
		}
		return $string;
	}

	function random_string($length=6){
	    $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
	    $string = '';
	    for($i=0; $i<$length; $i++){
	        //$string .= $chars[rand(0, strlen($chars)-1)];
			$string .= $chars[rand(0, strlen($chars)-1)];
	    }
	    return $string;
	}
?>
<!DOCTYPE html>
<html>
<head>
	<title>Code</title>
	<meta charset="utf-8">
</head>
<body>
	<center>
		<h1>Exercice Code</h1>
		<p>
			Ecrire un script PHP qui calcule peut crée des codes aléatoire.
		</p>
		<form method="post" action="code.php">
			<table border = 0>
			<tr>
				<td>Nouveau code</td>
				<td><input type="submit" name="Valider" value="Valider"></td>
			</tr>
		</table>
		</form>

		<?php
		if(isset($_POST['Valider'])){
			printf(random_string2());
		}
		?>
	</center>
</body>
</html>

3.1 Page asp simple

<!-- #INCLUDE FILE="ConnectDB.asp" -->
<%
	dim appel
	dim oRstStatut
	set oRstStatut=Server.CreateObject("ADODB.Recordset")	
	vQuery = "select * FROM Programme"
	set oRstStatut = ExecuteSQL(vQuery)
	appel="<table border=1>" & vbCrLf
	appel=appel & "<tr><td>id_programme</td><td>id_region</td><td>Libelle</td><td>Adresse</td><td>CodePostal</td><td>Ville</td><td>Livraison</td></tr>"
	while not oRstStatut.EOF
		appel=appel & "<tr><td>" & oRstStatut("id_programme") & "</td><td>" & oRstStatut("id_region") & "</td><td>" & oRstStatut("Libelle") & "</td><td>" & oRstStatut("Adresse") & "</td><td>" & oRstStatut("CodePostal") & "</td><td>" & oRstStatut("Ville") & "</td><td>" & oRstStatut("Livraison") & oRstStatut("NomContact") & oRstStatut("EmailContact") & "</td></tr>" & vbCrLf
		oRstStatut.MoveNext 
	Wend 
	appel=appel & "</table>" & vbCrLf
%>
<!doctype html>
<html>
	<head>
		<title>Programme</title>
		<meta charset='iso-8859-1'>
	</head>
	<body>
		<h2>Liste des programmes</h2>
		<%=appel%>
	</body>
</html>

3.2 Page asp flux

<!-- #INCLUDE FILE="ConnectDB.asp" -->
<%
	dim appel
	dim oRstStatut
	set oRstStatut=Server.CreateObject("ADODB.Recordset")	
	vQuery = "select * FROM Programme"
	set oRstStatut = ExecuteSQL(vQuery)
	appel="<table border=1>" & vbCrLf
	appel=appel & "<tr><td>id_programme</td><td>id_region</td><td>Libelle</td><td>Adresse</td><td>CodePostal</td><td>Ville</td><td>Livraison</td></tr>"
	while not oRstStatut.EOF
		appel=appel & "<tr><td>" & oRstStatut("id_programme") & "</td><td>" & oRstStatut("id_region") & "</td><td>" & oRstStatut("Libelle") & "</td><td>" & oRstStatut("Adresse") & "</td><td>" & oRstStatut("CodePostal") & "</td><td>" & oRstStatut("Ville") & "</td><td>" & oRstStatut("Livraison") & oRstStatut("NomContact") & oRstStatut("EmailContact") & "</td></tr>" & vbCrLf
		oRstStatut.MoveNext 
	Wend 
	appel=appel & "</table>" & vbCrLf
	response.write (appel)
%>

3.3 Page ajax entre asp et html

<html>
	<head>
		<title>Statut</title>
		<meta charset="utf-8" />
		<script>
			function charger(){
				console.log ('hello');
				var xmlhttp = new XMLHttpRequest();
				xmlhttp.onreadystatechange = function() {
					if (this.readyState == 4 && this.status == 200) {
						document.getElementById("resultat").innerHTML = this.responseText;
					}
				}
				var url = "http://localhost/appasp/marieProgramme_flux.asp";
				console.log (url);
				xmlhttp.open("GET", url, true);
				xmlhttp.overrideMimeType('text/xml; charset=iso-8859-1');
				xmlhttp.send();
			}
		</script>
	</head>
	<body onload="charger();">
		<p id="resultat">
			coucou
		</p>
	</body>
</html>

3.4 Accès à la base en asp avec e-spirit

<!-- #INCLUDE FILE="ConnectDB.asp" -->
<%
varColorA = "#DF013E"
tabBannierHaute(0) = " bgcolor=""#CC0000"""
%>
<!doctype html>
<html>
	<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
	<head>
	<!-- #INCLUDE FILE="includes/BanniereHaute.asp" -->			
	</head>
	<link rel="stylesheet" type="text/css" href="css/style.css">	
	<body>	
		<%
		dim oRstStatut
		set oRstStatut=Server.CreateObject("ADODB.Recordset")	
		vQuery = "select * FROM _SCI"
		set oRstStatut = ExecuteSQL(vQuery)
		while not oRstStatut.EOF
			Response.Write(oRstStatut("NomSCI") & "<br/>")
			oRstStatut.MoveNext 
		Wend 
		%>
	</body>
</html>

Ce logiciel permet de travailler le php :

https://github.com/leokhoa/laragon/releases/download/5.0.0/laragon-portable.zip

  1. Apres avoir fait le téléchargement le fichier « aragon-portable.zip » apparait dans téléchargement il faut l’extraire.
  2. Déplacer le dossier « laragon-portable » vers la racine « C : »
  3. Lancer « C:\laragon-portable \laragon.exe »
  4. Cliquer sur le bouton « Start All »
  5. Cliquer sur le bouton « Root » créé un fichier php

ex «  laragon1.php»

<?php
	echo 'bonjour Marie';
?>

6. Cliquer sur le bouton « Web » et ajouter dans l’URL « / laragon1.php »

REMARQUE :

On peux empêcher laragon de lire le fichier « index.php » en le renommant par exemple « index1.php »

  1. a)    Lancer le site : https://dr-deng-carine.chirurgiens-dentistes.fr/
  2. b)   Ajouter « ?tp=1 »
  3. c)     Trouver la position du texte à modifier ex : Position : action
  4. d)   Aller dans l’administration https://dr-deng-carine.chirurgiens-dentistes.fr/administrator
  5. e)    Se connecter à son compte administrateur
  6. f)      Aller dans le menu Extensions / Modules / cliquer sur le bouton « Outils de recherche »
  7. g)    Apres avoir regardé les informations sur « ?tp=1 » rechercher sur les barres donner et modifier les informations demander

7.1 Crée data base

DROP DATABASE IF EXISTS identiter
create database identiter

//crée une table
create table identite  (
	id identite int(3) not null auto_increment, 
	nom varchar(50), 
	prenom varchar(50), 
	age int (5), 
	nationaliter varchar(50)
	primary key (idgens)
);

//inserer un enregistrement dans une table 
INSERT INTO identite values ('null','Deng','Marie',18,'Française')

//visualiser le contenu de la table
SELECT * FROM identite

//selectionner sur une partie fixe
select * from produit where dateachat like "%Marie%";

//modifier un enregistrement
UPDATE identite SET age=22 WHERE  nom='Deng' AND prenom='Ritsmey'

//supprimer un enregistrement
DELETE FROM identite WHERE prenom='Marie'

INSERT INTO nationalite values (1,'francais'); 
INSERT INTO nationalite values (2,'cambodge');
INSERT INTO nationalite values (3,'laos');
INSERT INTO nationalite values (4,'cameroun');   

INSERT INTO identite values ('null','Deng','Marie',18,1);
INSERT INTO identite values ('null','Deng','Ritsmey',20,1);
INSERT INTO identite values ('null','Deng','Vimol',47,2);
INSERT INTO identite values ('null','Deng','Phoungeun',47,3);
INSERT INTO identite values ('null','Kemzeu','Gilles',47,4);

//liaison entre les deux tables
SELECT I.nom,I.prenom,I.age,N.LIB FROM identite I, nationalite N WHERE I.nationalite=N.ID

//Trier sur la colonne ID : 
SELECT * from nationalite ORDER BY ID
//Cree une table : 
CREATE TABLE nation (ID INT, LIB VARCHAR(50))
//Recherche de doublons : 
SELECT COUNT(*), idgens FROM identite GROUP BY nom, prenom HAVING   COUNT(*) > 1

//Assembler deux table (lien 1,n) : 
//Exemple un élève est dans un groupe
SELECT E.nom, E.prenom, G.libelle FROM eleve E, groupe G WHERE E.idGroupe = G.idGroupe

//accent en français
mysqli_set_charset($ouverture, 'utf8');

7.2 Révision SQL

//Créer la table produit
CREATE TABLE produit2 (
	idproduit INT AUTO_INCREMENT NOT NULL,
	designation VARCHAR(50),
	prix FLOAT,
	quantite INT,
	tauxtva FLOAT,
	dateachat DATE,
	categorie VARCHAR(50),
	PRIMARY KEY (idproduit)
);
//insérer un enregistrement la table produit
INSERT INTO produit2 VALUES (null, 'PC', 500, 75, 5.5, '2022-02-14', 'Informatique');
INSERT INTO produit2 VALUES (null, 'brosse à dent', 50, 100, 5.5, '2022-02-18', 'Beauté');
//effacer le premier enregistrement
DELETE FROM produit2 WHERE idproduit=1;
//modifier la quantité de brosse à dent à 51 et le prix=40 dont idproduit=2
UPDATE produit2 SET quantite=51, prix=40 WHERE idproduit=2;
//Voir tous les enregistrements de la table produit
SELECT * FROM produit;
//Compter le nombre d’enregistrement de la table produit
SELECT COUNT(*) FROM produit;
// Voir le prix minimum table produit
SELECT min(prix) FROM produit;
// Voir le prix maximum table produit
SELECT max(prix) FROM produit;
// Voir la somme des prix de la table produit
SELECT sum(prix) FROM produit; 
//Voir la moyenne des prix de la  table produit
SELECT avg(prix) FROM produit;
//Formatage de date heure/date
SELECT idplat, nom, prix, DATE_FORMAT(dateplat, '%H:%i:%s') AS date_fr FROM plat;
SELECT idplat, nom, prix, DATE_FORMAT(dateplat, '%d/%m/%Y') AS date_fr FROM plat;

//Ajouter une colonne
ALTER TABLE gens ADD LIB VARCHAR(20) NULL;

7.3 SELECT plusieurs table

SELECT e.idetudiant, e.nom, e.prenom, e.email, c.nom AS classe FROM etudiant e, classe c WHERE e.idclasse=c.idclasse;
SELECT c.nom AS classe, e.* FROM classe c, etudiant e WHERE c.idclasse=e.idclasse ORDER BY c.nom;
SELECT c.nom AS classe, e.* FROM classe c LEFT JOIN etudiant e ON c.idclasse=e.idclasse ORDER BY c.nom;
SELECT c.nom AS classe, COUNT(e.idetudiant) AS nbeleve FROM classe c LEFT JOIN etudiant e ON c.idclasse=e.idclasse GROUP BY c.nom;

7.4.1 Définition et syntaxe

Un trigger est un ensemble d’ordres SQL lié à une seule table qui s’exécute automatiquement (sans appel) avant ou après les ordres SQL suivants insert, delete, update. Donc on peut écrire pour chaque table au maximum six triggers.

A l’instar des tables ou des vues, un trigger peut être créé, utilisé et à la fin supprimé.

Syntaxe :

create trigger nomTrigger [before, after] [insert, update, delete] on nomTable 
for each row # pour chaque ligne de la table 
begin 
	# traitement : ensemble d’ordres SQL 
end

Dans le corps du trigger, le traitement peut contenir n’importe quel ordre SQL exécuté sur la table ou sur d’autres tables de la base de données. On peut aussi utiliser des alternatives ( if else) ou des boucles.

Dans un trigger, on peut manipuler l’enregistrement (la ligne de la table) selon l’odre SQL choisi (insert / delete / update) : l’enregistrement nouveau c’est pour insert, l’ancien enregistrement c’est pour le delete, l’ancien et le nouveau enregistrements c’est le update.

Nouveau enregistrement : new

Ancien enregistrement : old

Ordre SQLOldNew
Insert X
DeleteX 
updateXX

Pour exécuter plusieurs ordres SQL dans un trigger, on doit changer le délimiteur (;) des ordres SQL. On peut prendre n’importe quel caractère.

delimiter $
create trigger nomTrigger [before, after] [insert, update, delete] on nomTable 
for each row # pour chaque ligne de la table 
begin 
	# traitement : ensemble d’ordres SQL 
	# les ordres SQL se terminent par ; 
end $
delimiter ;

Pour supprimer un trigger, on utilise l’ordre SQL drop.

drop trigger nomTrigger;

7.4.2 Rôle des triggers

Les rôles des triggers sont divers et permettent entre autres :

  • Vérifier l’intégrité des données avant leur injection ou extraction de la base de données.
  • Réaliser des traitements annexes avant ou après un orde SQL
  • Réaliser des sauvegardes (historiser) des suppressions

7.4.3 Exemple

Soit la base de données suivantes :

Drop database if exists cfa_2023_test; 
create database cfa_2023_test ; 
use cfa_2023_test; 

create table promotion (
	idpromo int (3) not null auto_increment , 
	nom varchar(50), 
	salle varchar (50), 
	nbEtudiants int(3), 
	primary key (idpromo)
);

create table etudiant (
	idetudiant int (3) not null auto_increment , 
	nom varchar(50), 
	prenom varchar (50), 
	idpromo int(3) not null, 
	primary key(idetudiant), 
	foreign key (idpromo) references promotion (idpromo)
);

Réaliser le trigger suivant : A chaque insertion d’un étudiant dans la table Etudiant, le nbEtudiants dans la table promotion sera incrémenté de 1 pour la promotion de cet étudiant.

delimiter  $
create trigger incrementation after insert  on etudiant 
for each row 
begin 
	update promotion set nbEtudiants = nbEtudiants + 1  where idpromo = new.idpromo ;
end  $
delimiter  ;

Vérification de l’exécution du trigger :

Réaliser le trigger qui fait le travail inverse : à chaque suppression d’un étudiant, le nbEtudiants de sa promotion sera décrémenté de 1.

delimiter $
create trigger decrementation after delete on etudiant
for each row 
begin 
	update promotion set nbEtudiants = nbEtudiants - 1 where idpromo = old.idpromo; 
end $ 
delimiter ;

Vérification du trigger :

Exercice 1 : Ajouter dans la table Promotion, l’attribut budget Scolarité. Modifier les deux triggers pour qu’à  chaque insertion ou suppression, on actualise le budget de scolarité de la classe. Ajouter dans la table Etudiant l’attribut montant de la scolarité.

Solution :

alter table promotion add budget float ; 
alter table etudiant add montant float ; 

update promotion set budget =0; 
update etudiant set montant = 0; 

drop trigger incrementation ; 
delimiter  $
create trigger incrementation after insert  on etudiant 
for each row
Begin 
	update promotion set nbEtudiants = nbEtudiants + 1  where idpromo = new.idpromo ;
	update promotion set budget = budget + new.montant where idpromo = new.idpromo ;
end  $
delimiter  ;

Insertion de deux étudiants :

insert into etudiant values (null, « Lucas », « Julien », 1, 5000); 
insert into etudiant values (null, « david », « Julia », 1, 5000); 

Exercice 2 : A chaque suppression d’un étudiant, on stocke les noms et prénoms et la date de suppression dans une table archive anciens étudiants (idetudiant, nom, prenom, datefin).

create table anciens (
	idetudiant int (3) not null auto_increment, 
	nom varchar(50), 
	prenom varchar(50), 
	datefin date, 
	primary key(idetudiant)
);

drop trigger decrementation ; 

delimiter   $
create trigger archivage after delete on etudiant 
for each row 
begin 
	update promotion set nbEtudiants = nbEtudiants - 1 where idpromo = old.idpromo; 
	update promotion set budget=budget - old.montant where idpromo = old.idpromo ;
	insert into anciens values (null, old.nom, old.prenom, sysdate () ); 
end $
delimiter ;

Console log pour afficher le log en JavaScript

Appel fonction JavaScript lorsque la page html est chargée : onload= « fonction »

Crée une alerte :

<script>
 	function validation_HT(){
	var total=document.getElementById("MontantHT").value;
	total=total.replace(' ', '');
	total=total.replace(',', '.');
	total=Number(total);
	console.log(total);
	var somme_HT=document.getElementById("SommeMontantImputation").value;
	if(somme_HT==total){
		return true;
		}else{
			alert("Le cumul des montants (" + somme_HT + ") n'est pas égal au montant total("+ total +")");
			return false;
		}
 	}
</script>

Plus ajouter dans form : onsubmit= »return validation_HT(); »

9.1 C++ simple

#include <stdio.h>
int main(){
	printf("Hello!");
	return 0;
}

9.2 Utilisation du type char

#include<stdio.h>
int main(){
	char p [50];
	int a;
	printf ("saisir age : ");
	scanf ("%d", &a);
	printf ("saisir prenom : ");
	scanf ("%s", &p);
	printf ("vous avez %d ans et vous vous appellez %s", a, p);
	return 0;
}

A RETENIR

%s pour les lettres

Char p [50]

Préparation SQL avec Excel :

=CONCATENER("insert into machin values ('";D4;"','";E4;"');")

Cela donne :

insert into machin values ('ANTONY 92','Les Jardins d'Antony');

Tableau croisé dynamique:

INSERTION (onglet du haut) <sélectionner le tableau<tableau croisé dynamique<mettre les champs dans les zone voulue<CREATION (onglet du haut) <Disposition du rapport<Afficher sous forme tabulaire< Disposition du rapport<Répéter toutes les étiquettes d’élément<Sous-totaux<Ne pas afficher les sous-totaux

Remarque

Si on veut changer la zone valeur en somme :

Petite flèche à droite du champ<Paramètre des champs de valeur<somme

insert into etudiant values (null, "Mendy", "David", "2003-12-20", "Alternant", 17, "d.mendy@gmail.com", 369, 1);
insert into etudiant values (null, "Deng", "Marie", "2003-06-30", "Alternant", 16, "m.deng@gmail.com", 753, 1);
insert into etudiant values (null, "Chardon", "Julia", "1995-02-05", "Initial", 15, "j.chardon@gmail.com", 951, 2);

11.1     java simple :

public class Hello {
	public static void main(String[] args) {
		System.out.println("hello");
	}
}

12.1 page Python simple

print("Hello!")
n=int(input("saisir votre âge : "))
print("Vous avez",n,"ans.")