jeudi 10 mai 2012

Accéder à Jboss depuis le réseau

Pour pouvoir accéder à JBoss depuis une machine autre que celle sur laquelle il est installé il faut ajouter l'option -d 0.0.0.0 à la commande run.
Exemple:
run.bat -c default -b 0.0.0.0

jeudi 29 mars 2012

Ajout d'un jar dont le repository maven n'est pas disponible ou l'adresse du repository est coupée (Jar ojdbc14.jat et IDE eclipse ici)


Un jar dont un repository maven n'est pas disponible ou temporairement inaccessible se fait de la façon suivante (exemple ojdbc14.jar):
1-  Télécharger le jar.
2-  Sous le répertoire d'emplacement du jar, exécuter la commande suivante: 
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar -Dfile=ojdbc14.jar -DgeneratePom=true
3-  ajouter la dépendance au niveau du fichier pom.xml:
               <dependency>
   <groupId>com.oracle</groupId>
   <artifactId>ojdbc14</artifactId>
   <version>10.2.0.4.0</version>
</dependency>
4-  Exécuter les commandes mvn eclipse:clean et mvn eclipse:eclipse. 

JSF: Problème de remise à zéro des inputs mappés à des valeurs numériques

Les inputs JSF mappés à des attributs de types numériques sont automatiquement remis à zéro par JSF lors de la validation, ce comportements peut s'avérer source de problèmes dans certains cas.
Ce problème est lié à Tomcat.
pour le contourner, il suffit d'ajouter la propriété org.apache.el.parser.COERCE_TO_ZERO=false
au fichier de configuration de Tomcat catalina.properties

lundi 19 décembre 2011

Oracle SQL - numéro du jour dans l'année

Requête SQL qui permet d'extraire le numéro du jour dans l'année d'une date donnée (ici date courante):

select round(to_date(to_char(sysdate,'dd-mm-rrrr')||'23:59','dd-mm-rrrr hh24:mi') - to_date('01-01-'||to_char(sysdate,'rrrr'),'dd-mm-rrrr')) as day_in_the_year from dual;

dimanche 25 septembre 2011

PHP - Affichage tableau de données avec système de pagination -

Cette fonction permet d'afficher en PHP des données provenant d'une base de données MySQL avec un système de pagination dynamique.
l’accès à la base de données est réalisée grâce à l'extension PDO, il est donc à noter qu'il faut activer l'extension sur votre serveur Apache (dé-commenter la ligne extension=php_pdo_mysql.dll dans le fichier php.ini), ou procéder aux modifications nécessaires dans l’écriture des parties du codes relatives à la connexion à la base de données et aux préparations des requêtes.


La classe de connexion:

