Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

NodeBB

  1. Home
  2. Programmation
  3. Développement web
  4. PHP
  5. Cours d'initiation aux rudiments du PHP

Cours d'initiation aux rudiments du PHP

Scheduled Pinned Locked Moved PHP
10 Posts 4 Posters 3.0k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • SoulalexS
    SoulalexS
    Soulalex
    wrote on last edited by
    #1

    <div class="ipsType_normal ipsType_richText ipsContained" data-controller="core.front.core.lightboxedImages" itemprop="text"><p style="text-align:center;"><img alt="c0d23d2d6769e53e24a1b3136c064577-php_log" src="<base_url>/applications/sslimageproxy/interface/image.php?url=http://www.php.net/manual/fr/images/c0d23d2d6769e53e24a1b3136c064577-php_logo.png"/></p><p style="text-align:center;"><em>Le PHP est un langage de programmation web permettant d'insérer du contenu dynamique dans vos pages. Ce langage offre de nombreuses possibilités telles que la gestion de news ou encore l'envoie d'eamil et combiné à une base de données, ses performances sont considérables.</em></p><p></p><p>Le <strong>PHP </strong>nécessite de <u>nombreux outils</u> et de <u>nombreuses heures d’apprentissage</u>.</p><p>Pour commencer, vous aurez besoin de <a data-ipb="nomediaparse" href="http://www.apachefriends.org/fr/index.html" rel="external nofollow" target="_blank">Xampp </a>ou <a data-ipb="nomediaparse" href="http://www.wampserver.com/" rel="external nofollow" target="_blank">Wamp </a>ou tout autre logiciel incluant <strong>Apache, PHP et MySQL</strong>.</p><p>Ensuite, je vous conseille vivement de garder la <strong><a data-ipb="nomediaparse" href="http://www.php.net/manual/fr/" rel="external nofollow" target="_blank"><u>documentation proposée par PHP</u></a></strong> afin de trouver rapidement des fonctions ainsi qu'un <strong><a data-ipb="nomediaparse" href="http://fr.openclassrooms.com/informatique/cours/concevez-votre-site-web-avec-php-et-mysql" rel="external nofollow" target="_blank"><u>cours bien rédigé</u></a></strong> comme celui de Mateo21 sur OpenClassrooms.</p><p> </p><p>Bien que dans ce cours elles ne sont pas utiles, le PHP requière des connaissances en HTML/CSS. En combinant tous ces langages, vous pourrez obtenir un site à la fois dynamique et élégant. Vous pourrez le rendre encore plus dynamique en utilisant le langage Javascript.</p></div><p></p>

    Soulalex, Administrateur de Melinyel+ E-Mail : [email protected]+ GitHub : https://github.com/Soualex

    1 Reply Last reply
    0
    • SoulalexS
      SoulalexS
      Soulalex
      wrote on last edited by
      #2

      <p style="text-align: center;"><span style="font-size:20px;"><strong>I - Commençons à partir de 0</strong></span></p><p> </p><p>Dès lors que vous utiliserez le langage PHP dans un de vos codes de votre site web, le fichier le contenant doit être impérativement en <strong>.php</strong>. Vous pourrez à partir de ce fichier écrire du HTML normalement à la différence que vous pourrez rajouter la balise <span style="color:#ff0000;"><strong><?php ?></strong></span> et écrire du code PHP entre celle-ci.</p><p></p><p><strong><span style="font-size:18px;">VARIABLES ET TEXTE :</span></strong></p><hr/><p>Contrairement à d'autres langages, déclarer des variables et les afficher grâce à l’instruction <strong>echo </strong>est une tâche très simple en PHP. Quelques exemples vont vous aider à comprendre :</p><pre class="ipsCode ipsCode prettyprint lang-auto linenums:0 prettyprinted" style=""><span class="com"><!-- (Commentaire HTML)Ceci est un commentaire réservé exclusivement au langage HTML --></span><span class="pln">

      </span><span class="pun"><?</span><span class="pln">php
      </span><span class="com">// Ceci est un commentaire sur une ligne (Commentaire PHP)</span><span class="pln">
      </span><span class="com">/* Ceci est un
      commentaire
      sur plusieurs lignes (Commentaire PHP) */</span><span class="pln">

      </span><span class="com">/* Variables */</span><span class="pln">
      $ma_variable</span><span class="pun">;</span><span class="pln"> </span><span class="com">// Ceci est une variable</span><span class="pln">
      $ma_variable </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln"> </span><span class="com">// Ceci est une variable valant 1</span><span class="pln">

      </span><span class="com">/* Afficher du texte */</span><span class="pln">
      echo </span><span class="str">'Du texte'</span><span class="pun">;</span><span class="pln"> </span><span class="com">// Ceci va afficher "Du texte"</span><span class="pln">
      echo $ma_variable</span><span class="pun">;</span><span class="pln"> </span><span class="com">// Ceci affiche le contenu de "$ma_variable"</span><span class="pln">
      </span><span class="pun">?></span></pre><p></p><p><span style="font-size:18px;"><strong>CONDITIONS ET BOUCLES :</strong></span></p><hr/><p>Une <strong>condition </strong>vous permet d’exécuter des scripts différents en fonction de certains critères. Vous trouverez notamment deux types de conditions : la condition <strong>if...else</strong> et la condition <strong>switch</strong>. Elles s'utilisent de cette manière :</p><pre class="ipsCode ipsCode prettyprint lang-auto linenums:0 prettyprinted" style=""><span class="pun"><?</span><span class="pln">php
      </span><span class="com">// Avec if...else</span><span class="pln">
      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$autorisation_entrer </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="com">// SI on a l'autorisation d'entrer</span><span class="pln">
      </span><span class="pun">{</span><span class="pln">
          </span><span class="com">// instructions à exécuter quand on est autorisé à entrer</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
      </span><span class="kwd">else</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$autorisation_entrer </span><span class="pun">==</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="com">// SINON SI on n'a pas l'autorisation d'entrer</span><span class="pln">
      </span><span class="pun">{</span><span class="pln">
          </span><span class="com">// instructions à exécuter quand on n'est pas autorisé à entrer</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
      </span><span class="kwd">else</span><span class="pln"> </span><span class="com">// SINON (la variable ne contient ni Oui ni Non, on ne peut pas agir)</span><span class="pln">
      </span><span class="pun">{</span><span class="pln">
          echo </span><span class="str">"Euh, je ne connais pas ton âge, tu peux me le rappeler s'il te plaît ?"</span><span class="pun">;</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">

      </span><span class="com">// Avec switch</span><span class="pln">
      </span><span class="kwd">switch</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$autorisation_entrer</span><span class="pun">)</span><span class="pln">
      </span><span class="pun">{</span><span class="pln">
      </span><span class="kwd">case</span><span class="pln"> </span><span class="lit">0</span><span class="pun">:</span><span class="pln">
      </span><span class="com">// instructions à exécuter quand on n'est pas autorisé à entrer</span><span class="pln">
      </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">

      </span><span class="kwd">case</span><span class="pln"> </span><span class="lit">1</span><span class="pun">:</span><span class="pln">
       </span><span class="com">// instructions à exécuter quand on est autorisé à entrer</span><span class="pln">
      </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">

      </span><span class="kwd">default</span><span class="pun">:</span><span class="pln">
      echo </span><span class="str">"Euh, je ne connais pas ton âge, tu peux me le rappeler s'il te plaît ?"</span><span class="pun">;</span><span class="pln">
      </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
      </span><span class="pun">?></span></pre><p>Dans mon exemple, j'utilise des symboles comparateur que vous devez absolument connaître :</p><p>==   Est égal à</p><p>=== Est équivalent à</p><p>>     Est strictement supérieur à</p><p><     Est inférieur supérieur à</p><p>>=   Est supérieur ou égal à</p><p><=   Est inférieur ou égal à</p><p>!=    Est différent de</p><p> </p><p>On peut donner plusieurs conditions à la fois et ce grâce à ces petits symboles :</p><p>||    OR  Ou</p><p>&& AND Et</p><p></p><p><strong><span style="font-size:18px;">FONCTIONS ET INCLUSION DE PAGES :</span></strong></p><hr/><p>Quand vous serez un expert en PHP, vos codes pourront atteindre des centaines de lignes. Il est clairement difficile de s'y retrouver même avec des commentaires bien rédigés. Je vous propose deux solutions : les <strong>fonctions </strong>et<strong> l'inclusion de pages</strong>.</p><p>Lorsque vous écrivez votre code PHP il se peut que vous ayez à écrire plusieurs fois le même chose mais il existe les <strong>fonctions </strong>qui vous permettront de rentrer votre code à l'intérieur de la fonction et en appelant celle-ci à l'endroit voulu le code de la fonction sera exécuté. Une fonction peut aussi prendre des <strong>arguments </strong>et <strong>retourner une valeur</strong>. Je m'explique, quand vous appelez votre fonction, vous pouvez lui attribuer des valeurs dans les parenthèses que vous pouvez ensuite récupérer dans votre fonction et après quelques lignes de calculs, vous pouvez renvoyer une valeur que vous pourrez utiliser à l'endroit où votre fonction a été appelé.</p><p>Bien que pratique, les fonctions prennent elles aussi beaucoup de place dans un fichier c'est pour quoi je vous propose de diviser votre page en plusieurs ainsi chaque page de votre aura une fonction bien définie et pourra être appelée dans une autre grâce aux fonctions suivantes :</p><ul class="bbc"><li><strong>include() </strong>: Inclut une page dans une autre.</li><li><strong>include_once() </strong>: Inclut une seule fois une page dans une autre.</li><li><strong>require() </strong>: Inclut une page dans une autre et renvoie un message d'erreur en cas d’échec.</li><li><strong>require_once()</strong> : Inclut une seule fois une page dans une autre et renvoie un message d'erreur en cas d’échec.</li></ul><pre class="ipsCode ipsCode prettyprint lang-auto linenums:0 prettyprinted" style=""><span class="pun"><?</span><span class="pln">php
      </span><span class="com">// Ceci est une fonction</span><span class="pln">
      </span><span class="kwd">function</span><span class="pln"> maFonction</span><span class="pun">(</span><span class="pln">$argument1</span><span class="pun">,</span><span class="pln"> $argument2</span><span class="pun">)</span><span class="pln">
      </span><span class="pun">{</span><span class="pln">
      </span><span class="kwd">return</span><span class="pln"> $argument1</span><span class="pun">;</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">

      $une_variable_inutile </span><span class="pun">=</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln">
      $variable_contenant_la_valeur_retourne_par_la_fonction </span><span class="pun">=</span><span class="pln"> maFonction</span><span class="pun">(</span><span class="str">'blabla'</span><span class="pun">,</span><span class="pln"> $une_variable_inutile</span><span class="pun">);</span><span class="pln">
      </span><span class="com">// Le contenu de "variable_contenant_la_valeur_retourne_par_la_fonction" serra "blabla"</span><span class="pln">
      </span><span class="pun">?></span></pre><p></p><p><span style="font-size:18px;"><strong>TABLEAUX :</strong></span></p><hr/><p>Un tableau est variable à laquelle on peut donner plusieurs valeurs associées chacune à une clé. Exemples :</p><pre class="ipsCode ipsCode prettyprint lang-auto linenums:0 prettyprinted" style=""><span class="pun"><?</span><span class="pln">php
      $membre </span><span class="pun">=</span><span class="pln"> array</span><span class="pun">(</span><span class="str">'nom'</span><span class="pln"> </span><span class="pun">=></span><span class="pln"> </span><span class="str">'Truc'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'prenom'</span><span class="pln"> </span><span class="pun">=></span><span class="pln"> </span><span class="str">'Machin'</span><span class="pun">);</span><span class="pln">

      </span><span class="com">// Vous pouvez aussi faire comme cela</span><span class="pln">
      $membre</span><span class="pun">[</span><span class="str">'nom'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">'Truc'</span><span class="pun">;</span><span class="pln">
      $membre</span><span class="pun">[</span><span class="str">'prenom'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">'Machin'</span><span class="pun">;</span><span class="pln">
      </span><span class="pun">?></span></pre><p>Pour parcourir un tableau on pourrait utiliser la boucle for() mais celle-ci n'est pas très pratique donc je vous propose d'utiliser cette boucle : foreach() qui s'utilise comme ci-dessous :</p><pre class="ipsCode ipsCode prettyprint lang-auto linenums:0 prettyprinted" style=""><span class="pun"><?</span><span class="pln">php
      </span><span class="kwd">foreach</span><span class="pun">(</span><span class="pln">$member </span><span class="kwd">as</span><span class="pln"> $cle </span><span class="pun">=></span><span class="pln"> $information</span><span class="pun">)</span><span class="pln">
      </span><span class="pun">{</span><span class="pln">
      echo $cle</span><span class="pun">.</span><span class="str">' : '</span><span class="pun">.</span><span class="pln">$information</span><span class="pun">;</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
      </span><span class="com">/* Dans ce cas, j'ai récupéré la clé et son contenu. Vous pouvez très bien ne pas récupérer la clé en faisant comme ceci : foreach($member as $information) */</span><span class="pln">
      </span><span class="pun">?></span></pre><p>Pour effectuer des testes sur votre tableau, vous avez trois fonctions très pratiques :</p><ul class="bbc"><li><span style="font-family:arial, helvetica, sans-serif;"><strong>array_key_exists :</strong> pour vérifier si une clé existe dans l'array ;</span></li><li><span style="font-family:arial, helvetica, sans-serif;"><strong>in_array : </strong>pour vérifier si une valeur existe dans l'array ;</span></li><li><span style="font-family:arial, helvetica, sans-serif;"><strong>array_search :</strong> pour récupérer la clé d'une valeur dans l'array.</span></li></ul>

      Soulalex, Administrateur de Melinyel+ E-Mail : [email protected]+ GitHub : https://github.com/Soualex

      1 Reply Last reply
      2
      • SoulalexS
        SoulalexS
        Soulalex
        wrote on last edited by
        #3

        <p style="text-align: center;"><span style="font-size:20px;"><strong>II - Les joies du PHP</strong></span></p><p style="text-align: center;"> </p><p> </p><p><span style="font-size:18px;"><strong>T</strong></span><span style="font-size:18px;"><strong>RANSMISSION DE DONNÉES :</strong></span></p><hr/><p>Avec PHP, vous pouvez transmettre des données à d'autre page notamment avec deux éléments : l'URL et le forumulaire.<br/> <br/>Une URL peut etre constituée de la sorte : <strong>protocole://domaine/page.extension</strong> (prenons l'exemple de Melinyel : <a data-ipb="nomediaparse" href="<base_url>/index.php">http://melinyel.net/index.php</a>). Avec le PHP vous pouvez rajouter des paramètres et leur asigner une valeur comme ceci <strong>protocole://domaine/page.extension?param=valeur&param2=valeur2</strong>. Ces valeurs peuvent etre récupérées avec la <strong>variable superglobale <span style="font-family:'courier new', courier, monospace;">$_GET</span></strong> (exemple : <span style="font-family:'courier new', courier, monospace;">$_GET['param']</span> retourne "valeur").<br/> <br/>Toutefois, chacun peut modifier l'URL et envoyer de fausses données. Avec un formulaire vous avez le choix entre envoyer les données par la <strong>méthode get</strong> (par l'URL) ou par la <strong>méthode post</strong> (l'utilisateur ne voit pas les données qu'il a envoyé). Néanmoins, <u>ceci ne nous protège pas contre une attaque</u> mais il existe des moyens pour y remédier que je vous montrerez.</p><pre class="ipsCode prettyprint lang-auto linenums:0 prettyprinted" style=""><span class="tag"><form</span><span class="pln"> </span><span class="atn">action</span><span class="pun">=</span><span class="atv">"cible.php"</span><span class="pln"> </span><span class="atn">method</span><span class="pun">=</span><span class="atv">"post"</span><span class="tag">></span><span class="pln">
        </span><span class="tag"><p></span><span class="pln">
        </span><span class="tag"><input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text"</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"prenom"</span><span class="pln"> </span><span class="tag">/></span><span class="pln">
        </span><span class="tag"><input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"submit"</span><span class="pln"> </span><span class="atn">value</span><span class="pun">=</span><span class="atv">"Valider"</span><span class="pln"> </span><span class="tag">/></span><span class="pln">
        </span><span class="tag"></p></span><span class="pln">
        </span><span class="tag"></form></span></pre><p>Dans cette exemple, vous pouvez voir qu'on a method="post" : c'est ce que je vous ai expliqué tout à l'heure et action="cible.php" qui sera le fichier de réception de notre formulaire. Concrètement, lorsque que vous cliquez sur le boutton envoyer, <u>vous etes redirigé vers une autre page qui conservera les données du formulaire</u>. La balise <input /> créée un champ avec un type (text, password, subit) et un nom qui nous permettra de récupérer le contenu du champ grace à la<strong> variable superglobale $_POST</strong>.</p><p style="text-align:center;"><img alt="215760.png" src="http://uploads.siteduzero.com/files/215001_216000/215760.png"/></p><p style="text-align:center;"><em>Actions effectuées lors de l'envoi d'un formulaire.<strong><span style="font-family:serif;"><span style="font-size:13px;"> ©</span></span></strong> OpenClassrooms</em></p><p style="text-align:center;"> </p><p style="text-align:center;"> </p><p><span style="font-size:18px;"><strong>VARIABLES SUPERGLOBALES :</strong></span></p><hr/><p>Il existe différents types de variables superglobales :</p><ul class="bbc"><li><strong>$_SERVER :</strong> ce sont des valeurs renvoyées par le serveur. Elles sont nombreuses et quelques-unes d'entre elles peuvent nous être d'une grande utilité. Je vous propose de retenir au moins $_SERVER['REMOTE_ADDR']. Elle nous donne l'adresse IP du client qui a demandé à voir la page, ce qui peut être utile pour l'identifier.</li><li><strong>$_ENV :</strong> ce sont des variables d'environnement toujours données par le serveur. C'est le plus souvent sous des serveurs Linux que l'on retrouve des informations dans cette superglobale. Généralement, on ne trouvera rien de bien utile là-dedans pour notre site web.</li><li><strong>$_SESSION :</strong> on y retrouve les variables de session. Ce sont des variables qui restent stockées sur le serveur le temps de la présence d'un visiteur. Nous allons apprendre à nous en servir dans ce chapitre.</li><li><strong>$_COOKIE :</strong> contient les valeurs des cookies enregistrés sur l'ordinateur du visiteur. Cela nous permet de stocker des informations sur l'ordinateur du visiteur pendant plusieurs mois, pour se souvenir de son nom par exemple.</li><li><strong>$_GET :</strong> vous la connaissez, elle contient les données envoyées en paramètres dans l'URL.</li><li><strong>$_POST : </strong>de même, c'est une variable que vous connaissez et qui contient les informations qui viennent d'être envoyées par un formulaire.</li><li><strong>$_FILES : </strong>elle contient la liste des fichiers qui ont été envoyés via le formulaire précédent.</li></ul><p>Il y a notamment deux variables à retenir : <strong>$_SESSION et </strong><strong>$_COOKIE. </strong>Celle-ci vous serviront dans beaucoup de cas de figure.<br/>$_SESSION va stocker des données durant la session de l'utilisateur et son contenu sera détruit lorsque l'utilisateur fermera la session. Pour utiliser cette variable superglobale, vous devez amorcer la session au tout début de votre code avec :</p><pre class="ipsCode prettyprint lang-auto linenums:0 prettyprinted" style=""><span class="pun"><?</span><span class="pln">php session_start</span><span class="pun">();</span><span class="pln"> </span><span class="pun">?></span></pre><p> <br/>$_COOKIE va stocker des données cookies chez l'utilisateur. Ainsi, vous pouvez appelé cette variable superglobale pour récupérer des données sur l'utilisateur même s'il a quitté la session qui a remplit ces données. Un cookie se définit avec cette fonction :</p><pre class="ipsCode prettyprint lang-auto linenums:0 prettyprinted" style=""><span class="pun"><?</span><span class="pln">php setcookie</span><span class="pun">(</span><span class="str">'pseudo'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'M@teo21'</span><span class="pun">,</span><span class="pln"> time</span><span class="pun">()</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="lit">365</span><span class="pun"></span><span class="lit">24</span><span class="pun"></span><span class="lit">3600</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">null</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">null</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span><span class="pln"> </span><span class="pun">?></span></pre><p style="text-align:center;"><img alt="218449.png" src="http://uploads.siteduzero.com/files/218001_219000/218449.png"/></p><p style="text-align:center;"><em>Les cookies sous Mozilla Firefox. <strong><span style="font-family:serif;"><span style="font-size:13px;">© </span></span></strong><span style="font-family:arial, helvetica, sans-serif;"><span style="font-size:14px;">OpenClassrooms</span></span></em></p><p style="text-align:center;"> </p><p style="text-align:center;"> </p><p><span style="font-size:18px;"><strong>GESTION DE FICHIER :</strong></span></p><hr/><p>Tout d'abord, vous devez paramétrer votre fichier pour le rendre accessible à PHP en modifiant son <strong>CHMOD à 777</strong>. Pour ouvrir votre fichier, il vous faut utiliser la fonction <span style="font-family:'courier new', courier, monospace;"><strong>fopen() </strong></span>et vous devez le refermer avec <span style="font-family:'courier new', courier, monospace;"><strong>fclose()</strong></span>. Pour lire votre fichier, vous avez deux possibilités : lire caractère par caractère avec la fonction <strong><span style="font-family:'courier new', courier, monospace;">fgetc()</span></strong> ou lire ligne par ligne avec <strong><span style="font-family:'courier new', courier, monospace;">fgets()</span></strong>. Vous pouvez aussi écrire dans votre fichier à l'emplacement du curseur, que vous pouvez déplacer avec cette fonction <span style="font-family:'courier new', courier, monospace;"><strong>fseek()</strong></span>, grâce à cette fonction <strong><span style="font-family:'courier new', courier, monospace;">fputs()</span></strong>.</p><p> </p><p>Exemple :</p><pre class="ipsCode prettyprint prettyprinted" style=""><span class="pun"><?</span><span class="pln">php

        $mon_fichier </span><span class="pun">=</span><span class="pln"> fopen</span><span class="pun">(</span><span class="str">'mon_fichier.ext'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'r+'</span><span class="pun">);</span><span class="pln"> </span><span class="com">// On ouvre le fichier en mode lecture et écriture</span><span class="pln">

        echo fgets</span><span class="pun">(</span><span class="pln">$mon_fichier</span><span class="pun">);</span><span class="pln"> </span><span class="com">// On affiche la première ligne du fichier</span><span class="pln">
        fseek</span><span class="pun">(</span><span class="pln">$mon_fichier</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln"> </span><span class="com">// On met le curseur au début du fichier</span><span class="pln">
        fputs</span><span class="pun">(</span><span class="pln">$mon_fichier</span><span class="pun">,</span><span class="pln"> </span><span class="str">'du texte'</span><span class="pun">);</span><span class="pln">
        echo fgets</span><span class="pun">(</span><span class="pln">$mon_fichier</span><span class="pun">);</span><span class="pln"> </span><span class="com">// On verra que la ligne est modifié</span><span class="pln">

        fclose</span><span class="pun">(</span><span class="pln">$mon_fichier</span><span class="pun">);</span><span class="pln"> </span><span class="com">// On ferme le fichier</span>
        <span class="pln">
        </span><span class="pun">?></span></pre>

        Soulalex, Administrateur de Melinyel+ E-Mail : [email protected]+ GitHub : https://github.com/Soualex

        1 Reply Last reply
        2
        • SoulalexS
          SoulalexS
          Soulalex
          wrote on last edited by
          #4

          <p style="text-align: center;"><strong><span style="font-size:20px;">III - PHP et MySQL, l'union fait la force</span></strong></p><p></p><p><strong><span style="font-size:18px;">PRÉSENTATION DES BASES DE DONNÉES :</span></strong></p><hr/><p>Les bases de données vont vous permettre de stocker de nombreuses données et d'interagir avec simplement mais pour cela, il vous faut un minimum de connaissances que nous traiterons dans ce guide.</p><p style="text-align:center;"><img alt="bdd-images-basecs.gif" src="<base_url>/applications/sslimageproxy/interface/image.php?url=http://static.commentcamarche.net/www.commentcamarche.net/pictures/bdd-images-basecs.gif"/></p><p style="text-align:center;"><em>Interactions entre clients, serveur et base de données.</em></p><p></p><p>Les bases de données se divisent en tableaux (aussi appelés table) :</p><p style="text-align:center;"><a class="attach-link" href="/assets/uploads/ips/monthly_06_2014/post-5-0-05865600-1401961825.png" target="_blank"><img alt="post-5-0-05865600-1401961825_thumb.png" src="/assets/uploads/ips/monthly_06_2014/post-5-0-05865600-1401961825_thumb.png"/></a></p><p></p><p><span style="font-size:18px;"><strong>INTERACTIONS ENTRE PHP ET LES BASES DE DONNÉES :</strong></span></p><hr/><p><span style="font-size:14px;"><span style="font-family:'times new roman', times, serif;">Je vous conseille d'avoir <u>un minimum de connaissances sur le langage SQL</u> pour maîtriser les interactions mais les bases seront rappelées. Dans ce cours, nous utiliserons l’interface <strong>PDO </strong>pour accéder aux bases de données.</span></span></p><p> </p><p><span style="font-size:14px;"><span style="font-family:'times new roman', times, serif;">Tout d’abord, il nous faut établir une connexion avec le serveur MySQL (dans ce cas mais nous pouvons évidemment changer de <span style="font-size:14px;"><span style="font-family:'times new roman', times, serif;"><abbr title="Système de Gestion de Base de Données">SGDB</abbr></span></span></span></span><span style="font-size:14px;"><span style="font-family:'times new roman', times, serif;">) :</span></span></p><pre class="ipsCode prettyprint prettyprinted" style=""><span class="kwd">try</span><span class="pln">
          </span><span class="pun">{</span><span class="pln">
          $bdd </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> PDO</span><span class="pun">(</span><span class="str">'mysql:host=localhost;dbname=test'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'root'</span><span class="pun">,</span><span class="pln"> </span><span class="str">''</span><span class="pun">);</span><span class="pln"> </span><span class="com">// On ouvre une instance avec "PDO"</span><span class="pln">

                  </span><span class="com">/*
          
                  ** "host" : nom de domaine du serveur SQL,
          
                  ** "dbname" : nom de la base de données,
          
                  ** Dans les deux derniers arguments, vous devez entrer dans cette ordre votre nom d'utilisateur et votre mot de passe de votre BDD
          
                  */</span><span class="pln">
          

          </span><span class="pun">}</span><span class="pln">
          </span><span class="kwd">catch</span><span class="pun">(</span><span class="typ">Exception</span><span class="pln"> $e</span><span class="pun">)</span><span class="pln">
          </span><span class="pun">{</span><span class="pln">
          </span><span class="kwd">die</span><span class="pun">(</span><span class="str">'Erreur : '</span><span class="pun">.</span><span class="pln">$e</span><span class="pun">-></span><span class="pln">getMessage</span><span class="pun">());</span><span class="pln">
          </span><span class="pun">}</span></pre><p><span style="font-family:'times new roman', serif;"><span style="font-size:12pt;"><strong><span style="font-family:'courier new', courier, monospace;"><span style="color:rgb(255,165,0);">Note :</span></span></strong> <span style="font-size:14px;"><span style="font-family:'times new roman', times, serif;">Ici j’ai utilisé une <strong>exception </strong>qui nous permettra de<u> récupérer les erreurs et de les afficher clairement à l’écran</u>.</span></span></span></span></p><p> </p><p><span style="font-size:14px;"><span style="font-family:'times new roman', times, serif;">Maintenant que notre connexion est établie, nous pouvons exécuter des requêtes sur notre base de données. Pour cela, vous avez le choix entre deux fonctions : </span></span></p><ul><li><span style="font-size:14px;"><span style="font-family:'times new roman', times, serif;"><span style="font-family:'courier new', courier, monospace;"><strong>PDO::query </strong></span><strong>:</strong> Exécute une requête SQL, retourne un jeu de résultats en tant qu'objet PDOStatement.</span></span></li><li><span style="font-size:14px;"><span style="font-family:'times new roman', times, serif;"><span style="font-family:'courier new', courier, monospace;"><strong>PDOStatement::execute </strong></span><strong>:</strong> Exécute une requête précédemment préparée avec <span style="font-family:'courier new', courier, monospace;"><strong>PDO::prepare</strong></span> (Prépare une requête à l'exécution et retourne un objet).</span></span></li></ul><p> </p><p><span style="font-size:14px;"><span style="font-family:'times new roman', times, serif;">Ces fonctions permettent de récupérer des données maintenant, il nous faut quelques fonctions permettant d’agir sur ces données et aussi de les sécuriser pour éviter une injection SQL :</span></span></p><ul><li><span style="font-size:14px;"><span style="font-family:'times new roman', times, serif;"><span style="font-family:'courier new', courier, monospace;"><strong>PDOStatement::bindValue</strong></span><strong> :</strong> Associe une valeur à un paramètre.</span></span></li><li><span style="font-size:14px;"><span style="font-family:'times new roman', times, serif;"><span style="font-family:'courier new', courier, monospace;"><strong>PDOStatement::bindParam</strong></span><strong> :</strong> Lie un paramètre à un nom de variable spécifique.</span></span></li><li><span style="font-size:14px;"><span style="font-family:'times new roman', times, serif;"><span style="font-family:'courier new', courier, monospace;"><strong>PDOStatement::bindColumn</strong></span><strong> :</strong> Lie une colonne à une variable PHP.</span></span></li><li><span style="font-size:14px;"><span style="font-family:'times new roman', times, serif;"><span style="font-family:'courier new', courier, monospace;"><strong>PDOStatement::fetch</strong></span><strong><span style="font-family:'courier new', courier, monospace;"> </span>:</strong> Récupère la ligne suivante d'un jeu de résultats PDO.</span></span></li><li><span style="font-size:14px;"><span style="font-family:'times new roman', times, serif;"><span style="font-family:'courier new', courier, monospace;"><strong>PDOStatement::fetchAll</strong></span><strong> :</strong> Retourne un tableau contenant toutes les lignes du jeu d'enregistrements.</span></span></li><li><span style="font-size:14px;"><span style="font-family:'times new roman', times, serif;"><span style="font-family:'courier new', courier, monospace;"><strong>PDOStatement::fetchColumn</strong></span><strong> :</strong> Retourne une colonne depuis la ligne suivante d'un jeu de résultats.</span></span></li><li><span style="font-size:14px;"><span style="font-family:'times new roman', times, serif;"><span style="font-family:'courier new', courier, monospace;"><strong>PDOStatement::setFetchMode</strong></span><strong> :</strong> Définit le mode de récupération par défaut pour cette requête.</span></span></li><li><span style="font-size:14px;"><span style="font-family:'times new roman', times, serif;"><span style="font-family:'courier new', courier, monospace;"><strong>PDOStatement::rowCount</strong></span><strong> :</strong> Retourne le nombre de lignes affectées par le dernier appel à la fonction <span style="font-family:'courier new', courier, monospace;">PDOStatement::execute</span>.</span></span></li></ul><p> </p><p><span style="font-family:'times new roman', times, serif;">Maintenant, on va écrire une requête SQL mais avant quelques rappels :</span></p><ul><li><span style="font-family:'times new roman', times, serif;"><strong>Sélectionner des données :</strong> <span style="font-family:'courier new', courier, monospace;">« SELECT attribut_1, attribut_2 FROM nom_table »</span> (Pour sélectionner le tableau entier, remplacez les attributs par ).</span></li><li><span style="font-family:'times new roman', times, serif;"><strong>Créer une nouvelle ligne :</strong> <span style="font-family:'courier new', courier, monospace;">« INSERT INTO table_name(attribut_1, attribut_2) values(valeur_1, valeur_2) »</span>.</span></li><li><span style="font-family:'times new roman', times, serif;"><strong>Mise à jour d’une ligne :</strong> <span style="font-family:'courier new', courier, monospace;">« UPDATE nom_table SET attribut_1 = valeur_1, attribut_2 = valeur_2 »</span>.</span></li><li><span style="font-family:'times new roman', times, serif;"><strong>Suppression d’une ligne :</strong> <span style="font-family:'courier new', courier, monospace;">« DELETE FROM nom_table WHERE attribut = valeur »</span> <span style="font-size:14px;">(à noter que WHERE peut être utilisé avec n’importe quelle autre fonction vu précédemment)</span>.</span></li></ul><pre class="ipsCode prettyprint prettyprinted" style=""><span class="com">/ CONNEXION AU SERVEUR SQL ICI */</span><span class="pln">

          $query </span><span class="pun">=</span><span class="pln"> $bdd</span><span class="pun">-></span><span class="pln">prepare</span><span class="pun">(</span><span class="str">'SELECT attributs FROM my_db WHERE attribut = :value'</span><span class="pun">);</span><span class="pln"> </span><span class="com">// Préparation d'un requête de sélection (ici :value est un paramètre de la requête SQL qu’on va associer à une valeur ensuite)</span><span class="pln">

          $query</span><span class="pun">-></span><span class="pln">bindValue</span><span class="pun">(</span><span class="str">':value'</span><span class="pun">,</span><span class="pln"> $value</span><span class="pun">,</span><span class="pln"> \PDO</span><span class="pun">::</span><span class="pln">PARAM_STR</span><span class="pun">);</span><span class="pln"> </span><span class="com">// On associe la valeur au paramètre (ce qui évite les injections SQL)</span><span class="pln">

          $query</span><span class="pun">-></span><span class="pln">execute</span><span class="pun">();</span><span class="pln"> </span><span class="com">// On exécute la requête</span><span class="pln">

          $data </span><span class="pun">=</span><span class="pln"> $query</span><span class="pun">-></span><span class="pln">fetchAll</span><span class="pun">();</span><span class="pln"> </span><span class="com">// On associe à un tableau les résultats obtenus avec la requête</span><span class="pln">

          $query</span><span class="pun">-></span><span class="pln">closeCursor</span><span class="pun">();</span><span class="pln"> </span><span class="com">// On ferme notre requête</span><span class="ipsType_reset ipsType_medium ipsType_light" data-excludequote=""> </span>
          </pre>

          Soulalex, Administrateur de Melinyel+ E-Mail : [email protected]+ GitHub : https://github.com/Soualex

          1 Reply Last reply
          1
          • SoulalexS
            SoulalexS
            Soulalex
            wrote on last edited by
            #5

            <p>Partie 5</p>

            Soulalex, Administrateur de Melinyel+ E-Mail : [email protected]+ GitHub : https://github.com/Soualex

            1 Reply Last reply
            0
            • SoulalexS
              SoulalexS
              Soulalex
              wrote on last edited by
              #6

              <p>Partie 6</p>

              Soulalex, Administrateur de Melinyel+ E-Mail : [email protected]+ GitHub : https://github.com/Soualex

              1 Reply Last reply
              0
              • PirkoaP
                PirkoaP
                Pirkoa
                wrote on last edited by
                #7

                <p>Pas mal comme tuto <img alt=":)" src="emoticons/default_smile.png" title=":)"/></p><p>En revanche, je sais pas si c'est judicieux de parler d'objet PDOStatement directement sans trop expliquer ce que c'est <img alt=":P" src="emoticons/default_tongue.png" title=":P"/></p><p>Ca peut en predre 2-3 <img alt=";)" src="emoticons/default_wink.png" title=";)"/></p>

                Étudiant en 2ème année de DUT InformatiqueJetez un coup d’œil à mon CV !

                1 Reply Last reply
                0
                • AkimaceA
                  AkimaceA
                  Akimace
                  Modérateur spécialisé
                  wrote on last edited by
                  #8

                  <p>Merci pour ces cours et bon travail au passage 🙂 </p>

                  Me contacter : [email protected]

                  Ma chaîne Youtube : www.youtube.com/c/Akimace

                  1 Reply Last reply
                  0
                  • SoulalexS
                    SoulalexS
                    Soulalex
                    wrote on last edited by
                    #9

                    <p>Ces cours ont été publiés il y a longtemps mais je les ai mis sur un seul sujet.</p>

                    Soulalex, Administrateur de Melinyel+ E-Mail : [email protected]+ GitHub : https://github.com/Soualex

                    1 Reply Last reply
                    0
                    • vfrzV
                      vfrzV
                      vfrz
                      wrote on last edited by
                      #10

                      <p>Merci pour tout 🙂 </p>

                      1 Reply Last reply
                      0

                      Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                      Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                      With your input, this post could be even better 💗

                      Register Login
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Login or register to search.
                      Powered by NodeBB Contributors
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups