nom_organisme nom_organisme nom_organisme nom_organisme

Développement

Plusieurs variables sont définies dans le fichier Config/config.php.

Si vous développez vos propres outils en PHP, il est bon d'utiliser ces variables pour une meilleure portabilité du code.

Les variables les plus utiles :

  • $g_config->db_name : nom de la base données
  • $g_config->basehref : URL de votre site (ex : «http://irfu.cea.fr» ou «http://irfu.cea.fr/Sap»)
  • $g_config->url['pere'] : URL du site père (site d'Institut)
  • $g_config->basedir : répertoire racine de votre site (ex : «/PHoCEA/web/IRFU» ou «/PHoCEA/web/IRFU/Sap»)
  • $g_config->filedir['pere'] : répertoire racine du site d'Institut (ex : «/PHoCEA/web/IRFU» même si vous êtes sur le site de l'Irfu/SAp)
  • $g_config->ldapdepartmentnumber : votre unité (ex : «IRFU» ou «IRFU/Sedi»)
  • etc.

Vous pouvez accéder de la même façon à toutes les variables présentes dans Config/config.php.

Pour utiliser ces variables dans une fonction, insérer la ligne global $g_config;

Exemple :
public function toto(){
    global $g_config;
    echo $g_config->basehref;
}

Votre site est connecté en lecture à la base de données $g_config->db_name indiquée dans le fichier Config/config.php.

L'objet de connexion, $g_db2, utilise le user usernav. usernav doit donc avoir le droit SELECT sur votre base de données.

Dans les exemples suivants, on suppose qu'on travaille sur une table tbl_test composée de 3 colonnes :

  • Un id, type integer
  • Un titre, type varchar
  • Un résumé, type text

Voici comment effectuer des requêtes avec la classe Class/Cdb2.php

<?php
$sql="SELECT * FROM tbl_test";
$result=$g_db2->get_all($sql); // met resultat ds tableau $result
?>

Ce code donnera un tableau PHP :

//Ligne 1
$result[0]["id"]
$result[0]["titre"]
$result[0]["resume"]

//Ligne 2
$result[1]["id"]
$result[1]["titre"]
$result[1]["resume"]
etc.

Pour afficher le résultat :

for($i=0;$i<count($result);$i++){
    echo "<p>".$result[$i]["titre"]."</p>";
    echo "<p>".$result[$i]["resume"]."</p>";
}

Autre syntaxe possible :

while( list($i,$row)=each($result) ){
    echo "<p>".$row["titre"]."</p>";
    echo "<p>".$row["resume"]."</p>";
}

Fonctions disponibles pour faire une sélection dans une table SQL :

  • $res=$g_db2->get_all($sql); // toutes les lignes dans un tableau (cles = le nom des colonnes)
  • $res=$g_db2->get_all($sql,"num"); // toutes les lignes dans un tableau (cles = un numéro)
  • $res=$g_db2->get_row($sql); // une seule ligne dans un tableau (cles = le nom des colonnes)
  • $res=$g_db2->get_row($sql,"num"); // une seule ligne dans un tableau (cles = un numéro)
  • $res=$g_db2->get_col($sql); // une colonne dans un tableau
  • $res=$g_db2->get_assoc($sql); : un tableau associatif

// nb de lignes ds la table tbl_unit
$nb=$g_db2->nb_de_lignes('tbl_unit');

// nb de lignes ds la table tbl_unit avec une clause where
$where="acronyme LIKE '%monsite%'";
$nb=$g_db2->nb_de_lignes('tbl_unit',$where);

$sql="SELECT COUNT(*) FROM tbl_test WHERE id=1";
$res=$g_db2->get_row($sql,"num");
echo "<p>Nb de reponses = ".$res[0]."</p>";

<?php
$data=array();
$data["id"]="";
$data["titre"]="Un titre";
$data["resume"]="Le texte";
$g_db2->insert("tbl_test",$data);
?>

Attention pour que cela fonctionne, il faut donner le droit en écriture à usernav sur la table tbl_test .

<?php
$data=array();
$data["titre"]="Nouveau titre";
$data["resume"]="Le texte";
$where="id=1";
$g_db2->update("tbl_test",$data,$where);
?>

Attention pour que cela fonctionne, il faut donner le droit en écriture à usernav sur la table tbl_test .

<?php
$sql="DELETE FROM tbl_test WHERE id=1";
$g_db2->query($sql);
?>

Si la table a une colonne auto-incrément

<?php
$id=$g_db2->last_id("tbl_test");
?>

Si pas d'auto-incrément

<?php
$id=$g_db2->last_id("tbl_test","id"); // id = nom de la colonne qui sert d'id
?>

<?php
$adm = new Cdb2Admin(); // genere une fenetre log/pass et un objet de connexion a la base
$g_html->setTitle("");
$g_html->printHeader();

$data=array();
$data["id"]="";
$data["titre"]="Un titre en mode Admin";
$data["resume"]="Le texte";
$adm->insert("tbl_test",$data);

$g_html->printFooter();
?>

Dans ce cas de figure, ce n'est plus usernav qui écrit dans la table mais le login de la personne connectée.

La classe Cdb2Admin est à utiliser pour tout ce qui concerne les modérateurs.

Pour faire un script accessible aux "simples membres", utiliser Cdb2Submit. Cdb2Submit se base sur le log/pass qu'on reçoit par mail lorsqu'on s'inscrit. Elle peut aussi utiliser un annuaire LDAP pour le log/pass. Dans ce cas, préciser les paramètres dans GlobalConfig/ldapConfig.ini

CREATE TABLE `monsite`.`tbl_test` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`titre` VARCHAR( 255 ) NOT NULL ,
`resume` TEXT NOT NULL
) ENGINE = MYISAM ;
GRANT SELECT, INSERT, UPDATE, DELETE ON `monsite`.`tbl_test` TO 'usernav'@'localhost';

La commande GRANT permet de donner le droit en écriture sur la table tbl_test à usernav.

La classe Class/Cfile.php propose plusieurs méthodes pratiques.

Ces méthodes sont accessibles par l'objet $g_file

Taille d'un fichier affiché en Mo ou Go

<?php
print $g_file->get_file_size("index.php");
?>

L'extension d'un fichier (ex : jpg, doc, pdf etc.)

<?php
print $g_file->getFileExtension("index.php");
?>

Tous les fichiers d'un répertoire en balayant aussi les sous-répertoires

<?php
$contenu=$g_file->ls("c:/wamp/www/web/monsite/Phocea/documentation/modules/news");
echo "<pre>";print_r($contenu);echo "</pre>";
?>

Le contenu d'un répertoire sans le contenu des sous-répertoires et en masquant certains fichiers

<?php
$hide=array('livredor'); // cacher le repertoire livredor
$contenu=$g_file->listdir("c:/wamp/www/web/monsite/Phocea/documentation/modules",$hide);
echo '<pre>';print_r($contenu);echo '</pre>';
?>

Le contenu d'un répertoire (retourne un tableau plus évolué)

<?php
$rep="c:/wamp/www/web/monsite/Phocea/documentation/modules/";
$searchSubdirs = true; // rechercher aussi ds les sous-repertoires
$dirOnly = false ; // true pour retourner que les ss-repertoires
$contenu=$g_file->filelist($rep,$searchSubdirs,$dirOnly);
echo "<pre>";print_r($contenu);echo "</pre>";
?>

Plein d'infos sur un fichier

<?php
$file="c:/wamp/www/web/monsite/Phocea/Images/agenda.gif";
$infos=$g_file->mypathinfo($file);
echo "<pre>";print_r($infos);echo "</pre>";
?>

La classe Class/Cdate.php propose plusieurs méthodes pratiques.

Ces méthodes sont accessibles par l'objet $g_date

inverser une date

<?php
print $g_date->dateInv("2011/07/12"); // retourne 12/07/2011
print $g_date->dateInv("12/07/2011"); // retourne 2011/07/12
print $g_date->dateInv("12-07-2011"); // retourne 2011-07-12
?>

Ecrire une date en français

<?php
$argdate="2011-07-09 08:10:30";
print $g_date->dateEnFcais($argdate,1);//1=option, valeurs possibles de 1 a 12
?>

Exemples d'affichage avec les différentes options

1 : Samedi 09 juillet 2011
2 : Samedi 09 juillet 2011 08:10
3 : Samedi 09 juillet 2011
4 : Samedi 09/07
5 : Samedi 09 juillet 08h10
6 : 09 juil 2011
7 : Sam 09 juil 11
8 : Sam 09 juil 11 08h10
9 : 09 juillet 2011
10 : 09/07/2011
11 : Samedi 09 juillet
12 : Samedi 9 juillet

Mise à jour : 24/06/2019

Retour en haut