error_reporting(E_ALL);
define('JAVASCRIPT',false);
define('REP_IMAGE','./icones/');
/**
* classe Element utilisee par la classe Formulaire
*
*/
class Element{
protected $type;
protected $name;
protected $label;
protected $labelScreen;
protected $attributs;
protected $notnull;
/** Constructeur
* @param string $type balise de l'element (input, select, textarea, ...)
* @param string $name
* @param string $label chaine affiché avant le champ
* @param tab $attributs tableau associatif des attibuts
* @return none
*/
function __construct($type,$name,$label,$attributs){
$this->type=$type;
$this->name=$name;
$this->label=$label;
if($this->label==''){
$this->labelScreen='';
}else{
$this->labelScreen=$this->label.' : ';
}
$this->attributs=$attributs;
$this->attributs['notnull']=false;
}
/**
* @param string $pre code HTML a afficher avant l'element
* @param string $post code HTML a afficher apres l'element
* @return string
*/
protected function toHTMLField($pre='',$post=''){
$html='';
//traitement particulier pour l'attribut class
if(isset($this->attributs['class'])){
$this->attributs['class']=str_replace(';',' ',$this->attributs['class']);
}
switch($this->type){
case 'input':
$html.='
attributs).' >';
break;
case 'textarea':
if(isset($this->attributs['value'])){
$value=$this->attributs['value'];
unset($this->attributs['value']);
}else{
$value='';
}
$html.='';
break;
case 'select':
$list=$this->attributs['list'];
unset($this->attributs['list']);
if(isset($this->attributs['selected'])){
$selected=$this->attributs['selected'];
unset($this->attributs['selected']);
}else{
$selected=null;
}
$html.='
';
break;
case 'checkbox':
case 'radio':
$list=$this->attributs['list'];
unset($this->attributs['list']);
$disposition=$this->attributs['disposition'];
unset($this->attributs['disposition']);
if(isset($this->attributs['checked'])){
$checked=$this->attributs['checked'];
unset($this->attributs['checked']);
}else{
$checked=array();
}
//parcours de la liste
foreach($list as $key=>$value){
//selection de l'element
if(in_array($key,$checked)){
$checkedHTML=' checked="checked"';
}else{
$checkedHTML='';
}
$html.='
attributs).'>';
$html.='';
if($disposition){
$html.='';
}
}
break;
default:
exit('Error : field type "'.$this->type.'" unknown');
}
if($this->attributs['notnull']){
$html.='*';
}
return $pre.$html.$post;
}
/** renvoie l'element HTML en ligne de tableau
* @return string
*/
function toHTML(){
if(!($this->type=='input' and $this->attributs['type']=='hidden')){
$html=''.$this->toHTMLField();
}else{
$html=$this->toHTMLField();
}
$html.='';
return $html;
}
/**
* @return unknown
*/
function toHTMLTableau(){
if(!($this->type=='input' and $this->attributs['type']=='hidden')){
$html='
'.$this->labelScreen.'
'.$this->toHTMLField().'
';
}else{
$html=$this->toHTMLField();
}
return $html;
}
function __set($key,$value){
if(isset($this->attributs[$key])){
if(substr($this->attributs[$key],-1)!=';'){
$this->attributs[$key].=';';
}
$this->attributs[$key].=$value;
}else{
$this->attributs[$key]=$value;
}
}
function __isset($key){
return isset($this->attributs[$key]);
}
function __unset($key){
unset($this->attributs[$key]);
}
function getName(){
return $this->name;
}
}
class Formulaire{
private $name;
private $attributs;
private $action;
private $method;
private $elements;
private $javascript;
private $boutons;
function __construct($name){
$this->name=$name;
$this->elements=array();
$this->method='POST';
$this->action=$_SERVER['PHP_SELF'];
$this->javascript=JAVASCRIPT;
$this->boutons=true;
}
/**
* renvoie un tableau associatif sous la forme dune chaine
* @author Erwan Gallenne
* @param $tab Tableau associatif a convertir
* @since 0.9
* @return une chaine representant le tableau
*/
function tab2html($tab){
$html='';
foreach($tab as $key=>$value){
$html.=' '.$key.'="'.$value.'"';
}
return $html;
}
function javascript(){
$this->javascript=true;
}
protected function addElement($element){
if(!isset($this->elements[$element->getName()])){
$this->elements[$element->getName()]=$element;
}else{
exit('Error : name "'.$element->getName().'" used before');
}
}
public function entete(){
$html='
';
if($this->javascript){
$html.='';
}
return $html;
}
private function boutons(){
$html='
';
$html.='
';
return $html;
}
public function setAction($action){
$this->action=$action;
}
public function toHTML(){
$html=$this->entete();
foreach($this->elements as $name=>$element){
$html.=$element->toHTML();
}
if($this->boutons){
$html.=$this->boutons();
}
$html.=$this->pied();
return $html;
}
public function toHTMLTableau($attributs=array()){
$this->boutons();
$html=$this->entete();
$html.='
| '; $html.=$this->boutons(); $html.=' |
Une extension (Add to Search bar) permet d’ajouter n’importe quel champ de recherche à la barre de recherche de Firefox, très pratique pour les sites web qui ne sont pas compatibles par défaut.
La page sur le site Mozilla Adds-ons.
Lorsque vous tapez une adresse incomplète dans la barre d’adresse de Firefox, une recherche est effectuée sur un moteur de recherche (Google par défaut).
Pour modifier cette recherche, saisissez about:config dans la barre d’adresse, un message d’avertissement s’affiche, cliquez sur « continuer ».
Dans le filtre : saisissez keyword.url, double cliquez sur la ligne qui apparaît (donc la valeur de la première colonne est keyword.url) et choisissez votre nouveau moteur de recherche par défaut :
- Bing :
http://www.bing.com/search?go=&form=QBLH&filt=all&q= - Exalead :
http://www.exalead.fr/search/web/results/?q= - Yahoo :
http://fr.search.yahoo.com/search?p= - Google (pages en français, 50 résultats par page, filtre safesearch) :
http://www.google.fr/search?hl=fr&num=50&btnG=Recherche+Google&as_epq=&as_oq=&as_eq=&lr=lang_fr&cr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=&as_rights=&safe=active&as_q=
Pour utiliser XDebug avec WampServer :
- Télécharger XDebug
- Copier le fichier téléchargé dans le dossier
c:\wamp\bin\php\phpx.x.x\selon votre version de PHP - Ouvrir le fichier
php.inien utilisant le clic droit sur l’icone WampServer - A la fin du fichier, ajoutez les lignes suivantes :
zend_extension="c:/wamp/bin/php/phpx.x.x/php_xdebug-2.0.5-5.2.dll" xdebug.var_display_max_depth = 5
- Il reste à redémarrer tous les services et à vérifier que XDebug apparaît dans le phpinfo
La bibliothèque javascript jQuery vient de sortir en version 1.4.
Cette version amène son lot de nouvelles fonctions et améliorations.
Je vous présente ici les nouvelles fonction, si vous souhaitez découvrir les fonctions modifiées, c’est ici.
L’outil de gestion de bases de données phpMyAdmin permet d’avoir une vision globale de la base de données. Cette fonctionnalité n’est pas activée par défaut, il faut l’installer « à la main ».
1ère étape : créer la base de données phpmyadmin
Dans phpMyAdmin, cliquer sur l’onglet « Importer » puis sélectionner le fichier « create_tables.sql » qui se trouve dans le dossier « scripts » de phpMyAdmin ou en le prenant directement ici : create_table.sql.
2ème étape : modifier le fichier de configuration
Ouvrir le fichier « config.inc.php » et y ajouter les lignes suivantes.
Attention à bien modifier les deux dernières lignes avec votre nom d’utilisateur et votre mot de passe.
/* concepteur */ $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark'; $cfg['Servers'][$i]['relation'] = 'pma_relation'; $cfg['Servers'][$i]['table_info'] = 'pma_table_info'; $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords'; $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages'; $cfg['Servers'][$i]['column_info'] = 'pma_column_info'; $cfg['Servers'][$i]['history'] = 'pma_history'; $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords'; $cfg['Servers'][$i]['controluser'] = 'utilisateur_a_modifier'; $cfg['Servers'][$i]['controlpass'] = 'motdepasse_a_modifier';
Pensez à redémarrer votre navigateur pour que l’onglet « Concepteur » apparaisse sur la page de votre base de données, vous pouvez maintenant avoir une vision graphique de votre base de données.