Créez votre propre CRUD MySQL
Voici un petit exemple basic pour envoyer ou récupérer vos données d’applications C# sur un hébergement PHP/MySQL.

Côté hébergement
Une page config.inc.php
<?php $host = 'votrehost'; $login = 'votrelogin'; $password = 'votrepassword'; $base = 'votrebase'; //connexion à la base de données $link = mysqli_connect($host, $login, $password, $base); ?>
Une page read.php. Cette page va nous permettre de récupérer un json et on pourra y passer deux paramètre pour délimiter la lecture Take et Skip
<?php
isset($_GET['id']) ? $id = trim($_GET['id']) : $id = "";
isset($_GET['Skip']) ? $Skip = trim($_GET['Skip']) : $Skip = 0;
isset($_GET['Take']) ? $Take = trim($_GET['Take']) : $Take = 20;
require_once('/www/config.inc.php');
if ($id != "") {
$id = mysqli_real_escape_string($link, $id);
$query = "SELECT * FROM matable WHERE id='$id'";
$result = mysqli_query($link, $query);
$row[] = mysqli_fetch_array($result, MYSQLI_ASSOC);
}
else {
$Skip = mysqli_real_escape_string($link, $Skip);
$Take = mysqli_real_escape_string($link, $Take);
$query = "SELECT * FROM matable LIMIT $Skip,$Take";
$sql = mysqli_query($link, $query);
while($rowset = mysqli_fetch_array($sql, MYSQLI_ASSOC)) {
$row[] = $rowset;
}
}
echo json_encode($row);
mysqli_close($link);
?>
Une page Insert.php. Si on insert un record qui existe il le mettra à jour :
<?php
isset($_GET['id']) ? $id = trim($_GET['id']) : $id = "";
isset($_GET['nom']) ? $nom = trim($_GET['nom']) : $nom = "";
isset($_GET['data1']) ? $data1 = trim($_GET['data1']) : $data1 = 0;
isset($_GET['data2']) ? $data2 = trim($_GET['data2']) : $data2 = 0;
require_once('/www/config.inc.php');
//protection
$id = mysqli_real_escape_string($link, $id);
$nom = mysqli_real_escape_string($link, $nom);
$data1 = mysqli_real_escape_string($link, $data1);
$data2 = mysqli_real_escape_string($link, $data2);
$row = 0;
if ($id != "") {
$query = "SELECT id FROM matable WHERE id='$id' LIMIT 0,1";
$result = mysqli_query($link, $query);
$row = mysqli_affected_rows($link);
}
if ($row == 0) {
if ($stmt = mysqli_prepare($link,"INSERT INTO matable (nom, id, data1, data2) VALUES(?, ?, ?, ?)")) {
mysqli_stmt_bind_param($stmt,'siss',
$nom,
$id,
$data1,
$data2);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
}
}
else {
if ($stmt = mysqli_prepare($link,"UPDATE matable SET nom=?, data1=?, data2=? WHERE id=?")) {
mysqli_stmt_bind_param($stmt,'sssi',
$nom,
$data1,
$data2,
$id);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
}
}
mysqli_close($link);
?>
Maintenant coté application
Une méthode par exemple pour récupérer une série d’item
public async Task<string> GetMaList(int Skip, int Take)
{
WebClient wc = new WebClient();
wc.Headers[HttpRequestHeader.IfModifiedSince] = DateTime.MinValue.ToString();
wc.Headers[HttpRequestHeader.CacheControl] = "no-cache";
try
{
return await wc.DownloadStringTaskAsync(
new Uri(
"http://www.monsite.com/read.php?Skip=" + Skip.ToString()
+ "&Take=" + Take.ToString()
));
}
catch
{
return "";
}
}
Pour utiliser cette méthode :
async Task LoadDatas()
{
string jsondata = await GetMaList(0,10);
var malist= JsonConvert.DeserializeObject<List<MaClasse>>(jsondata);
}
Et enfin pour insérer des données :
public async Task<string> Insert(MaClasse item)
{
WebClient wc = new WebClient();
wc.Headers[HttpRequestHeader.IfModifiedSince] = DateTime.MinValue.ToString();
wc.Headers[HttpRequestHeader.CacheControl] = "no-cache";
try
{
return await wc.DownloadStringTaskAsync(
new Uri(
"http://www.monsite.com/insert.php?" +
"nom=" + item.nom +
"&id=" + item.id +
"&data1=" + item.data1 +
"&data2=" + item.data2
));
}
catch
{
return "";
}
}
Pour l’utiliser, il suffit d’envoyer l’item MonObjet
string re = await Insert(MonObjet);
