Il arrive souvent d'avoir besoin de données présentes dans la base. Il est tout aussi courant de ne pas avoir de données à disposition (ou pas assez).
Basé sur ce billet, les deux requêtes suivantes vous permettent de remplir un champ de type "date" avec des dates a peu près aléatoire pour autant d'enregistrement que vous voulez. Il vous suffit de créer plus de vues ou d'ajouter la même vue dans le "from" avec des alias pour augmenter le nombre d'enregistrement (c'est un produit cartésien).
Le code suivant génère des dates pour 9 enregistrements sur le plus petit dénominateur commun, à savoir un mois de 28 jours. L'année est mise en dur dans la requête, vous pouvez aisément la remplacer.
Note: ce n'est pas la façon la plus élégante ni la plus efficace pour les dates mais ça fonctionne ![]()
Il arrive souvent d'avoir besoin de données présentes dans la base. Il est tout aussi courant de ne pas avoir de données à disposition (ou pas assez).
Basé sur ce billet, les deux requêtes suivantes vous permettent de remplir un champ de type "date" avec des dates a peu près aléatoire pour autant d'enregistrement que vous voulez. Il vous suffit de créer plus de vues ou d'ajouter la même vue dans le "from" avec des alias pour augmenter le nombre d'enregistrement (c'est un produit cartésien).
Le code suivant génère des dates pour 9 enregistrements sur le plus petit dénominateur commun, à savoir un mois de 28 jours. L'année est mise en dur dans la requête, vous pouvez aisément la remplacer.
Note: ce n'est pas la façon la plus élégante ni la plus efficace pour les dates mais ça fonctionne ![]()
Le support de PHP4 est désormais arrêté avec la publication aujourd'hui de sa dernière version, la 4.4.8.
Cette nouvelle version, qui parait près de 8 mois après la précédente version, n'apporte pas de corrections majeures (corrections de bugs divers). A compter de ce jour, et ce jusqu'au 8 août 2008, seules des mises à jour de sécurité seront faites.
Nous vous invitons donc à migrer vos applications vers PHP5 si cela n'est pas encore fait. Vous avez pour cela à votre disposition le guide de migration de PHP4 vers PHP5.
Proposé par Fabien LACHAUD
CakePHP 1.2 vient de sortir en version beta après être resté un long moment en prebeta. Cette version inclut de nombreuses fonctionnalités : enrichissement des méthodes de validation, pagination et tri sur l'affichage des enregistrements, meilleur gestion de l'authentification des utilisateurs, système de cache...
C'est bientot le premier apéro php Belgique 2008 le 25 janvier.
J'ai retrouvé les photos du premier apéro php que j'ai fait à Annecy en mars 2001
Entendu aux infos, un quebecois parle de "la grande odyssée "un parcours de 1000 km dans les alpes.
Moins 30 c'est pas froid ! J'suis nue-mains... Ca va être la plus grosse difficulté difficulté pour nous: "la chaleur"
J'ai souri (bon ok j'ai pleuré de rire)
Entendu aux infos, un quebecois parle de "la grande odyssée "un parcours de 1000 km dans les alpes.
Moins 30 c'est pas froid ! J'suis nue-mains... Ca va être la plus grosse difficulté difficulté pour nous: "la chaleur"
J'ai souri (bon ok j'ai pleuré de rire)
Le site Developer Tutorials vient de publier un tutorial expliquant comment créer sa propre application Facebook grâce à PHP.
Ce tutorial présente, à l'aide d'un exemple concret, tout ce dont vous aurez besoin pour vous lancer dans l'écriture d'une application.
Vous verrez notamment les librairies spécifiques à installer ainsi qu'une brève présentation du FBML (Facebook Markup Language), le langage de mise en page standard sur Facebook.
Créer une application Facebook avec PHP (en anglais)
Proposé par Fabien LACHAUD
Retrouvez en JavaScript vos fonctions PHP usuelles.
Kevin van Zonneveld a lancé un projet visant à porter des fonctions PHP en langage JavaScript. Le but étant pour un développeur PHP de retrouver en JS des fonctions usuelles telles que "trim", "str_replace", "implode" n'ayant pas d'équivalents. Même si l'utilité de ces fonctions peut paraître contestable pour des gens à l'aise en JS, les développeurs ayant plus de difficultés les trouveront certainement utiles.
Le projet compte actuellement 36 fonctions et Kevin van Zonneveld invite toute personne intéressée à contribuer en portant d'autres fonctions.
Source Zend Developper
Un article sur le site de Tomas Petricek et relayé récemment sur la Developer Zone de Zend explique comment utiliser PHP et Phalanger, compilateur permettant d'utiliser des scripts PHP avec le framework .Net, pour écrire des applications Silverlight.
Dans un premier temps, l'auteur introduit l'écriture des fichiers XAML en énumérant les modifications à apporter pour le bon fonctionnement des scripts PHP.
Ensuite il montre comment utiliser PHP pour dynamiser l'interface XAML avec comme exemple l'écriture d'évenements onclick et onload.
Enfin il nous montre comment compiler et exécuter l'application.
L'auteur fournit, en guise d'exemple, un mini jeu reprenant l'ensemble des explications abordées dans l'article et quelques notions supplémentaires pour ceux qui voudraient appronfondir le sujet.
Après deux ans de développement et quelques versions intermédiaires, la première version officielle stable de Jelix est disponible. Jelix est un framework libre (LGPL), extensible et modulaire pour PHP 5. Il a déjà fait preuve de robustesse et de performances intéressantes. En effet, il est utilisé depuis de nombreux mois sur plusieurs sites en production, dont certains gros sites français à très forte charge.
Ce framework entièrement orienté objet propose nombre aspects techniques modernes :
* une logique MVC
* une bibliothèque de mapping objet-base relationnelle (ORM)
* authentification
* gestion de droits
* localisation
* un moteur de template léger et performant
* un framework de tests unitaires
* la prise en charge de nombreux formats en sortie et de différents types de services web
* etc.
Son originalité tient en particulier dans :
* son système de formulaire simple et puissant
* son système d'urls automatiques
* son système d'évènements inter-modules
* sa gestion robuste des erreurs techniques
* la possibilité de "surcharger" des fichiers de module existants.
Toutefois, bien qu’offrant de nombreuses possibilités, Jelix est conçu avec à l’esprit le soucis constant de simplicité et de performance.
Jelix est disponible en trois éditions (gratuites et libres bien sûr) : "developer", "optimized" et "gold". La première est très utile pour la phase développement de vos projets, les deux autres sont optimisées pour les serveurs en production. Il est également possible de se construire une édition optimisée en fonction de la configuration de son propre serveur, de sa version de PHP.
Découvrez et téléchargez Jelix sur http://jelix.org. Rejoignez une communauté ouverte et réactive !
Proposé par Laurent Jouanneau
On parle beaucoup des API de Google, qui permettent de faire intéragir une application avec celles de Google. Yahoo! a également développé des API pour utiliser, entre autre, la recherche d'images et de videos. Le site devshed.com vient de publier un article qui donne les bases sur l'utilisation des web services de Yahoo!.
Après une petite introduction, ce tutoriel explique le fonctionnement des API de Yahoo puis vous propose deux exemples d'utilisation, la recherche d'images et de videos. Ziff Davis va proposer d'autre tutoriel sur ce sujet dans quelques temps.
Tutorial sur les expressions régulières en PHP
Martin Streicher a publié en ce début d'année la première partie de son tutorial consacré aux expressions régulières en PHP.
Enormément utilisé dans tout type d'applications, les expressions régulières permettent en particulier de vérifier le format d'une chaîne de caractères, que ce soit simplement une adresse mail, une url, une date ou bien un format précis que vous définissez vous même.
La première partie de ce tutorial introduit le concept des expressions régulières et présente les utilisations de base des fonctions offertes par PHP.
Lire l'article
Petit changement pour ce premier apéro php Belgique 2008 ce 25 janvier , nous irons à la Bécasse du centre ville (pas au cimetière d'Ixelles)
Ca ne change rien pour ceux qui viennent en train. Mais les feux d'artifices seront interdits.
11 rue Tabora | TaborastraatAh la la. C'est assez rare pour être souligné, mais je viens de me battre avec Symfony pendant près de deux heures avec un problème assez déroutant de prime abord : lorsque dans une action vous faites quelque chose d'aussi anodin que ceci :
public function executeBar() { try { // Some stuff here, if successful redirect user to somewhere else $this->setFlash('notice', 'Action was successful'); $this->redirect('@whatever_route'); } catch (Exception $e) { $this->getRequest()->setError('errors', 'Something has failed somewhere, sorry dude'); $this->logMessage('Big boo boo occured: '.$e->getMessage(), 'err'); return sfView::SUCCESS; } }
Et bien dans ce cas là, la redirection s'opère MAIS l'ensemble du rendu sera tout de même produit et envoyé au navigateur [1] - ce qui peut s'avérer très couteux sur un site internet au final [2]. La raison en est très simple, la méthode redirect() de la classe sfActions met fin à l'execution par ce moyen que l'on peut qualifier de hardi :
public function redirect($url, $statusCode = 302) { $url = $this->getController()->genUrl($url, true); if (sfConfig::get('sf_logging_enabled')) { $this->getContext()->getLogger()->info('{sfAction} redirect to "'.$url.'"'); } $this->getController()->redirect($url, 0, $statusCode); throw new sfStopException(); }
Oui, vous avez bien lu, on interrompt le script en levant une exception, ici de type sfStopException. Le problème, c'est que dans mon exemple précédent, la méthode redirect() est appellée dans un bloc try { } catch { }, et donc l'exception levée est interceptée et l'action n'est au final pas stoppée. Vicieux, hein ?
Pour régler le problème, on peut par exemple toujours effectuer ses appels à la méthode redirect() en dehors d'un block try { } catch { } [3], ou encore tester le type de l'exception levée. Dans notre exemple, cette dernière solution ressemblerait à ça :
public function executeFoo() { try { // Some stuff here, if successful redirect user to somewhere else /// ... $this->setFlash('notice', 'Action was successful'); $this->redirect('@whatever_route'); } catch (sfStopException $e) { return sfView::HEADER_ONLY; } catch (Exception $e) { $this->getRequest()->setError('errors', 'Something has failed somewhere, sorry dude'); $this->logMessage('Big boo boo occured: '.$e->getMessage(), 'err'); return sfView::SUCCESS; } }
C'est pas super sexy, mais ça fonctionne, et ça a le mérite de m'inspirer deux morales à cette histoire :

Edit: Je m'exprime mal, c'est pas super cracra, c'est juste que ça introduit une petite complexité supplémentaire. Mais l'utilité de la chose est bien entendu totalement avérée si on a besoin d'effectuer des opérations particulières avant la fin du script ( ce qui est rarement le cas, enfin chez moi).
[1] Avec tout ce que ça comporte de requête SQL et de templates calculés pour rien
[2] Et oui bien sûr, faire un redirect() dans un bloc try catch c'est pas forcément le meilleur endroit, mais c'est teeeellement pratique 
[3] Qui sera donc exécuté de toute façon si aucune exception n'est levée.
Today, I released the second version of eZVideoFLV Datatype extension . This is the first version compatible with eZ Publish 4 and PHP5 . I would like to thank Kåre Køhler Høvik from eZ Systems who initiated the portage to PHP5. This version also brings some small bugfixes and a better debug output to the cronjob script. Information about this extension can be found on the project page and in the announce of the first version . Bug report and comments are welcome.
Phpnews.fr vient d’ouvrir ses portes en ce début d’année 2008 afin d’offrir à tous les développeurs, administrateurs web ou curieux une page d’accueil autour des actualités des technologies Open Source dédiées au web.
Phpnews.fr vous proposera ainsi des actualités mais aussi des tutoriaux, des liens et toutes sortes d’astuces et d’idées que chacun pourra soumettre.
A travers la blogosphère, qu’elle soit francophone ou internationale, tout le monde peut découvrir les dernières tendances et nouveauté du WEB 2.0 : Un nouveau service par ici, une nouvelle de Facebook par là, nous retenons de l’explosion des sites WEB 2.0 une nouvelle façon d’appréhender le web via de nouvelles interfaces et de nouvelles habitudes de consommation du contenu.
Cependant, on ne parle jamais de ce qui a permis l’avènement de ce nouveau web et des coulisses de tous ces services dont beaucoup ont choisit de travailler avec des technologies issues du logiciel libre tel que PHP, Apache, MySQL, GNU/Linux …
Quelles problématiques peuvent rencontrer ces entreprises et que peuvent leur offrir les technologies Open Source ? Comment alors les utiliser et y contribuer ?
Un repos bien mérité en Guadeloupe pour l’elePHPant qui a eu une fin d’année 2007 très mouvementée.
Je vous vois venir…non, ce n’est pas moi qui ai pris les photos, c’est Loïc d’Anaska qui, lui, peut prendre plusieurs semaines de vacances en plein hiver!
Comment détecter en PHP qu’une chaîne n’est composée que de majuscules
La méthode la moins élégante
On parcourt notre chaine grâce à sa forme indexée (avec $str[$i], $str{$i} étant dépréciée en PHP6) en comparant à chaque passage si le caractère parcouru est bien un caractère majuscule. Pour cela :
Une méthode plus élégante
Avec une expression rationnelle. Afin d’obtenir l’expression la plus simple, il faut non pas chercher à savoir si tous les caractères sont en majuscule mais rechercher s’il existe un caractère qui n’est pas une majuscule.
Une fois que l’on a effectué ce raisonnement, la solution vient très naturellement :
if(preg_match('#[^A-Z]#', $foo) === 0)
{
/*
Aucune occurrence d'un caractère n'étant pas A-Z
n'a été trouvé, la chaine est donc en MAJ
*/
}
On peut compléter ainsi facilement la liste des caractères autorisés, par exemple pour prendre en compte les chiffres on pourra utiliser le motif #[^A-Z0-9]#
Deuxième partie du tutorial sur les expressions régulières en PHP
Dans cette deuxième partie, Martin Streicher aborde les éléments suivants :
Après de nombreux mois de buzz autour de son introduction en bourse , on apprend finalement aujourd’hui que SUN devrait racheter MySQL AB, la société qui gère les produits MySQL :
http://blogs.mysql.com/kaj/2008/01/16/sun-acquires-mysql/
Ainsi SUN affirme encore un peu plus son positionnement dans l’univers Open Source en faisant l’acquisition de l’un des produits les plus répandus et les actifs. Espérons que cela permettra à MySQL de continuer sa progression actuelle.

MySQL, la base de donnée Open Source la plus populaire du WEB 2.0, utilisée entre autre par Google, MySpace et Facebook se fait racheter par Sun MicroSystems pour un montant estimé de $800 millions en cash contre toutes les actions de l’entreprise.
Il manquait clairement dans le panel des technologies Sun (qui est entre autre le troisième fabricant mondial de serveurs pour entreprises) une base de données capable d’occuper le marché des bases de données pour entreprises estimé à 15 milliards de dollars.
Cette acquisition pourrait aussi permettre à SUN de consolider sa position sur les technologies du WEB en lui permettant de promouvoir son langage Java en conjugaison à une base de donnée MySQL.

L'information selon laquelle Sun rachetait MySQL AB n'a pas pu vous échapper. Depuis hier après-midi, le communiqué est repris et largement commenté sur un très grand nombre de supports.
Petite revue de web de cet évènement majeur de la vie du logiciel libre:
Les communiqués officiels:
Nexen.net a publié récemment une brève sur quelques conseils de performances PHP/MySQL notamment sur la fonction PHP in_array();
Le code original utilisé par le testeur s’apparente à :
$time_start = microtime(true);
$data = array('a', 'b', 'c', 'd', 'e', 'f' ... 'zzz');
for ($i=0; $i < 1000; $i++)
if(in_array('c', $data)){};
echo (microtime(true) - $time_start);
Temps d’exécution moyen pour un tableau de ‘a’ à ‘zzz’ sur ma machine de test :
0.26708 sec
On obtient une exécution bien plus rapide en utilisant le code suivant :
$time_start = microtime(true);
$data = array('a', 'b', 'c', 'd', 'e', 'f' ... 'zzz');
$a_data = array();
foreach ($data as $point) {$a_data[$point] = true;}
for ($i=0; $i < 1000; $i++)
if(isset($a_data['c'])){};
echo (microtime(true) - $time_start);
Temps d’exécution moyen :
0.01059 sec. (Donc environ 25 fois plus rapide que d’utiliser la fonction in_array())
Une autre méthode serait d’utiliser la fonction array_flip() (qui permet de remplacer les clés par les valeurs, et les valeurs par les clés). On pourra ainsi tester la présence de la valeur devenue clé :
$time_start = microtime(true);
$data = array('a', 'b', 'c', 'd', 'e', 'f' ... 'zzz');
$a_data = array_flip($data);
for ($i=0; $i < 1000; $i++)
if(isset($a_data['c'])){};
echo (microtime(true) - $time_start);
Temps d’exécution moyen :
0.01038 sec. Le résultat est sensiblement identique à la version précédente.
Il y a cependant encore plus rapide pour transformer nos valeurs en clés, c’est en utilisant la fonction array_fill_keys()
$time_start = microtime(true);
$data = array('a', 'b', 'c', 'd', 'e', 'f' ... 'zzz');
$a_data = array_fill_keys($data, ''); //Ne pas remplir de null car isset() retournerai FALSE même si la clé existe
for ($i=0; $i < 1000; $i++)
if(isset($a_data['c'])){};
echo (microtime(true) - $time_start);
Temps d’exécution moyen :
0.00524 sec. C’est pratiquement 2 fois plus rapide que précédemment et 50x plus que in_array().
Si vous souhaitez reproduire ces tests chez vous et essayer de trouver une méthode encore plus rapide, voici la fonction vous permettant de générer un grand tableau :
<?php
$buffer = 'array(';
$str = 'abcdefghijklmnopqrstuvwxyz';
$str_len = strlen($str);
for($i = 0; $i < $str_len; $i++)
{
$buffer .= "'".$str[$i]."’,";
for($j = 0; $j < $str_len; $j++)
{
$buffer .= "’".$str[$i].$str[$j]."’,";
for($k = 0; $k < $str_len; $k++)
{
$buffer .= "’".$str[$i].$str[$j].$str[$k]."’,";
}
}
}
$buffer .= ‘1);’;
echo $buffer;
?>
Article sur la mise en place d'un moteur d'Enterprise Search avec Apache Solr et PHP.
L'Enterprise Search ou comme on pourrait l'appeller "recherche en entreprise", permet l'identification et l'indexation de contenu au sein du domaine de l'entreprise ainsi que la recherche et l'affichage de ce contenu.
Bien que destinés à une recherche "locale", ces moteurs de recherches sont utilisés également dans le domaine du web pour des sites à forte fréquentation et disposant d'un contenu conséquent.
Solr est un de ces serveurs, développé à partir de de la librairie Java Lucene par CNET Network avant d'être donné à la fondation Apache. Parmi les fonctionnalités, on trouve :
Zend Studio pour Eclipse est pour bientôt.
Yossi Leon communique sur le Zend Blog que le ZSfE (Zend Studio for Eclipse) serait en bonne voie de disponibilité d'ici peu. Suite à plusieurs béta et de nombreux retours, l'application devrait être nettoyée de ses bugs et contenir de nouvelles fonctionalités non encore dévoilées.
Basé sur la technologie du Zend Studio ainsi que sur le projet PDT (PHP developers tools) d'Eclipse, le ZSfE s'annonce comme l'un des IDE PHP les plus complets.
Lire l'article
Comparaison des fonctionnalités ZSfE et PDT
Mise à jour du 23 janvier 2008 :
C'est fait, Zend Studio pour Eclipse est disponible depuis hier sur la partie marchande du site de Zend. Il ne vous en coûtera pas moins de 299$ pour en acquérir une licence, les détenteurs d'une licence Zend Studio Professional quant à eux pourront l'obtenir gratuitement. Parmis les évolutions à venir Zend prévoit :
Christian Durel : Unisys -> Oracle -> SAP -> Zend
La branche 2.0 d’Apache continue d’être maintenue avec la version 2.0.63. A noter que la version 2.0.62 n’a pas été publiée et qu’un saut a été directement effectué à la version .63 pour marquer les changements significatifs depuis la version .61.
Au niveau sécurité, deux corrections ont été apportées au niveau des modules mod_status et mod_imagemap, toutes les deux concernant de possibles failles XSS.
Au niveau de la correction de bug (6 corrections), vous trouverez le changelog en suivant ce lien
Concernant la dernière branche 2.2, nous retrouvons les deux corrections de sécurité décrites ci-dessus, ainsi qu’une autre faille XSS dans le module mod_proxy_balancer et une possibilité de DoS entrainant un crash possible, toujours via ce module.
Le changelog concernant la résolution de bug est assez conséquent, à la fois concerant le coeur d’Apache et ses modules ”built-in” :
It's been a long time that I and some people I know were looking after a place on the web to publish a Symfony developer profile, post a job offer, share contacts and/or project opportunities. There's been some initiatives here and here, but nothing has really convinced me so far. So I've decided to write something on my own.
The name of the project is Symfonians. It's available in a beta state and only in english language for now.
There must exist a lot of bugs, so feel free to report them if you use the service 
Ah, last but not least, I imagine that the site won't display nice on IE6 (maybe on IE7 too), but for now I don't care as I don't have much time to loose on this kind of fascinating CSS hacking challenges 
Suite à un problème de serveurs, voici l'ensemble des nouvelles photos des ElePHPants qui ont découverts qui n'étaient pas les seuls au monde...
Les Elephants sont disponibles sur le site de Nexen, à l'adresse suivante : cliquez ici
Après plus de deux ans et demi de travail, l'équipe de Joomla vient d'annoncer la sortie de la version stable de Joomla 1.5.
Cette nouvelle version est basée sur trois maîtres mots : l'extensibilité, l'internationalisation et la convivialité. En effet, grâce à la nouvelle API, la création d'extension devient plus facile et leur gestion est simplifié grâce à un installeur unique quelques soit le types d'extension.
L'interface d'administration à été simplifiée : nouvelle méthode de sélection d'image, gestion des archives directement dans la gestion des articles, aperçu en "live" sans enregistrement, etc. Le support des jeux de caractères étendus et de l'écriture de ela droite vers la gauche font de Joomla un CMS complet et international.
De nombreux projets PHP (moteur de blog, CMS...) gèrent les données au format UTF-8. Malheureusement, beaucoup ne le font pas correctement : les tables MySQL sont créées avec l'encodage latin1 par défaut et le texte encodé en UTF-8 par l'application y est stocké tel quel.
Lorsque l'on regarde le contenu de ces tables avec phpmyadmin, on voit alors les lettres accentuées remplacées par deux caractères sans rapport. Il devient difficile d'exploiter efficacement ces données.
L'erreur généralement commise est double :
Pour utilisation optimale de MySQL il suffit pourtant de peu de chose :
Voici un petit exemple complet :
[php]
<?php
// Affichage de la page en UTF-8
header("Content-type: text/html; charset=UTF-8");
?>
<html>
<body>
<form method="POST" action="<?=$_SERVER['REQUEST_URI']?>">
Entrez du texte accentué : <input name="texte" />
<br/>
<input type="submit" value="Enregistrer dans la base" />
</form>
<?php
// Connexion et sélection de la base
$lnk = mysql_connect("localhost", "root", "fox") or die("Impossible de se connecter au serveur");
mysql_select_db("test", $lnk) or die("Connexion à la base impossible");
// Indiquer à mysql que l'on va communiquer avec lui en utf8
mysql_set_charset("utf8", $lnk);
// Il est aussi possible de changer l'encodage à l'aide d'une requête SQL
// si les fonctions mysql_* sont encapsulés dans un framework
// ou si PHP<5.2.3 ou MySQL<5.0.7
// ex : mysql_query("SET NAMES UTF8");
// ou $db->query("SET NAMES UTF8");
// Création de la table encodée en UTF8
$sqlCreate = "CREATE TABLE IF NOT EXISTS tableA (
champsA int(11) NOT NULL auto_increment,
champsB text NOT NULL,
PRIMARY KEY (champsA)
) ENGINE=MyISAM DEFAULT CHARSET=utf8";
if(mysql_query($sqlCreate))
{
echo "Création de la table OK.<br/>\n";
}
// Insertion du texte saisie dans le formulaire
if(isset($_POST['texte']))
{
$sqlInsert = sprintf("INSERT INTO tableA(champsB) VALUES('%s')",
mysql_real_escape_string($_POST['texte']));
if(!mysql_query($sqlInsert))
{
echo "Insertion dans la table impossible.<br/>\n";
}
}
$sqlSelect = "SELECT * FROM tableA";
// Lecture des données
$result = mysql_query($sqlSelect) or die("Requête impossible sur la table.");
// Afficher des résultats en HTML
echo "<table>\n";
while ($line = mysql_fetch_assoc($result)) {
echo "\t<tr>\n";
foreach ($line as $col_value) {
echo "\t\t<td>$col_value</td>\n";
}
echo "\t</tr>\n";
}
echo "</table>\n";
// Libération des résultats
mysql_free_result($result);
// Fermeture de la connexion
mysql_close($lnk);
?>
</body>
</html>
Vous l'avez peut-être remarqué, GLOBALIS, éditeur de ce site, recherche plusieurs développeurs. Si vous êtes intéressés par le langage PHP, si vous souhaitez apprendre, participer à l'enrichissement du contenu PHPIndex et travailler sur des projets variés, venez rejoindre notre équipe.
Seuls impératifs: avoir un diplôme informatique de niveau Bac+2 à Bac+4, et une expérience, même courte, de développement PHP. Les jeunes diplômés sont les bienvenus.
Le Salon "Solution Linux" ouvre ses portes les 29-30-31 janvier 2008.
Avec l'annonce de la sortie de mon ouvrage
Les Editions ENI, éditeur de l'ouvrage propose :
"Rencontrez l´auteur de ce livre Christophe VILLENEUVE, qui répondra à toutes vos questions,
le Mardi 29 Janvier de 15h à 16h
sur le salon Solutions Linux 2008 -
Stand Editions ENI n°E38
(CNIT - Paris la défense)"
Pour plus d'informations... cliquez ici
Apéro php Belgique 2008 #1: un album photos sur Flickr
21 photos
Une bonne petite soirée, avec des participants d'horizons divers.Bon j'avoue, je suis un peu déçu des désistements mais c'est pas aussi grave que le premier en 2002 où j'avais eu 3 personnes pour 15 inscrits (et dans les 3 un ne s'était pas inscrit).
Ici nous auront été 9, même si Patrick, parti assez tôt n'a vu que 3 personnes ne travaillant pas avec lui.
On a eu 2 paranos, 2 Claroline, 2 ausy, 1 B-Holding, 1 Belgacom, et un king of blogs
Donc voilà le prochain de la serie se fera en wallonie ou en flandre, j'attends des propositions (et prépare une roue de secours)
PS pour les présents: maître capello a vérifié : bibi = Ghislain Seguy et pas BenoîtNetEco vient de publier une interview de Harold Goldberg, CEO et Christian Durel, nouveau directeur général de Zend France.
Lire l'interview
Une préversion du framework de Zend est disponible au téléchargement. En plus de corriger certains bugs et d'améliorer quelques services offerts par Zend Framework, cette version permet d'avoir un aperçu des nouvelles fonctionnalités qui seront incluses dans la version 1.5 finale.
Les principales nouveautés :
Google propose des choses vraiment intéressantes au travers de ses API, comme par exemple son méconnu (car planqué dans la doc) webservice HTTP de géolocalisation. L'idée ici est de récupérer la lattitude et la longitude d'un endroit géographique à partir de sa description, par exemple Paris, France ou encore 3 allée des allouettes, 35000 Rennes, France.
Il vous faut posséder au préalable une clé d'API Google, que vous pouvez obtenir gratuitement par là.
<?php define('GOOGLE_API_KEY', 'your_google_api_key_here'); $wsurl = 'http://maps.google.com/maps/geo?q=%s&output=csv&key=%s'; $location = 'Paris, France'; $data = explode(',', file_get_contents(sprintf($wsurl, urlencode($location), GOOGLE_API_KEY))); $coord = 200 === (int)$data[0] ? array((float)$data[2], (float)$data[3]) : null; var_dump($coord);
Ce qui nous donne :
array(2) { [0]=> float(48.856667) [1]=> float(2.350987) }
On prendra soin de cacher autant que faire se peut les résultats renvoyés par le webservice, afin de soulager les serveurs de Google et accessoirement de pas fusiller le crédit-requête associé à sa clé d'API.
Disclaimer : Ce billet n'est pas un appel au troll, je me doute qu'on peut faire la même chose en 3 lignes de Ruby, 2 lignes de Python et -10 lignes de Fotran77. C'est juste pour dire que les services Google, ça déchire quand même un petit peu.
Mise à jour mineure de SPIP 1.9.2
Pour nous faire patienter jusqu'à la prochaine version majeure de SPIP, les développeurs de SPIP publient la version 1.9.2d.
Cette mise à jour porte principalement sur la correction de diverses anomalies mais aussi des modifications et améliorations pour les développeurs de plugins telles que :
- l'amélioration de la purge du cache dans le CRON,
- la correction d’un include manquant qui pouvait faire échouer la fonction autoriser_voir_dist ,
- l'appel de 'url_de_base' depuis mes_options...
Changelog
Téléchargement
Proposé par Clément Péronneaud
Les Elephpant PHP sont présents au salon "Solution Linux" 2008, et pour montrer leur joie... ont réalisé une petite figure pour le plaisir de tous.

L'auteur du livre "PHP et MySQL - MySQLi - PDO, Construisez votre application" était présent hier mardi sur le stand de la societe "Editions ENI" pour parler de son ouvrage qui sortira le 11 fevrier prochain.

L'auteur sera présent les après-midi de mercredi et jeudi au salon "Solution Linux", vous pouvez aussi le rencontrer sur le stand de l'AFUP (Association Francaise des utilisateurs de PHP)
Pour plus d'informations, sur ce livre.. cliquez ici
Lors de la deuxième journée au salon linux, les visiteurs sont nombreux pour voir et revoir les elePHPants effectués leur Show sur le Stand de AFUP.

Cependant L'auteur de PHP & MySQL - MySQLi - PDO, et publicateur de News pour le site de Nexen.net, était aussi présent pour montrer l'exemplaire de son ouvrage à ces collègues Nexen du groupe Alter Way, son ouvrage qui sortira prochainement en librairie.

Pour Le dernier jour du salon "Solution Linux", vous pourrez discuter toujours avec son auteur