Merci pour vos réponses.
et voici ce que j'ai opté de faire pour tester que mon soft est
installé ou non :
Comme, pour effectuer un test d'une table de sa base, il faut que le
fichier database.php soit correctement renseigné (pour effectuer toute
requête SQL...)
J'ai décidé de tester que ce dernier contenait des infos valides en
faisant un test de connexion.
en détail cela donne :
1) au début on installe le soft en copiant le contenu du rep app
2) dans bootstrap.php j'ai mis
define('PUNCAKE_INSTALLED',false);
3) dans ces condition un accès à http://localhost/
envoie à http://localhost/install/index
comme le montre route.php
#1) check if the database is correctly defined
config('database');
if (class_exists('DATABASE_CONFIG')) {
$this->config =& new DATABASE_CONFIG();
if (
$this->config->default['driver'] == '' and
$this->config->default['host'] == '' and
$this->config->default['database'] == '' and
$this->config->default['login'] == '' and
$this->config->default['password'] == ''
)
die('You need to setup the database configuration in the config/
database.php file edit the file and fil the parameter that fit your
needs');
}
#2) check if puncake is installed
#
#if yes : access it
if (PUNCAKE_INSTALLED === true) {
$Setting = ClassRegistry::init('Setting', 'Model');
$Setting->export();
Router::connect('/',array('plugin'=>pt_default_module ,'controller'
=> pt_default_module , 'action' => 'index'));
Router::connect('/pages/*', array('controller' => 'pages', 'action'
=> 'display'));
Router::connect('/tests', array('controller' => 'tests', 'action' =>
'index'));
}
#if not, so go on to install it ;)
else
Router::connect('/',array('controller' => 'install' , 'action' =>
'index'));
à la fin de l'installation j'invite l'utilisateur à changer la valeur
de la constante PUNCAKE_INSTALLED à true dans le bootstrap.php
et si par mégarde celui ci ne le faisait pas et tentait un accès à
http://localhost/
il retournerait dans la procédure d'installation qui ; au moment de la
création des tables échourait puisque déjà fait précédement.
c'est ce que j'ai trouvé de plus simple à mettre en place.
Cordialement.
On 29 jan, 20:15, florent <[EMAIL PROTECTED]> wrote:
> Salut,
>
> tu peux essayer de passer la requête suivante en MySql:
>
> show table status where name='nom_de_la_table';
>
> Si la table 'nom_de_la_table' existe, la requête renvoie 1 élément et
> 0 sinon.
> En espérant t'avoir aidé
>
> On 20 jan, 14:48, foxmask <[EMAIL PROTECTED]> wrote:
>
> > Je vais la refaire ;)
>
> > Je voudrai vérifier que ma table setting n'existe pas déjà qd on
> > faithttp://localhost/install
> > Donc si setting est trouvée je renverrai vershttp://localhost/
>
> > Evidement pour tester l'existence on est bien obligé d'utiliser le
> > contenu de database.php pour se connecter à la base
> > là encore je teste (déjà) que le contenu est viable.
> > Par contre de mon coté j'ai qd meme fait un model.
>
> > Dans ton cas, si database.php est présent mais que son contenu n'est
> > pas bon que ce passe-t-il ?
>
> > Cordialement.
>
> > On 19 jan, 14:07, esion <[EMAIL PROTECTED]> wrote:
>
> > > Hello,
>
> > > J'essaie de comprendre,
> > > Tu veux tester l'ensemble de ton installation? c'est à dire si ta base
> > > de données est pleinement fonctionnelle? ou alors est-ce par rapport à
> > > une table en particulier pour un composant (ou plugin) de ton
> > > application?
>
> > > Pour ma part j'ai réalisé un installer, la première chose est de
> > > vérifier si le fichier database.php est présent et opérationnel :
> > > dans config/routes.php :
> > > <?php
> > > ...
> > > //connect home or install if database.php not present
> > > if(file_exists(CONFIGS.'database.php')){
> > > Router::connect('/', array('controller' => 'pages', 'action' =>
> > > 'index'));}else{
>
> > > //app is not installed
> > > Router::connect('/', array('controller' => 'install', 'action' =>
> > > 'index'));}
>
> > > ...
> > > ?>
>
> > > Le controller qui permet l'install n'utilise aucun model pour
> > > fonctionner :
>
> > > <?php
> > > //file : controllers/install_controller.php
>
> > > class InstallController extends AppController {
>
> > > //in order to use installer based on database.php : no Acl component
> > > and no models in app_controller.php
> > > var $uses = array();
>
> > > function index(){
> > > //ecrire le fichier de connexion : database.php
> > > //puis tester la connexion
> > > uses('model' . DS . 'connection_manager');
> > > $db = ConnectionManager::getInstance();
> > > $connected = $db->getDataSource('default');
> > > if($connected->isConnected()) {
> > > //la base de données est correctement connectée
> > > }
> > > }}
>
> > > ?>
>
> > > On 18 jan, 20:40, foxmask <[EMAIL PROTECTED]> wrote:
>
> > > > Bonsoir,
> > > > Afin de tester si mon soft est installé, je voudrai tester que ma
> > > > table de configuration existe.
> > > > Si oui je la lis
> > > > Si non j'affiche un message qui suggere à l'utilisateur d'installer
> > > > ledit soft.
>
> > > > Comment faire sans passer par une requête spécifique à tel ou tel
> > > > SGBDR ?
>
> > > > J'ai farfouillé coté méthod schema (qui appelle describe) mais c'est
> > > > un peu flou pour moi.
>
> > > > Merci de votre aide.
> > > > Cordialement
--~--~---------~--~----~------------~-------~--~----~
Groupe "Cakephp-fr".
Adresse : [email protected]
Pour résilier : [EMAIL PROTECTED]
Pour les options : http://groups.google.com/group/cakephp-fr?hl=fr
-~----------~----~----~----~------~----~------~--~---