PHP et MYSQL pour les Nuls

pas de serveurs web et bases de données MySQL sans un minimum de connaissances des bases du PHP.

nous allons voir ici quelques manipulations “stratégiques” en PHP sur les bases de données. l’objectif ici n’est pas de faire un cours de PHP , mais de proposer des modules de programme “tout cuits” utilisables dans vos applications . pour une meilleure compréhension des instruction , faire une recherche type google.

pour tester les petits bouts de programmes suivants , il vous suffit de les copier/coller dans votre editeur raspberry et de les enregistrer dans le répertoire var/www/html puis de les lancer dans votre navigateur via une ligne du type :http://192.168.x.y/nomfichier.php ou 192.168.x.y est l’adresse ip locale de votre serveur RPI et nomfichier.php le nom de votre fichier enregistré dans ce repertoire

création d’ une base de donnée:

le petit bout de php ci dessous se connecte au serveur local avec le nom d’utilisateur et le mot de pass créés l’ors de l’installation de Mysql. et crée une base de donnée apellée demo .il integre des message de diagnostic . les commandes strategiques sont celles en rouge.

<?php
$link = mysqli_connect("localhost", "root", "password");
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
} 
$sql = "CREATE DATABASE demo";
if(mysqli_query($link, $sql)){
    echo "Database created successfully";
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
mysqli_close($link);
?>

création d’ une table dans une base de donnée:

ci dessous , on se connecte a la base de donnée démo créée précédemment, et on crée une table “persons” qui contient 4 données: numero d’enregistrement , nom, prénom, adresse mail. c’est 4 données ont des noms de “variables” respectif : id, first_name, last_name et email. la variable id est en auto-incrémentation (la valeur associéé s’incrémente automatiquement a chaque nouvel enregistrement. c’est en plus la clé primaire de tri (PRIMARY KEY). pour les 3 autres variables, VARCHAR(x) précise le type de variable et la place (x) reservée a la variable. NOT NULL précise que l’enregistrement ne paut pas etre vide.

<?php
$link = mysqli_connect("localhost", "root", "password", "demo"); 
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
$sql = "CREATE TABLE persons(
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    first_name VARCHAR(30) NOT NULL,
    last_name VARCHAR(30) NOT NULL,
    email VARCHAR(70) NOT NULL UNIQUE
)";
if(mysqli_query($link, $sql)){
    echo "Table created successfully.";
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
mysqli_close($link);
?>

REMARQUE: creation d’une base et de sa table sont plus facile via PhpMyAdmin. mais les 2 exemples fournis permettent eventuellement de créer des scripts dynamiques .

insertion d’un enregistrement :

<?php
$link = mysqli_connect("localhost", "root", "", "demo");
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Peter', 'Parker', 'peterparker@mail.com')";
if(mysqli_query($link, $sql)){
    echo "Records inserted successfully.";
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
mysqli_close($link);
?>

affichage du contenu de la table d’une BDD :

<?php
$link = mysqli_connect("localhost", "root", "password", "demo");
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
$sql = "SELECT * FROM persons";
if($result = mysqli_query($link, $sql)){
    if(mysqli_num_rows($result) > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = mysqli_fetch_array($result)){
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
         mysqli_free_result($result);
    } else{
        echo "No records matching your query were found.";
    }
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}

voici le résultat de l’affichage dans le navigateur dans le cas d’un exemple perso de base de donnée d’une station météo:

ENVOI DE DONNEES A PARTIR D’UN FORMULAIRE:

nous avons vu plus haut comment insérer des données avec un script PHP. nous allons voir maintenant comment insérer des données a partir d’un formulaire dans une page HTML.

1-creation du formulaire:

le fichier fourni au format txt devra etre enregistré au format html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Add Record Form</title>
</head>
<body>
<form action="insert.php" method="post">
    <p>
        <label for="firstName">First Name:</label>
        <input type="text" name="first_name" id="firstName">
    </p>
    <p>
        <label for="lastName">Last Name:</label>
        <input type="text" name="last_name" id="lastName">
    </p>
    <p>
        <label for="emailAddress">Email Address:</label>
        <input type="text" name="email" id="emailAddress">
    </p>
    <input type="submit" value="Submit">
</form>
</body>
</html>

2-récuperation des données et insertion:

quand l’ utilisateur clique sur le bouton d’envoi du formulaire , le fichier formulaire HTML envoie les données au fichier « insert.php ». Le fichier ‘insert.php’ se connecte au serveur de base de données MySQL, récupère les champs des formulaires à l’aide des variables PHP $_REQUEST et exécute la requête d’insertion pour ajouter les enregistrements.

le fichier insert.txt devra etre chargé avec l’extension.php dans le repertoire var/www/html du serveur raspberry

<?php
$link = mysqli_connect("localhost", "root", "password", "demo"); 
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
} 
$first_name = mysqli_real_escape_string($link, $_REQUEST['first_name']);
$last_name = mysqli_real_escape_string($link, $_REQUEST['last_name']);
$email = mysqli_real_escape_string($link, $_REQUEST['email']); 
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('$first_name', '$last_name', '$email')";
if(mysqli_query($link, $sql)){
    echo "Records added successfully.";
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
} 
mysqli_close($link);
?>

pour faire fonctionner l’ensemble , une fois les 2 pages dans le repertoire html , il suffit d’appeler la page html avec le navigateur via une ligne de commande du type ci dessous:

http://192.168.x.y/formulaire

voici le résultat du formulaire test de mes essais sur une base de donnée météo ( exemple plus haut):