Re: Retrouver le nom des commandes supprimées
Publié : 02 févr. 2018, 18:39
Merci, je vais essayer. Oui c'est vrai que tous les jours, c'est beaucoup, mdr. Une fois par semaine sera bien.
Forum sur Jeedom
https://www.jeedom.com/forum/
Code : Tout sélectionner
<?php
// Variables de connexion à la base des données
$hostname = "localhost";
$user = "jeedom";
$password = "MOT DE PASSE MYSQL";
$database = "jeedom";
$port = 3306;
// Nom du fichier CSV exporté
$csv_filename = 'Memo_ID_commandes.csv'; //nom unique - sera écrasé à chaque lancement du script
// Nom de la table à exporter
$db_record = 'cmd p';
//jointure pour récupérer le nom de l'équipement
$inner = 'INNER JOIN eqLogic j';
$on = 'ON j.id = p.eqLogic_id';
//champs à exporter
$quoi = 'p.id id_commande, p.eqLogic_id id_equipement, j.name nom_equipement, p.eqType plugin, p.name nom_commande, p.logicalId commande';
// En option : conditionnels de la requête d'export (WHERE, ORDER BY, LIMIT, etc.)
$where = '';
//tri par plugin/nom équipement - ordre alphabétique
$order = 'ORDER BY p.eqType, j.name';
// Connexion à la base
$conn = mysqli_connect($hostname, $user, $password, $database, $port);
if (mysqli_connect_errno()) {
die("Echec de la connexion : " . mysqli_connect_error());
}
//gestion des accents
mysqli_set_charset($conn, "latin1");
// Création d'un fichier CSV vide
$csv_export = '';
// Extraction des données de la table
$query = mysqli_query($conn, "SELECT ".$quoi." FROM ".$db_record." ".$inner." ".$on." ".$where." ".$order);
$field = mysqli_field_count($conn);
// Création de la ligne des titres (noms des champs)
for($i = 0; $i < $field; $i++) {
$csv_export.= mysqli_fetch_field_direct($query, $i)->name.';';
}
// Nouvelle ligne (semble fonctionner avec Linux & Windows servers)
$csv_export.= '
';
// Boucle des tuples pour remplir le fichier
while($row = mysqli_fetch_array($query)) {
for($i = 0; $i < $field; $i++) {
$csv_export.= '"'.$row[mysqli_fetch_field_direct($query, $i)->name].'";';
}
$csv_export.= '
';
}
$fp=fopen($csv_filename,"w" ); // ouverture du fichier
fputs($fp,$csv_export); // enregistrement des données dans le fichier
fclose($fp);
?>
Code : Tout sélectionner
//url du script de sauvegarde
$url="http://IP_JEEDOM/plugins/script/core/ressources/backup_id_commandes_supprimees2.php";
// Tableau contenant les options de téléchargement
$options=array(
CURLOPT_URL => $url, // Url cible (l'url la page que vous voulez télécharger)
CURLOPT_RETURNTRANSFER => true, // Retourner le contenu téléchargé dans une chaine (au lieu de l'afficher directement)
CURLOPT_HEADER => false // Ne pas inclure l'entête de réponse du serveur dans la chaine retournée
);
// Création d'un nouvelle ressource cURL
$CURL=curl_init();
// Configuration des options de téléchargement
curl_setopt_array($CURL,$options);
// Exécution de la requête
$content=curl_exec($CURL); // Le contenu téléchargé est enregistré dans la variable $content. Libre à vous de l'afficher.
// Fermeture de la session cURL
curl_close($CURL);
+1 surtout qu'avec une rotation de sauvegarde ou même une purge manuelle d'une multitude de fichiers si tu n'as pas remarqué une commande orpheline assez vite tu risque de perdre la trace.romanais a écrit : ↑02 févr. 2018, 18:50
Par contre, perso, je préfère le faire manuellement quand je touche à mon installation, comme ça pas besoin d'aller piocher dans une sauvegarde complète de Jeedom.
Avec une sauvegarde manuelle, tu n'as que les fichiers strictement nécessaires.
Si je trouve une commande orpheline, j'aurai peu de fichiers à contrôler (et je peux tous les conserver, contrairement aux backup Jeedom qui tournent car ça prend de la place).
En sauvegardant tous les jours, quand tu trouveras une commande orpheline, bon courage pour trouver le bon fichier csv contenant toujours la commande
Code : Tout sélectionner
<?php
// Variables de connexion à la base des données
$hostname = "localhost";
$user = "jeedom";
$password = "MOT_DE_PASSE_MYSQL"; //mot de passe de connexion à la base de données
$database = "jeedom";
$port = 3306;
// Nom du fichier CSV exporté
$csv_filename = 'Mémo_ID_commandes_'.date('Y-m-d').'.csv';
// Nom de la table à exporter
$db_record = 'cmd p';
//jointure pour récupérer le nom de l'équipement
$inner = 'INNER JOIN eqLogic j';
$on = 'ON j.id = p.eqLogic_id';
//champs à exporter
$quoi = 'p.id id_commande, p.eqLogic_id id_equipement, j.name nom_equipement, p.eqType plugin, p.name nom_commande, p.logicalId commande';
// En option : conditionnels de la requête d'export (WHERE, ORDER BY, LIMIT, etc.)
$where = '';
//tri par plugin/nom équipement - ordre alphabétique
$order = 'ORDER BY p.eqType, j.name';
// Connexion à la base
$conn = mysqli_connect($hostname, $user, $password, $database, $port);
if (mysqli_connect_errno()) {
die("Echec de la connexion : " . mysqli_connect_error());
}
//gestion des accents
mysqli_set_charset($conn, "latin1");
// Création d'un fichier CSV vide
$csv_export = '';
// Extraction des données de la table
$query = mysqli_query($conn, "SELECT ".$quoi." FROM ".$db_record." ".$inner." ".$on." ".$where." ".$order);
$field = mysqli_field_count($conn);
// Création de la ligne des titres (noms des champs)
for($i = 0; $i < $field; $i++) {
$csv_export.= mysqli_fetch_field_direct($query, $i)->name.';';
}
// Nouvelle ligne (semble fonctionner avec Linux & Windows servers)
$csv_export.= '
';
// Boucle des tuples pour remplir le fichier
while($row = mysqli_fetch_array($query)) {
for($i = 0; $i < $field; $i++) {
$csv_export.= '"'.$row[mysqli_fetch_field_direct($query, $i)->name].'";';
}
$csv_export.= '
';
}
// Export des données au format CSV et appel du fichier créé pour téléchargement
header("Content-type: text/x-csv");
header("Content-Disposition: attachment; filename=".$csv_filename."");
echo($csv_export);
?>
Code : Tout sélectionner
/var/www/html/plugins/script/core/ressources/backup_id_commandes_supprimees.php
Je confirme, dans LibreOffice, avec le jeu de caractères Latin2 il subsiste quelques accents non pris en compte.
Pas d'adminer utilise plutôt un outil commeextrapitou a écrit : ↑03 févr. 2018, 09:24Excusez la question de noob mais je n'ai jamais touché a un script de ma vie
Donc apres avoir passé une heure a comprendre que le script adminer-4.5.0.php copié dans le repertoire /ressources devait être renommé en "backup_id_commandes_supprimees.php", je ne comprends pas ou je dois mettre le code
Ah ben c'est ca que j'ai pas. Aucune fenêtre ne s'ouvre j'ai surement pas fait le début correctement.romanais a écrit :
Une fenêtre s'ouvre, on colle simplement le code dedans.
On clique sur "Enregistrer".
Ça ferme la fenêtre, on clique alors sur "Sauvegarder".
Tout à fait d'accord (après, y'a pas que Loïc qui bosse sur le code Jeedom non plus ).meute a écrit : ↑02 févr. 2018, 11:46Suis sûr que même Loic va implémenter ton script ... ca charge pas jeedom et ça peut vraiment être utile ... n'est ce pas Loic ?
Ca mériterais presque une place dans les HowTo de la doc officielle, comme ça rien à maintenir niveau code et tout le monde à accès à l'information pour l’implémenter si besoin.