--- title: Cours php tags: cours, php, good practice robots: noindex, nofollow author: Giuseppe Militello --- # Cours PHP & SQL![](https://i.imgur.com/OgqW7eJ.gif) ![](https://i.imgur.com/ATHFKsT.png) > &copy; [Giuseppe Militello](https://www.linkedin.com/in/giuseppe-militello-22406ab0/) - All rights reserved for educational purposes only ## Histoire Le langage PHP fut créé en 1994 par Rasmus Lerdorf pour son site web. C'était à l'origine une bibliothèque logicielle en C dont il se servait pour conserver une trace des visiteurs qui venaient consulter son CV. Au fur et à mesure qu'il ajoutait de nouvelles fonctionnalités, Rasmus a transformé la bibliothèque en une implémentation capable de communiquer avec des bases de données et de créer des applications dynamiques et simples pour le Web. Rasmus décida alors en 1995 de publier son code, pour que tout le monde puisse l'utiliser et en profiter. PHP s'appelait alors PHP/FI (pour Personal Home Page Tools/Form Interpreter). En 1997, deux étudiants, Andi Gutmans et Zeev Suraski, redéveloppèrent le cœur de PHP/FI. Ce travail aboutit un an plus tard à la version 3 de PHP, devenu alors PHP: Hypertext Preprocessor. Peu de temps après, Andi Gutmans et Zeev Suraski commencèrent la réécriture du moteur interne de PHP. Ce fut ce nouveau moteur, appelé Zend Engine — le mot Zend est la contraction de Zeev et Andi — qui servit de base à la version 4 de PHP ## Quelques dates importante des versions PHP | 1994 | 1997 | 1997 | 2004 | 2015 | 2021 | | --------- | --------- | --------- | --------- | --------- | --- | | varsion 1 | varsion 3 | version 4 | version 5 | version 7 | version 8 | ## Syntaxe et variables d'environnement ```php= <?php echo "Votre Navigateur est : ".$_SERVER['HTTP_USER_AGENT']; echo "Votre Adresse Serveur est :".$_SERVER['REMOTE_ADDR']; echo "Nous le : ".date("d/m/Y")." Il est : ".date("H:i:s")." Sec"; ?>; ``` ## Déclaration des variables et constantes ```php= //mes constantes <?php const constant='Cours php'; ?> //on peut aussi utiliser la méthode suivante <?php define('TITRE','Cours php'); ?> //Les variables <?php $nav=$_SERVER['HTTP_USER_AGENT'];//Une super globale affectée à une variable $document=$_SERVER['DOCUMENT_ROOT']; $date=date('d-m-Y');//La méthode date affectée à une variable ?> //un tableau d'objet affectée à une constante <?php const icone=array( 'google'=>'image/1410286517_google-plus.png', 'fb'=>'image/1410286557_facebook.png', 'twitter'=>'image/1410288902_twitter.png' ); //print_r(icone); foreach (icone as $key => $index) { echo "<li><img src=".$index." alt=\"icones\"></li>\n"; } ?> ``` * Manuel PHP : [https://www.php.net/](https://www.php.net/) ## Le SQL (Structured Query Language) En juin 1970, Edgar Frank Codd publia l'article A Relational Model of Data for Large Shared Data Banks (Un référentiel de données relationnel pour de grandes banques de données partagées) dans la revue Communications of the ACM (Association for Computing Machinery). Ce référentiel relationnel fondé sur la logique des prédicats du premier ordre a été rapidement reconnu comme un modèle théorique intéressant, pour l'interrogation des bases de données, et a inspiré le développement du langage Structured English QUEry Language (SEQUEL) (langage d'interrogation structuré en anglais), renommé ultérieurement SQL pour cause de conflit de marque déposée. ## La syntaxe ``` CREATE DATABASE nom DAFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci ``` ## Structurer une table par SQL ```sql= CREATE TABLE `article` ( `id_article` int(11) NOT NULL, `titre` varchar(255) NOT NULL, `slug` varchar(60) NOT NULL, `contenu` longtext, `date_creation` datetime DEFAULT NULL, `date_modification` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=latin1; ``` ## La classe PDO L'extension PHP Data Objects (PDO) définit une excellente interface pour accéder à une base de données depuis PHP. Chaque pilote de base de données implémenté dans l'interface PDO peut utiliser des fonctionnalités spécifiques de chacune des bases de données en utilisant des extensions de fonctions. Notez que vous ne pouvez exécuter aucune fonction de base de données en utilisant l'extension PDO par elle-même ; vous devez utiliser un driver PDO spécifique à la base de données pour accéder au serveur. ## Exemple de code pour se connecter à la BDD et sélectionner les éléments d'une table: ```php= try{// On se connecte à MySQL $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=localhost;dbname=personne', 'root', '', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',$pdo_options)); // On récupère tout le contenu de la table livre $reponse = $bdd->query('SELECT * FROM utilisateurs'); // On affiche chaque entrée une à une while ($donnees = $reponse->fetch()){ echo "<pre>"; print_r ($donnees); echo "</pre>"; // on affiche les informations de l'enregistrement en cours // pour tester avant echo "<pre>".print_r($donnees)."</pre>"; } $reponse->closeCursor(); // Termine le traitement de la requête } //partie finale catch(Exception $e){ // En cas d'erreur précédemment, on affiche un message et on arrête tout die('Erreur : '.$e->getMessage()); } ``` ## Une autre méthode de parcourir un tableau ```php= <?php foreach($_response as $_article):?> <!--itération avec la bdd --> <article> <h2> <a href="article.php?id=<?= $_article["id"]?>"> <?= strip_tags($_article['titre'])?></a> <!-- la méthode strip_tags() permet de filtrer les caractère illégaux--> </h2> <p> <?= $_article['contenu'] ?> </p> <time datetime="<?= $_article['date_modification']?>"> Date de modification : <?=$_article['date_modification']?> </time> <span class="material-symbols-outlined" aria-hidden="true"> thumb_up </span> <span class="material-symbols-outlined" aria-hidden="true"> thumb_down_off </span> <span class="material-symbols-outlined" aria-hidden="true"> favorite </span> <span class="material-symbols-outlined" aria-hidden="true"> comment </span> </article> <?php endforeach; ?> ``` ## Pour insérer des données dans une table même principe ```php= //sélectionner la base pour la connection try{ $bdd=new PDO('mysql:host=localhost;dbname=mesclient;charset=utf8', 'root', ''); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } ```