Comment déboguer du code PHP : La solution !


Comment déboguer du code PHP avec FirePHP, extension de FireBug, plugin indispensable aux développeurs.

Développement Game Credits sur Game-Credits.org

Je viens de terminer un site sur les acteurs des jeux vidéo : Game Credits, réalisé pour la société Connection Events, qui organise la Game Connection dans le monde entier ainsi que la Paris GDC, conférence sur les jeux vidéo entre professionnel.

Game Credits est donc pour les PRO du jeux vidéo, une sorte de IMDB des jeux avec les personnes ayant travaillé sur les jeux vidéos, les sociétés éditrices, productrices ou développeurs.
Le site a été développé en PHP/MySQL avec le CMS Smarty. Pourquoi ? Tout simplement parce qu’un développeur de Connection Events avait déjà réalisé la structure du site avec. J’ai repris l’existant en adaptant la structure pour respecter le cahier des charges.

Game Credits propose les crédits d’un jeu :

Les informations d’une société

Les informations limitées d’un utilisateur (employé) :

Fonction PHP retournant une Liste déroulante / Multi-Select

Suite à un billet d’un collègue développeur (Jarodxxx), et d’un commentaire souhaitant obtenir un return, je vous propose quelques fonctions très utiles que j’utilise.

1 - Fonction qui retourne une liste déroulante (SELECT, ComboBox) :

  1. /*fonction qui fabrique une combobox
  2. parametres :
  3. $tabs => $tableau qui contient les données a mettre dans la combo
  4. $value => champ utiliser comme value
  5. $text => champ a utiliser comme text
  6. $comboname => nom a donner a la combo
  7. $inserblank => boolean qui dit si on doit inserer une ligne blanche au debut de la combo
  8. $selectedValue => valeur a selectionner dans la combo
  9. $onChangeEvent => fonction javascript a appeler sur l’event ‘onChange’
  10. $disabled => desactiver ou non la liste*/
  11.  
  12. function makeComboBox($tabs, $value, $text, $comboname, $insertblank=false, $selectedValue=false, $onChangeEvent=, $disabled=false)
  13. {
  14.                   /*par defaut, combo "vide" */
  15.                     $return = ‘<select name="’.$comboname.‘" id="’.$comboname.‘" disabled="disabled"><option value="">Empty list</option></select>’;
  16.                     if (count($tabs[0]) > 0)
  17.                     {
  18.                               $return = ‘<select name="’.$comboname.‘" id="’.$comboname.‘"’;
  19.                               if ($onChangeEvent != )
  20.                                         $return .= ‘ onChange="’.$onChangeEvent.‘"’;
  21.                               if ($disabled)
  22.                                         $return .= ‘ disabled="disabled"’;
  23.                               $return .= ‘>’;
  24.  
  25.                               if ($insertblank)
  26.                                         $return .= ‘<option value=""></option>’;
  27.  
  28.                               foreach($tabs as $tab){
  29.                               //for ($i=0; $i<count($tab); $i++){
  30.  
  31.                                         $return .= ‘<option value="’.$tab[$value].‘"’;
  32.                                         if ($selectedValue!=false)
  33.                                                   if ($tab[$value] == $selectedValue)
  34.                                                             $return .= ‘ selected="selected"’;
  35.                                         $return .= ‘>’.$tab[$text].‘</option>’."\n";
  36.                               }
  37.                               $return .= ‘</select>’;
  38.                     }
  39.                     return $return;
  40. }
  41.  

2 - Fonction qui retourne un Multi Select : Liste déroulante avec plusieurs choix possibles:

  1. /*Gestion des combos a selection multiples
  2. parametres :
  3. $tab => $tableau qui contient les données a mettre dans la combo
  4. $value => champ utiliser comme value
  5. $text => champ a utiliser comme text
  6. $comboname => nom a donner a la combo
  7. $inserblank => boolean qui dit si on doit inserer une ligne blanche au debut de la combo
  8. $selectedValue => valeur a selectionner dans la combo
  9. $onChangeEvent => fonction javascript a appeler sur l’event ‘onChange’
  10. $disabled => desactiver ou non la liste
  11. $size => Nombre d’élément de la liste que l’on affiche
  12. */
  13. function makeMultipleComboBox($tab, $value, $text, $comboname, $insertblank=false, $selectedValue, $onChangeEvent=, $disabled=false, $size=5)
  14. {
  15. /*on recupere une combo normale, sans rien selectionner*/
  16. $return = $this->makeComboBox($tab, $value, $text, $comboname, $insertblank, -1, $onChangeEvent, $disabled);
  17. /*On change le type de combo*/
  18. $return = str_replace(‘<select ‘, ‘<select multiple size="’.$size.‘" ‘, $return);
  19. /*on parse le code html pour rajouter les selections la ou il faut*/
  20. if (!empty($selectedValue))
  21. {
  22. //print_r($selectedValue);exit;
  23. //$tSelectedValue = split(’,', $selectedValue);
  24. foreach ($selectedValue as $cur)
  25. {
  26. $return = str_replace(‘<option value="’.$cur.‘">’, ‘<option value="’.$cur.‘" selected="selected">’, $return);
  27. }
  28. }
  29. return $return;
  30. }
  31.  

2 fonctions très utiles donc qui génèrent le code HTML.

(PHP) Mettre des majuscules aux premières lettres

Je commence à vous montrer quelques scripts et astuces pour améliorer vos codes (PHP).
Une petite astuce toute simple pour mettre des majuscules à tous vos mots d’une chaîne de caractères. La fonction ucwords(); de php le permet , exemple :

$chaine = ‘alexandre val developpeur web’;
echo ucwords($chaine);

Ce qui affichera :

Alexandre Val Developpeur Web

Attention : la fonction ne comprend pas les ‘-’, ‘_’ ‘(’ devant les lettres. ce qui fait qu’une phrase comme celle-ci :

echo ucwords(’alexandre val (developpeur web)’);

affichera :

Alexandre Val (developpeur Web)

N’oubliez pas les fonction pour tout réduire en minuscule : strtolower(); et en majuscule : strtoupper();
strtolower(), que l’on peut combiner avec ucwords() pour formatter le texte, exemple :

$chaine = ALEXANDRE VAL DEVELOPPEUR WEB’;
echo ucwords(strtolower($chaine));

Affichera :

Alexandre Val Developpeur Web

Projets Chez Elao

 

Wanimo.com

  Site grand public.Développement d’un site marchand (ventes de nourriture, accessoires animaux).
Mise à jour de la base de données du site : Lotus en MySQL/PHP.
Développement outils mon compte, modules de backoffice.
Design CSS, Retouche Photoshop.
Langage utilisé : PHP/MySQL, HTML/CSS (W3C)
 

Projets Chez Jet Multimedia

Création d’un système de cache en PHP orienté objet pour sites pour téléphone mobile.

Projets Chez Kouro Sivo

 

TetraPak.fr

  Site grand public. Reprise de l’existant : créations / modifications des pages et ajout de communiqués de Presse. Retouche d’images.
Langage utilisé : PHP/MySQL, HTML/CSS (W3C)
Lancements d’emailings mensuels.
 

 

Orange Alchemy

  Développement du site Orange Alchemy en ASP / SQL Server.
Spécificités : Gestion des points, classement, boutique online avec prise de commande.
Lancements d’emailings mensuels.
 

 

Alcatel Business Partner

  Développement du site en PHP 5 / MySQL.
Site réalisé en 5 langues :
FR / ANG / ALL / ITA / ESP.
Spécificités : Gestion compte points, challenges commerciaux, boutique cadeaux.
Lancements d’emailings.
 


Cliquez pour agrandir
 

The Rewards Catalog

  Développement du site en PHP / MySQL.
Boutique en ligne avec possibilités de commandes.
Spécificités : Gestion de compte points, multilangues ( FR / ANG / ALL / ITA / ESP), Back-Office.
 


Cliquez pour agrandir
 

Volvo Finance Race 2005

  Développement du site en ASP / SQL Server.
Spécificités : Gestion de points, classement, boutique online avec prise de commande.
Lancements d’emailings mensuels.
 

 

Business Object - Pôle Position

  Développement du site en ASP / SQL Server.
Spécificités : Gestion des points, classement des ventes, intégration d’un jeux à Instants Gagnants.
Lancements d’emailings mensuels.
 

 

Renault Trucks Excellence Club

  Reprise de l’existant : créations / modifications de pages.
Retouche d’image.
Langages utilisés :ASP, HTML/CSS.
Mise en place d’un diaporama de photos.
 

 

Arval - Banque Populaire

  Reprise de l’existant : créations / modifications de pages.
Spécificités :Gestion des points, classement.
 

 

The Phone House - Carat

  Reprise de l’existant : créations / modifications de pages.
Lancement de challenges commerciaux
Spécificités :Gestio