I. Introduction

Apprenez à utiliser le langage PHP pour développer des sites Web dynamiques grâce, notamment, à l'interaction facile de ce langage avec les bases de données.
Ce langage est idéal pour créer des blogs ou des forums de discussion.
Avec la méthode "Développement Facile", vous allez pouvoir créer des sites Web dynamiques avec du contenu évolutif et une maintenance facilitée.
Retrouvez un extrait de la formation "PHP Facile", composée de plus de 30 cours professionnels pour vous aider à progresser rapidement avec la maîtrise du langage PHP.

II. Les bases de données MySQL n'auront plus de secret pour vous en PHP

Dans cette première vidéo, découvrez une introduction au bases de données MySQL en PHP.
Apprenez à vous connecter et vous déconnecter de votre base de données.


Ci-dessous, l'exemple de code

 
Sélectionnez

<?php 
/**

  The Initial Developer of the Original Code is
  Matthieu  - http://www.programmation-facile.com/
  Portions created by the Initial Developer are Copyright (C) 2013
  the Initial Developer. All Rights Reserved.

  Contributor(s) :

 */

// connexion à une base de données MySQL

// initialisation du tableau de connexion à MySQL
$aConnect 	= array();

$aConnect['ip']	= "localhost"; // le serveur
$aConnect['login']	= "root"; // le login
$aConnect['password']	= "mot_de_passe"; // mot de passe
$aConnect['database']	= "nom_de_la_base"; // nom de la base de donnee
$aConnect['port'] = "3306"; // 

$oConnect = mysqli_connect($aConnect['ip'], $aConnect['login'], $aConnect['password'], $aConnect['database'], $aConnect['port'] ); 

if ($oConnect)
{ 
	echo "Connexion réussie : version du serveur = ".$oConnect->server_info."<br />"; 

	// Déconnexion. 
	$bClose = mysqli_close($oConnect); 
	echo "Déconnexion : bClose = ".$bClose."<br />"; 

}
else 
{ 
	echo "Erreur lors de la connexion.<br />"; 
} 

?>	

III. Comment lire des données MySQL depuis PHP

Apprenez grâce à cette vidéo, à lire les données présentes dans votre base MySQL depuis votre code PHP.
Après vous être connecté, vous voudrez sûrement récupérer les données de votre base pour les afficher.


Ci-dessous, l'exemple de code

 
Sélectionnez

<?php 
/**

  The Initial Developer of the Original Code is
  Matthieu  - http://www.programmation-facile.com/
  Portions created by the Initial Developer are Copyright (C) 2013
  the Initial Developer. All Rights Reserved.

  Contributor(s) :

 */

// connexion à une base de données MySQL

// initialisation du tableau de connexion à MySQL
$aConnect 	= array();

$aConnect['ip']	= "localhost"; // le serveur
$aConnect['login']	= "root"; // le login
$aConnect['password']	= "mot_de_passe"; // mot de passe
$aConnect['database']	= "nom_de_la_base"; // nom de la base de donnee
$aConnect['port'] = "3306"; // 

$oConnect = mysqli_connect($aConnect['ip'], $aConnect['login'], $aConnect['password'], $aConnect['database'], $aConnect['port'] ); 

if ($oConnect)
{ 
	echo "Connexion réussie : version du serveur = ".$oConnect->server_info."<br />"; 

	// Déconnexion. 
	$bClose = mysqli_close($oConnect); 
	echo "Déconnexion : bClose = ".$bClose."<br />"; 

}
else 
{ 
	echo "Erreur lors de la connexion.<br />"; 
	exit();
} 


$s_sqlSelect = "SELECT nom, prenom FROM PERSONNE WHERE age = 26";
$oResult = @mysqli_query($oLinkSql,$s_sqlSelect);

// si la requête a réussie ?
if ($oResult)
{ 
	echo "Requête exécutée.<br />"; 

	// parcours de tous les résultats
	while ( $oSqlObject = mysqli_fetch_object($oResult) )
	{
		$sName = $oSqlObject->nom;
		$sPrénom = $oSqlObject->prenom;
		echo "Nom de la personne âgée de 26 ans : ".$sName."<br />"; 
	}

}
else 
{ 
	echo "Echec de l'exécution de la requête.<br />"; 
} 


// Déconnexion. 
$bClose = mysqli_close($oLinkSql); 

echo "Déconnexion : bClose = ".$bClose."<br />"; 



?>

IV. Comment mettre à jour les données MySQL avec PHP

Dans cette vidéo, apprenez la mise à jour des données de votre base MySQL en PHP.


