Il s'agit d'un billet juste pour moi. ^^ UN truc qui faisait partie de ma dernière To Do List [1]. Je ne suis pas très adroit en PHP (je lutte même pour déclarer des variables), je mets ce mémo sur le blog pour pouvoir le retrouver, mais c'est tellement spécifique, que je doutte que ça intéresse un visiteur régulier (si, si vous n'êtes pas nombreux, mais google analitycs me dit que vous existez). Ça me servira dès que j'aurai besoin de refaire un truc similaire.
Il s'agit d'une passerelle entre deux bases de données... sauf que faire des requêtes sur le serveur informix (à part avec le couple MS QUERY / Tun SQL ou en java, je n'ai pas trouvé). Je fais donc un truc un peu crado: je télécharge le fichier qui contient la table.
Le script en tâche CRON:
(j'ai évidemment masqué les mots de passe, même si ça reste dans le réseau local)
#!/bin/sh # By gnieark septembre 2009 http://blog-du-grouik.tinad.fr #Se placer dans le repertoire de l'user (root) cd ~ # Télécharger la base de données wget ftp://root:THEMOTDEPASSE@IPDuServeur/u/DIS/paidis/salar1 #Exécuter le script PHP de mise à jour des bases php ~/scripts/majtablepersonnels.php #Supprimmer le fichier salar1 (il y a plein de données bien confidentielles dedans, autant qu'il ne traine pas) rm salar1
Et le script PHP qui me fait mes requêtes:
<?php //SCRIPT PHP MISE à jour de la liste du personnel et de leurs numéros à partir //du fichier de base de données salar1 de paidis. // //by Gnieark http://blog-du-grouik.tinad.fr Septembre 2009 $dbname = 'tinai'; if (!mysql_connect('localhost', 'root', 'THEMOTDEPASSE')) { echo 'Impossible de se connecter à MySQL'; exit; } mysql_query("USE tinai"); mysql_query("DELETE * FROM table_temp;"); mysql_query("LOAD DATA INFILE '~/salar1' REPLACE INTO TABLE `table_temp` FIELDS TERMINATED BY '|';"); $sql1 = "SELECT champ1, champ3, champ4, champ6, champ2, champ51, champ56 FROM table_temp"; $result1 = mysql_query($sql1); if (!$result1) { echo "Erreur DB, impossible de lister les tables\n"; echo 'Erreur MySQL : ' . mysql_error(); exit; } while ($row1 = mysql_fetch_row($result1)) { $result2 = mysql_query("SELECT COUNT(*) FROM table_utilisateurs WHERE cde_paidis='${row1[0]}'"); //echo "SELECT COUNT(*) FROM table_utilisateurs WHERE cde_paidis='${row1[0]}'"; $row2 = mysql_fetch_row($result2); if ($row2[0]>0) { mysql_query("UPDATE table_utilisateurs SET nom_usuel='${row1[1]}',nom_de_jeune_fille='${row1[2]}', prenom='${row1[3]}', cde_etat='${row1[4]}',telephone='${row1[5]}',portable='${row1[6]}' WHERE cde_paidis='${row1[0]}'"); } if ($row2[0]=0) { mysql_query("INSERT INTO table_utilisateurs(nom_usuel, nom_de_jeune_fille, prenom, cde_etat, telephone, portable) VALUES ('${row1[1]}','${row1[2]}','${row1[3]}','${row1[4]}','${row1[5]}','${row1[6]}')"); } } mysql_query("DELETE * FROM table_temp;"); ?>
Notes
[1] Enfin, il reste aussi la petite interface de consultation de la base de données à créer.

Logiciel-libre
Commentaires
Bonjour,
je te recommande, dans ta to-do list, de regarder sur le site ibm-informix. Informix Dynamic Server existe maintenant en version libre, avec des limites suffisamment hautes pour gérer des Teras de données pour des centaines d'utilisateurs...
Pourquoi s'embêter avec un moteur de bases de données rudimentaire, alors que tu peux utiliser un subtil mélange de RollsRoyce et F1, sans pour autant passer des journées homme sur l'administration. fais un tour sur cette URL:
http://www-01.ibm.com/software/data...
Cordialement
Eric