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);