PHP/MySQL – opérations sur la base de donnée

Créé le : 9 octobre 2016
Catégorie: Divers
Mise à jour : 9 octobre 2016

PHP/MySQL – opérations sur la base de donnée

Pense bête

  • Créer un fichier connect.php pour centraliser les infos de connexion
  • lire tout : SELECT * FROM nom_de_la_table
  • lire une seule entrée : SELECT * FROM nom_de_la_table WHERE id=$id
  • Ajouter : INSERT INTO nom_de_la_table (colonne1,colonne2,colonne3) VALUES (‘$valeur1′,’$valeur2′,’$valeur3’)
  • Modifier : UPDATE nom_de_la_table SET colonne1=’$valeur1′,colonne2=’$valeur2′,colonne3=’$valeur3′ WHERE id=$id
  • Supprimer : DELETE FROM nom_de_la_table WHERE id=$id
  • Recherche globale : SELECT * FROM nom_de_la_table WHERE (`colonne1` LIKE ‘% ».$query. »%’) OR (`colonne2` LIKE ‘% ».$query. »%’) OR (`colonne3` LIKE ‘% ».$query. »%’)
  • Recherche avancée : SELECT * FROM nom_de_la_table WHERE (`colonne1` LIKE ‘% ».$valeur1. »%’) AND (`colonne2` LIKE ‘% ».$valeur2. »%’) AND (`colonne3` LIKE ‘% ».$valeur3. »%’)

Des exemples de chaque opération est disponible juste en dessous

Création du fichier commun de connexion

Ce fichier pourra par exemple être nommé connect.php. Il sera appelé par les autres fichiers pour se connecter à la base. Cela permet de n’avoir qu’à un seul endroit les infos de connexions à la base.

<?php
		//On se connecte à la base de données

		$host = "adresse.du.serveur";
		$user = "user bdd";
		$passBD = "mot de passe bdd";
		$bdd = "nom de la bdd";

		mysql_connect($host,$user,$passBD) or die ("Impossible de se connecter à $host");
		mysql_select_db($bdd) or die ("Impossible de se connecter à $host");
		
		
?>

Lire toutes les entrées

<?php
//on appelle le fichier de connexion
include 'connect.php';

$sql2 = 'SELECT * FROM nom_de_la_table';
$req2 = mysql_query($sql2) or die('Erreur SQL !<br />'.$sql2.'<br />'.mysql_error());

//facultatif : affichage du nombre d'entrées
$num_rows = mysql_num_rows($req2);
echo "il y a : ".$num_rows." entrées.";


//debut boucle
	while ($donnee2 = mysql_fetch_array($req2)) { 

		echo $donnee2['colonne1']."</br>";
		echo $donnee2['colonne2']."</br>";
		echo $donnee2['colonne3']."</br>";

	
	}
//fin boucle
  mysql_free_result ($req2);
  mysql_close();
?>

Lire une seule entrée

<?php
//récupération de l'id de l'entrée voulu
    //si formulaire 
    //$id= (int )$_POST['id']; 
    //si variable dans le lien
    $id= (int )$_GET['id'];


//on appelle le fichier de connexion
include 'connect.php';

$sql2 = "SELECT * FROM nom_de_la_table WHERE id=$id";
$req2 = mysql_query($sql2) or die('Erreur SQL !<br />'.$sql2.'<br />'.mysql_error());
while ($donnee2 = mysql_fetch_array($req2)){

echo $donnee2['id'];
echo $donnee2['colonne1'];
echo $donnee2['colonne2'];
echo $donnee2['colonne3'];

}
// On libère la mémoire
		mysql_free_result ($req2); 
		//On ferme la connexion
		mysql_close();



?>

Ajouter une entrée

<?php
//récupération des valeurs du formulaire
$valeur1=htmlspecialchars(addslashes($_POST['valeur1']));
$valeur2=htmlspecialchars(addslashes($_POST['valeur2']));
$valeur3=htmlspecialchars(addslashes($_POST['valeur3']));

//on appelle le fichier de connexion
include 'connect.php';

// Create connection
$conn = mysqli_connect($host, $user, $passBD, $bdd);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
$sql = "INSERT INTO nom_de_la_table (colonne1,colonne2,colonne3) VALUES ('$valeur1','$valeur2','$valeur3')";



if (mysqli_query($conn, $sql)) {
    //enregistrement OK
    //mettre du code ici quand ok
    //ex: header('Location: index.php');
} else {
    //Erreur
    echo "Error updating record: " . mysqli_error($conn);
}