Ci-dessous, l'exemple de code

 
Sélectionnez

<?php 
/**

  The Initial Developer of the Original Code is
  Matthieu  - http://www.programmation-facile.com/
  Portions created by the Initial Developer are Copyright (C) 2013
  the Initial Developer. All Rights Reserved.

  Contributor(s) :

 */


// connexion à une base de données MySQL

// initialisation du tableau de connexion à MySQL
$aConnect 	= array();

$aConnect['ip']	= "localhost"; // le serveur
$aConnect['login']	= "root"; // le login
$aConnect['password']	= "mot_de_passe"; // mot de passe
$aConnect['database']	= "nom_de_la_base"; // nom de la base de donnee
$aConnect['port'] = "3306"; // 

$oConnect = mysqli_connect($aConnect['ip'], $aConnect['login'], $aConnect['password'], $aConnect['database'], $aConnect['port'] ); 

if ($oConnect)
{ 
	echo "Connexion réussie : version du serveur = ".$oConnect->server_info."<br />"; 

	// Déconnexion. 
	$bClose = mysqli_close($oConnect); 
	echo "Déconnexion : bClose = ".$bClose."<br />"; 

}
else 
{ 
	echo "Erreur lors de la connexion.<br />"; 
	exit();
} 

$s_sqlDelelte = "DELETE FROM PERSONNE WHERE age = 26";
$oResult = @mysqli_query($oLinkSql,$s_sqlDelelte);

// si la requête a réussie ?
if ($oResult)
{ 
	echo "Suppression de toutes les personnes âgées de 26 ans effectuée.<br />"; 
}
else 
{ // récupération et affichage du message d'erreur
	echo "Echec de l'exécution de la requête. Query : ".$s_sqlDelelte." - error : ".mysqli_error($oLinkSql)."<br/>"; 
} 


// Déconnexion. 
$bClose = mysqli_close($oLinkSql); 

echo "Déconnexion : bClose = ".$bClose."<br />"; 



?>

V. Comment utiliser la puissance des sessions avec PHP

Découvrez dans cette vidéo, comment gérer les sessions en PHP.
Gérez de façon unique les visiteurs de votre site grâce aux sessions.


Ci-dessous, l'exemple de code.

 
Sélectionnez

<?php 
/**

  The Initial Developer of the Original Code is
  Matthieu  - http://www.programmation-facile.com/
  Portions created by the Initial Developer are Copyright (C) 2013
  the Initial Developer. All Rights Reserved.

  Contributor(s) :

 */


// création d'un idenfiant unique
echo uniqid()."<br />"; 

echo uniqid()."<br /><br />"; 

echo uniqid("abc")."<br /><br />"; 

echo uniqid("",TRUE)."<br />"; 

// ajout d'un chiffrement supplémentaire
echo md5( uniqid() )."<br /><br />"; 
echo md5( uniqid() )."<br />"; 


?>	

VI. Une classe MySQL pour gagner énormément de temps avec PHP

Vous avez déjà vu les concepts de la programmation orientée objet en PHP.
Appliquez ce concept avec les bases de données MySQL en PHP.
Gagnez du temps et rendez votre code beaucoup plus robuste.


Ci-dessous, l'exemple de code.

 
Sélectionnez

<?php

/**

  The Initial Developer of the Original Code is
  Matthieu  - http://www.programmation-facile.com/
  Portions created by the Initial Developer are Copyright (C) 2013
  the Initial Developer. All Rights Reserved.

  Contributor(s) :

 */
 
/**
 * @file Mysql.php
 * 
 * @author Matthieu
 * 
 * @version 0.1

 
@usage

$oSqlConnection = new Mysql();
$s_sqlSelect = "SELECT nbvisiteur FROM compteur_visite WHERE ip = '192.168.0.23'";
$o_sqlResult = $oSqlConnection->query($s_sqlSelect);
while ( $o_result = $oSqlConnection->getObject($o_sqlResult) )
{
	// caractéristiques des messages
	$n_nbVisiteur = $o_result->nbvisiteur;
}




Documentation :
http://dev.mysql.com/doc/refman/5.0/fr/sql-syntax.html

Installation d'un environnement PHP, MySQL sous Windows (pour vos tests)
WampServer :  http://www.wampserver.com/
EasyPHP :  http://www.easyphp.org/


exemple de requêtes MySQL
 
SELECT *
FROM wordpress_useronline
WHERE username = 'Matthieu'



SELECT ID, user_login
FROM wordpress_users
WHERE user_login = 'Matthieu' AND ID = 2


SELECT posts.post_author, users.user_login, posts.post_date, posts.post_content, posts.post_title, posts.post_name
FROM `wordpress_posts` posts
INNER JOIN  wordpress_users users ON users.ID = posts.post_author 
AND  users.user_login = 'Matthieu' 

*/
class Mysql 
{
	