class Connexion extends PDO {

private static $_instance;

/* Constructeur : héritage public obligatoire par héritage de PDO */
public function __construct( ) {
}
// End of Connexion::__construct() */

/* Singleton */
public static function getInstance() {
if (!isset(self::$_instance)) {
try {
self::$_instance = new PDO("mysql:host=your-hostname;dbname=your-dbname" , "your-username" ,             "your-password");
} catch (PDOException $e) {
echo $e;
die ('SQL Error');
}
return self::$_instance; 
}
// End of Connexion::getInstance() */

}

La Méthode de génération et d'affichage de la table de données avec le système de pagination:

class gui {
.
.
.
.

/**
* Méthode qui permet de dessiner à partir d une requête, le tableau de données correspondant avec un système de pagination.
* @param $query : chaine de cacaractère contenant la requête avec la partie statique de la clause where
* @param $number_of_rows_per_page : nombre de lignes à afficher par page
* @param $page_uri : uri de la page pour le rafraichissement selon le n° de page sélectionnée
* @param $paramsArray : tableu de paires clé=>caleur pour former la partie dynamique de la clause where
*/
public static function createTable($query , $number_of_rows_per_page , $page_uri , $paramsArray=null){
// Préparation de la requête selon le tableau de paramètres.
if(!empty($paramsArray)){
// la chaine ne contient pas déjà une clause where
if (!stripos($query , 'where'))
$query = $query.' where 1=1 ';
// Parcours du tableau des paramètres et construction de la requête complète
foreach($paramsArray as $paramsArray_key=>$paramsArray_value){
$query = $query.' and '.$paramsArray_key.' = :'.$paramsArray_key; 
}
}
// Préparation à la création du système de pagination
// Compter le nombre de lignes à extraire
$query = strtolower($query);
$query_array = explode("from",$query);
$query_for_number_of_rows = 'select count(*) from '.$query_array[1];
$connexion = Connexion::getInstance();

$requete = $connexion->prepare($query_for_number_of_rows);
foreach($paramsArray as $paramsArray_key=>$paramsArray_value){
$requete->bindValue(':'.$paramsArray_key,$paramsArray_value);
}
if($requete->execute()){
$donnes_number_of_rows = $requete->fetch();
$total_number_of_rows  = $donnes_number_of_rows[0];
}
// Nombre de pages
$number_of_pages = ceil($total_number_of_rows/$number_of_rows_per_page);
// On cherche dans quel page on est
if(isset($_GET['page'])) // Si la variable $_GET['page'] existe on affiche la page correspondante 
{
    $actual_page=intval($_GET['page']);
    
    if($actual_page > $number_of_pages) // Si la valeur de $actual_page (le numéro de la page) est plus grande que $numebr_of_pages on affiche la dernière page
    {
         $actual_page = $number_of_pages;
    }
}
else // Sinon
{
    $actual_page = 1; // La page actuelle est la n°1    
}
// On calcul la première entrée à lire
$first_row_in_page = ($actual_page-1)*$number_of_rows_per_page; 
// Récupération des enregistrements à afficher dans la page actuelle.
$query = $query.' LIMIT '.$first_row_in_page.' , '.$number_of_rows_per_page;
$connexion = Connexion::getInstance();

$requete = $connexion->prepare($query);
foreach($paramsArray as $paramsArray_key=>$paramsArray_value){
$requete->bindValue(':'.$paramsArray_key,$paramsArray_value);
}
if($requete->execute())
{
$donnees = $requete->fetchAll();
// Formation des clés du tableau à afficher : liste des champs sélectionnées dans la requete.
$first_row_donnees = $donnees[0];
foreach($first_row_donnees as $row_cle=>$row_valeur) 
{
if(gettype($row_cle)!='integer')
{
$tab_keys[] = $row_cle;
}
}
foreach ($donnees as $row_donnees){
foreach ($tab_keys as $tab_keys_value){
//echo $tab_keys_value.'<br/>';
$tab_values_row[$tab_keys_value] = $row_donnees[$tab_keys_value];
}
$tab_values[] = $tab_values_row;
}
// Dessinser le tableau HTML
echo '<table>';
echo '<thead>';
echo '<tr>';
foreach ($tab_keys as $tab_keys_value){
echo '<th>'.$tab_keys_value.'</th>';
}
echo '</tr>';
echo '</thead>';
echo '<tbody>';
foreach ($tab_values as $tab_values_row){
echo '<tr>';
foreach ($tab_values_row as $tab_values_row_value){
echo '<td>'.$tab_values_row_value.'</td>';
}
echo '<tr>';
}
echo '</tbody>';
echo '</table>';
// Afficher la liste des pages.
echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
for($i=1; $i<=$number_of_pages; $i++) //On fait notre boucle
{
    //On va faire notre condition
    if($i==$actual_page) //Si il s'agit de la page actuelle...
    {
        echo ' [ '.$i.' ] '; 
    }
    else //Sinon...
    {
         echo ' <a href="'.$page_uri.'?page='.$i.'">'.$i.'</a> ';
    }
}
echo '</p>';
}
}
.
.
.
}


Exemple d'appel:


gui::createTable("
select cv.cv_id , cv.cv_date_creation , cv.cv_titre , langue.lang_lib 
from    cv cv , langue langue where langue.lang_id =         cv.langue_lang_id
"
    ,
    4
    ,
    "/cv/afficher_cvs"
    ,
    array(
    'candidat_compte_cpt_id' => '2',
    'cv_langue_maternelle' => '5'
    )
    );