mysqli_close($conn);
?> 

Modifier une entrée

<?php
//récupération des valeurs du formulaire
$id=(int)$_POST['id'];
$valeur1=htmlspecialchars(addslashes($_POST['valeur1']));
$valeur2=htmlspecialchars(addslashes($_POST['valeur2']));
$valeur3=htmlspecialchars(addslashes($_POST['valeur3']));

//on appelle le fichier de connexion
include 'connect.php';

// Create connection
$conn = mysqli_connect($host, $user, $passBD, $bdd);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}


$sql = "UPDATE nom_de_la_table SET colonne1='$valeur1',colonne2='$valeur2',colonne3='$valeur3' WHERE id=$id";


if (mysqli_query($conn, $sql)) {
    echo "Record updated successfully";
	header('Location: index.php');
} else {
    echo "Error updating record: " . mysqli_error($conn);
}

mysqli_close($conn);
?> 

Supprimer une entrée

<?php 
//récupération des valeurs du formulaire
$id=(int)$_POST['id'];

//on appelle le fichier de connexion
include 'connect.php';

// Create connection
$conn = mysqli_connect($host, $user, $passBD, $bdd);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
$sql = "DELETE FROM nom_de_la_table WHERE id=$id";


if (mysqli_query($conn, $sql)) {
    header('Location: index.php');
} else {
    echo "Error updating record: " . mysqli_error($conn);
	?><p><a class="bouton" href="index.php">Retour</a></p> <?php
	}

mysqli_close($conn);
?> 

Recherche globale

Rechercher parmi n’importe quelle valeur

<?php 
//récupération des valeurs du formulaire
$query = $_POST['query']; 
//on appelle le fichier de connexion
include 'connect.php';

// taille de lerecheche minimum
    $min_length = 2;
    
     
    if(strlen($query) >= $min_length){ // if query length is more or equal minimum length then
         
        $query = htmlspecialchars($query); 
        // changes characters used in html to their equivalents, for example: < to &gt;
         
        $query = mysql_real_escape_string($query);
        // makes sure nobody uses SQL injection
         
        $raw_results = mysql_query("SELECT * FROM nom_de_la_table
            WHERE (`colonne1` LIKE '%".$query."%') 
			OR (`colonne2` LIKE '%".$query."%') 
			OR (`colonne3` LIKE '%".$query."%')
			") 
			or die(mysql_error());
             
        
		         
        // '%$query%' est votre recherche, % veut dire tout, par exemple si $query est toto
        // cela trouvera "toto", "Monsieur toto", "tititototata", si vous voulez la correspondance exacte utilisez `colonne1`='$query'
        // ou si vous voulez juste le mot complet utilisez '% $query %' ...OR ... '$query %' ... OR ... '% $query'
         
        if(mysql_num_rows($raw_results) > 0){ // if one or more rows are returned do following
             echo "<h1>R&eacute;sultat de la recherche : ".$query."</span></h1>";
            while($results = mysql_fetch_array($raw_results)){
            // $results = mysql_fetch_array($raw_results) cela met les valeurs trouvée dans une array puis fait une boucle (loop)
             
			 ?>
			 
			 <div class="liste">
			 <a href="visu.php?ref=<?php echo $results['ref'];?>">
		<div class="listligne">
		<span class="element1"><?php echo $results['colonne1'];?></span>
		<span class="element2"><?php echo $results['colonne2'];?></span>
		<span class="element3"><?php echo $results['colonne3'];?></span>
		
				
		</div></a></div><?php
			 
			 
			 
                
                
            }
             
        }
        else{ // Si il n'a a pas de correspondance
            echo "Pas de r&eacute;sultat pour : ".$query;
        }
         
    }
    else{ // cas si la recherche est trop courte
        //echo "Minimum length is ".$min_length;
		header('Location: main.php?err=1');
    }
?>

Recherche avancée

Recherche seulement parmi le champs renseigné

Prendre le code de la recherche globale et remplacer le code du mysql_query par

$raw_results = mysql_query("SELECT * FROM nom_de_la_table
            WHERE (`colonne1` LIKE '%".$valeur1."%') 
			AND (`colonne2` LIKE '%".$valeur2."%')
			AND (`colonne3` LIKE '%".$valeur3."%')
			") 
			or die(mysql_error());

Laissez un commentaire