	private $oLinkSql;// la connexion mysql en cours
	private $oResult;// le résultat de la requête exécutée

	private $aConnect;// la configuration de la base de données
	 
	// ---------------------------------- __construct() ----------------------------------------------------------
   /**
	* @brief 
	* @param -
	*/
	public function __construct()
	{
		// initialisation des propriétés de la classe
		$this->aConnect 	= array();
		
		/* delfiweb */
		$this->aConnect['ip']	= "localhost"; // le serveur
		$this->aConnect['login']	= "root"; // le login
		$this->aConnect['password']	= "mot_de_passe"; // mot de passe
		$this->aConnect['database']	= "nom_de_la_base"; // nom de la base de données
		$this->aConnect['port'] = "3306"; // 
		
		/* local
		$ip 			= "localhost";
		$login			= "root"; // le login
		$password		= ""; // mot de passe
		 */
		
		// adresse id  $_SERVER["REMOTE_ADDR"]; 
		
		if ( $this->oLinkSql = @mysqli_connect( $this->aConnect['ip'], $this->aConnect['login'], $this->aConnect['password'], $this->aConnect['database'], $this->aConnect['port'] ) )
		{
			$is_erreur = false ;
			$sql = 'SET CHARACTER SET \'utf8\''; 
			$this->query($sql); 
			$sql = 'SET collation_connection = \'utf8_general_ci\''; 
			$this->query($sql);
		}
		else // erreur de connexion à la base -> redirection sur une page d'erreur
		{
			echo "<meta http-equiv=\"refresh\" content=\"0; URL=erreurs/erreurBDD.htm\">";// possibilité d'utiliser un  header('Location: erreurs/erreurBDD.htm');   
			exit;
		}
		
	 }
	
	// -----------------------------------------------------------------------------------------------------------
	// ------------------------------------------- PUBLIC FUNCTIONS  ---------------------------------------------
	// -----------------------------------------------------------------------------------------------------------
	


	/**
	 * Permet de récupérer les paramètres de connexion de la base.
	 * Utile pour d'autres scripts PHP.
	 *
	 * @return : un tableau avec les paramètres de connexion de la base
	 */
	public function getConfig()
	{
		return $this->aConnect;
	} 
	
	/**
	 * Exécute une requête mysql
	 *
	 * @param requête
	 * @return : un message d'erreur ou l'objet avec le résultat de la requête
	 */
	public  function query($sSqlQuery)
	{ 
		if ( $this->oResult = @mysqli_query($this->oLinkSql,$sSqlQuery) ) return $this->oResult;
		else return 'Query : '.$sSqlQuery.' - error : '.@mysqli_error($this->oLinkSql);
	}	
	 
	/*
	 * Donne le résultat de la requête sous forme d'objet
	 *
	 * @param $oResultQuery : le résultat renvoyé par une requête pour obtenir un objet
	 */
	public function getObject($oResultQuery = NULL)
	{
		// dans le résultat d'une autre requête
		if($oResultQuery!=NULL)
		{
			return @mysqli_fetch_object($oResultQuery);
			//if ( @mysqli_error($this->oLinkSql) ) return @mysqli_error($this->oLinkSql);
		}
		
		// donne le résultat de la dernière requête exécutée
		if ($this->oResult != NULL)
		{
			return mysqli_fetch_object($this->oResult);
			//if ( @mysqli_error($this->oLinkSql) ) return @mysqli_error($this->oLinkSql);
		}	
	}

	// ---------------------------------- getNumRows() ----------------------------------------------------------
	/**
	* @brief donne le nombre d'éléments modifiés par la requête
	* Pratique dans le cas des INSERT
	* 
	* @return (integer) le nombre d'éléments modifiés par la requête
	*/
	public function getNumRows()
	{
		if( $this->oLinkSql != NULL && $this->oLinkSql != false)
		{
			return @mysqli_affected_rows($this->oLinkSql);
			//if (@mysqli_error($this->oLinkSql)) return @mysqli_error($this->oLinkSql);
		}
	}
	
	// ---------------------------------- lastInsertId() ----------------------------------------------------------
	/**
	* @brief Retourne l'identifiant automatiquement généré par la dernière requête.
	* Pratique dans le cas d'un INSERT ou UPDATE pour récuperer le dernier identifiant
	* 
	* @return (integer) le dernier identifiant inséré 
	*/
	public function lastInsertId()
	{
		return @mysqli_insert_id($this->oLinkSql);
	}
	
	// -----------------------------------------------------------------------------------------------------------
	// ----------------------------------------- Others ----------------------------------------------------------
	// -----------------------------------------------------------------------------------------------------------


 	/**
	* @brief
	*
	* @return 
	*/
	public function __destruct() 
	{
 		$this->oLinkSql = NULL ;		
		$b_rep = @mysqli_close($this->oLinkSql);
		if( $b_rep != true )
			return 'Erreur closing sql connexion!';
 	}
	
	// ---------------------------------------- __toString() ----------------------------------------------------	
	/**
	 * @brief Returns the string representation of this instance.
	 * 
	 * @usage   echo(myObject) ou print(myObject)
	 * @return  the string representation of this instance.
	 */	
	public function __toString() 
	{
		$s_classContent = "[Object ".__CLASS__."]<br />";

		foreach($this as $prop => $value) 
		{
		 	$s_classContent .= "$prop => $value <br />";
		}
		 
		return $s_classContent;
   	}
	 
}
?>

VII. Comment utiliser les formulaires avec PHP

Dans cette vidéo, découvrez une introduction au formulaire en PHP.


Ci-dessous, l'exemple de code

 
Sélectionnez

<?php 
/**

  The Initial Developer of the Original Code is
  Matthieu  - http://www.programmation-facile.com/
  Portions created by the Initial Developer are Copyright (C) 2013
  the Initial Developer. All Rights Reserved.

  Contributor(s) :

 */

// exemple d'un formulaire

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
  <head> 
    <title>Vos informations</title> 
  </head> 
  <body> 
    <form action="form_action.php" method="post"> 
    <div> 
      Nom : 
      <input type="text" name="nom" value="" 
           size="20" maxlength="20" />

      Mot de passe : 
      <input type="password" name="mot_de_passe" value="" 
           size="20" maxlength="20" /> 

      <br />Sexe : 
      <input type="radio" name="sexe" value="M" />Masculin 
      <input type="radio" name="sexe" value="F" />Feminin 

      <br />Photo : 
      <input type="file" name="photo" value="" size="50" /> 

      <br />Couleurs preferees : 
      <input type="checkbox" name="couleurs[bleu]" />Bleu 
      <input type="checkbox" name="couleurs[blanc]" />Blanc 
      <input type="checkbox" name="couleurs[rouge]" />Rouge 

      <br />Langue : 
      <select name="langue"> 
        <option value="E">Espagnol</option> 
        <option value="F" selected="selected" >Francais</option> 
        <option value="I">Italien</option> 
      </select> 

      <br />Langages de programmation préférés :<br /> 
      <select name="fruits[]" multiple="multiple" size="8"> 
        <option value="AS">ActionScript</option> 
        <option value="J">JavaScript</option> 
        <option value="C">C</option> 
        <option value="asm">Assembleur</option> 


      </select> 
      <br />Des suggestions :<br /> 
      <textarea name="commentaire" rows="4" cols="50"></textarea> 
      <br /> 
      
      <input type="hidden" name="invisible" value="693228" /><br /> 

      <input type="submit" name="soumettre" value="Valider vos reponses" /> 
      <input type="image" name="valider" src="valider.gif" /> 

      <input type="reset" name="effacer" value="Effacer" /> 
    </div> 
    </form> 
  </body> 
</html>	

VIII. Recevez gratuitement la formation "PHP Facile"

Si vous souhaitez aller plus loin dans la création de sites Web dynamique,
vous pouvez recevoir gratuitement la formation "PHP Facile" avec des cours pas à pas, accompagnés des codes source commentés.
Ainsi, vous progressez à votre rythme, avec un suivi personnalisé et individuel. Vous avez la possibilité de poser toutes vos questions techniques sous chaque cours.
Vous allez ainsi découvrir comment utiliser le langage PHP et les bases de données MySQL.

Formation PHP Facile !
Cliquez simplement ici pour recevoir gratuitement la formation "PHP Facile" !Cliquez simplement ici pour recevoir gratuitement la formation PHP Facile !

IX. Remerciements

Merci beaucoup à l'équipe de rédaction de Developpez.com de contribuer à la diffusion de ce tutoriel.
J'adresse également un merci tout particulier à Jacques Jeanjacques_jean pour sa relecture orthographique.