Comment insérer des données dans 2 (deux) tables simultanément ayants des clé etrangères?

Par défaut

Bonjour, aujourd’hui je fais ce Tuto grâce à une demande faite par: Charlo****** De****

Comment insérer des données dans 2 (deux) tables simultanément ayants une clé étrangère en PHP et MySQL ?

Supposons que nous avons ces deux tables suivantes:

  • Table Eleves: garde les informations relatives aux élèves
  • Table Inscription: défini la classe dans laquelle un élève appartient, sa scolarité et dans une année scolaire précise.

Vu que la clé primaire de la table ELEVES est étrangère dans la table INSCRIPTION, nous voulons insérer les données de l’élève une seule fois dans ces deux tables.

VOILA COMMENT LE FAIRE EN PHP et MySQL

1- Methode de connexion à ma base de donnée MySQL est MySQLi

define("HOST", "localhost"); // Adresse du Serveur MySQL
define("USER", "root");    // Nom d'utilisateur dela DB. 
define("PASSWORD", "");    // Mot de passe de la DB
define("DATABASE", "ecole"); // Nom de la DB
$mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);
// TEST DE CONNEXION 1
if($mysqli->connect_errno > 0){
    die('IMPOSSIBLE DE SE CONNECTER AU SERVEUR' .$mysqli->connect_error);
}
Connexion à la Base de données MySQL

2- Données provenant de votre formulaire en mode POST

$nom = filter_input(INPUT_POST,'nom',FILTER_SANITIZE_STRING);
$prenom = filter_input(INPUT_POST,'prenoms',FILTER_SANITIZE_STRING);
$sexe = filter_input(INPUT_POST,'sexe',FILTER_SANITIZE_STRING);
$classe = filter_input(INPUT_POST,'classe',FILTER_SANITIZE_NUMBER_INT);
$scolarite = filter_input(INPUT_POST,'scolarite',FILTER_SANITIZE_NUMBER_INT);
$idann_sco = filter_input(INPUT_POST,'idann_sco',FILTER_SANITIZE_NUMBER_INT);
Donnée venant de votre formulaire en POST

3- Insertion de données dans les tables.

// insertion dans table eleves
$sql = $mysqli->prepare("INSERT INTO eleves (nom,prenom,sexe) VALUES (?,?,?)") or die(mysqli_error($mysqli));
$sql->bind_param('sss',$nom,$prenom,$sexe);
if($sql->execute()){
	// recuperation du dernier IDELEVE inséreé dans la table eleves
	$ideleves = $sql->insert_id;
	// Insertion dans la table inscription
	$int = $mysqli->prepare("INSERT INTO inscription (ideleves,classe,scolarite,ann_sco) VALUES (?,?,?,?)") or die(mysqli_error($mysqli));
	$int->bind_param('iiii',$ideleves,$classe,$scolarite,$idann_sco);
	if($int->execute()){
		echo 'VOS DONNEES ONT BIEN ETE AJOUTEES DANS LSE DEUX TABLES';	
	}else{
		die('Impossible d\'insérer les donnée dans la deuxième table (inscription). '.mysqli_error($mysqli));
	}
}else{
	die('Impossible d\'insérer dans la table premiere table: Eleves '.mysqli_error($mysqli));	
}
Insertion de données dans les deux tables.

N’hésitez pas à poster vos commentaires et suggestions au besoin.

Comment Récupérer/Afficher les notes des étudiants selon une Année Scolaire

Par défaut

Bonjour à tous. Aujourd’hui je fais ce tutoriel car j’ai été contacté par plusieurs personnes au sujet de la récupération des Notes des étudiants ou la liste des étudiants d’une classe selon une année Scolaire. Ce tutoriel est une approche de la méthodologie des problématiques que vous pourriez avoir, lors du développement d’une application de Gestion Scolaire.

Le principe: est d’ajouter une colonne idannee_sclolaire dans toutes les tables susceptibles d’avoir des données de chaque année scolaire.

Dans ce tutoriel, j’ai utilisé le logiciel MySQL WorkBench pour modéliser les tables ci-dessous:

Dans le Diagramme ci-dessus nous avons 6 tables. J’ai utilisé ces 6 tables car nous voulons récupérer les Notes de tous les étudiants selon une classe et selon une Matière, dans une année Scolaire.

EXPLIQUATION DES TABLES

  • annee_scolaire (Contient la liste des années Scolaires) voir Image ci-dessous

  • classe (Contient la liste de classe disponible dans l’établissement) voir image ci-dessous

  • matière (contient la liste des matières enseignées dans l’établissement). Sans oublier que vous pouvez créer une autre table qui contiendra la listes des matières à enseigner dans une classe bien précise. (On en parlera pas ici) Image ci-dessous.

  • etudiant (liste des étudiants inscrits) voir image ci-dessous

  • classe_etudiant (cette table contient la liste des étudiants inscrit dans une classe à une année scolaire précise) voir image ci-dessous

note (liste des notes des étudiants, selon une matière, une classe, et l’année Scolaire) voir image ci-dessous

Et voila, nous avons des données dans nos tables.

Maintenant nous voulons récupérer la Note de tous les étudiants de l’année scolaire:(2017-2018)

SELECT nom,prenoms,sexe,matricule,note FROM etudiant INNER JOIN note ON note.idetudiant=etudiant.idetudiant WHERE idannee_scolaire=1;
Année Scolaire 2017-2018

Maintenant nous voulons récupérer la Note de tous les étudiants de l’année scolaire (2018-2019)

SELECT nom,prenoms,sexe,matricule,note FROM etudiant INNER JOIN note ON note.idetudiant=etudiant.idetudiant WHERE idannee_scolaire=2;
Année Scolaire 2018-2019
  • Vous pourriez récupérons les notes des étudiants par classe de l’année scolaire (2017-2018)
  • Vous pourriez récupérons les notes des étudiants par classe de l’année scolaire (2018-2019)
  • Et bien d’autre requêtes……

Le principe est d’ajouter une colonne annee_scolaire dans toutes les tables qui garderont les données annuelles d’un établissement. Ensuite, vous devez spécifier dans vos requêtes que vous voudriez récupérer les données d’une année spécifique en ajoutant la clause WHERE idannee_scolaire=1 ou 2 ou 3; (D’ou 1 = 2017-2018 & 2 = 2018-2019 & 3 = 2019-2020 dans la table annee_scolaire)

Alors, j’espère que cette Méthodologie vous aidera à mieux comprendre et à améliorer le conception de récupération de données selon une année scolaire. Cela peut s’appliquer à la table d’émargement et de paiement des professeurs d’un établissement, et bien d’autres……..

N’hésitez pas à laisser vos commentaires, suggestions et  correction à ce tutoriel.

 

Comment imprimer une Section de votre page avec JavaScript

Par défaut

Bonjour, Aujourd’hui nous allons voir comment imprimer une portion de page en JavaScript.

Alors supposons que nous avions effectuer une recherche depuis une Base de données MySQL, ensuite PHP nous a affiché le résultat suivant:

 

Qu’est-ce que nous voulons faire ?
Nous voulons imprimer ou exporter en PDF le résultat de notre recherche (encadré en rouge).
Voila comment faire:

  1. Créer une fonction en JavaScript qu’on va appeler “imprimer”
    <script>
    function imprimer(divName) {
          var printContents = document.getElementById(divName).innerHTML;    
       var originalContents = document.body.innerHTML;      
       document.body.innerHTML = printContents;     
       window.print();     
       document.body.innerHTML = originalContents;
       }
    </script>
    function imprimer

    2. Créer un bouton ou un lien sur lequel l’utilisateur va cliquer pour imprimer

    – Bouton HTML

    <button onClick="imprimer('sectionAimprimer')">Imprimer</button>
    Bouton imprimer

    Lien HTML

    <a href="#" onClick="imprimer('sectionAimprimer')">Imprimer</a>

    3. Créer maintenant un DIV qui aura pour ID ‘sectionAimprimer’. Dans ce DIV, vous devriez afficher le résultat à imprimer.

    <div id='sectionAimprimer'>
    Résultat MySQL ou tableau HTML à imprimer
    </div>

    Et voila, le tout est fait.
    N’hésitez pas à poster vos commentaires ou suggestions.

 

 

Comment exporter le résultat d’une requête MySQL en Excel avec PHP

Par défaut

Bonjour, aujourd’hui je vais vous montrer comment exporter le résultat d’une requête MySQL en Excel en utilisant PHP.

<?php
// Information de connexion à notre base de données
define('HOST','localhost'); // adresse du serveur MySQL
define('USER','root'); // Utilisateur de notre Serveur MySQL
define('PASSWORD',''); //  Mot de passe de l'utilisation MySQL
define('DATABASE','geschools'); // Nom de la Base de données

// Ma requête SQL (Vous pouvez modifier la requete selon la structure de votre table
$sql='SELECT nom,prenom,sexe,adresse,ville,contact FROM clients';

/////////////////////////// NE MODIFIER PAS CE QUI SUIT ////////////////////////
/////////////////////////////							///////////////////////
// Connexion au Serveur MySQL
$Connect = @mysql_connect(HOST, USER, PASSWORD) or die("Impossible de se connecter à MySQL:<br>" . mysql_error() . "<br>" . mysql_errno());
// Select de la Base de donnée MySQL
$Db = @mysql_select_db(DATABASE, $Connect) or die("Impossible de choisir la Base de Donnée:<br>" . mysql_error(). "<br>" . mysql_errno());
// Exécution de la Requête POST ou GET
$result = @mysql_query($sql,$Connect) or die("Impossible d\'exécuter la requête:<br>" . mysql_error(). "<br>" . mysql_errno());    
$file_ending = "xls";
//Information de l\'entêt de notre navigateur
header("Content-Type: application/xls");    
header("Content-Disposition: attachment; filename=Exportation".date('d-m-Y').".xls");  
header("Pragma: no-cache"); 
header("Expires: 0");
/*******Debut du formatage d'excel*******/ 
// Definition du séparateur de colonne dans excel
$sep = "\t"; 
// Début d'impression des noms des colonnes MySQL
for ($i = 0; $i < mysql_num_fields($result); $i++) {
echo mysql_field_name($result,$i) . "\t";
}
print("\n");    
//Fin d'impression de colonnes
// Debut de la boucle
    while($row = mysql_fetch_row($result))
    {
        $schema_insert = "";
        for($j=0; $j<mysql_num_fields($result);$j++)
        {
            if(!isset($row[$j]))
                $schema_insert .= "NULL".$sep;
            elseif ($row[$j] != "")
                $schema_insert .= "$row[$j]".$sep;
            else
                $schema_insert .= "".$sep;
        }
        $schema_insert = str_replace($sep."$", "", $schema_insert);
        $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);
        $schema_insert .= "\t";
        print(trim($schema_insert));
        print "\n";
    }   

?>
Exporter le Résultat MySQL en Excel avec PHP

Comment connaitre le nombre de jours entre deux dates en PHP

Par défaut

il y a plusieurs possibilités pour connaitre le nombre de jour entre deux dates en PHP

SOLUTION

<?php
// Solution 1
$date1 = new DateTime("2010-07-06");
$date2 = new DateTime("2010-07-09");
$diff = $date2->diff($date1)->format("%a");
echo $diff;

// Solution 2
$debut = strtotime('2010-01-25');
$fin = strtotime('2010-02-20');
$dif = ceil(abs($fin - $debut) / 86400);
echo $dif;

// Solution 3
$datetime1 = new DateTime("2010-06-20");
$datetime2 = new DateTime("2011-06-22");
$difference = $datetime1->diff($datetime2);
echo 'Difference: '.$difference->y.' Annees, ' 
                   .$difference->m.' Mois, ' 
                   .$difference->d.' Jours';

?>
Solution