alainL a écrit :
Bonsoir,
J'ai EasyPHP 1.7 et PHP 4.3.3 avec l'extension gd.
J'ai installé un script qui fonctionne sur le site distant( http://autourdalos.fr/alcay/index.php ) mais produit des erreurs en local. Voici la première, je pense que les autres sont la conséquence de celle-ci... :
______________________________________________________________________________________________ Notice: Undefined variable: start in e:\easyphp1-7\www\essais\alcay\index.php on line 89
------------------------------------------------------------------------------------------------ <?
function affichimgs($nblignes,$larimage,$hautimage,$nbcols,$url,$urlancien,$redimvoz,$cadrak,$epaiscadretable,$coulcadretable){ if (isset($_REQUEST['start'])){
$start = $_REQUEST['start'];
}
if(is_null($start)){ ## <----- ligne 89
$start = 0;
}
___________________________________________________________________________________________________ Comment configurer mon EasyPHP
S'il t'affiche les erreurs, c'est qu'il est bien configuré pour du dev, où tu veux avoir le maximum d'alertes. Et si ça n'apparait pas sur le serveur de prod, c'est que celui-ci est bien configuré pour la prod, où tu ne veux pas afficher de tels messages aux visiteurs de ton site.
ou que modifier dans le script
Olivier t'a expliqué où était le problème. D'une manière générale, la suite d'opération consistant à
- vérifier si une clé existe dans un tableau associatif
- si oui, récupérer la valeur associée dans une variable locale
- si non, affecter une valeur par défaut à cette variable locale
est une opération des plus courantes en PHP. Il est donc préférable de factoriser tout ce boilerplate une bonne fois pour toutes:
function lire_tableau($tableau, $cle, $defaut) {
if (isset($tableau[$cle])) {
return $tableau[$cle];
}
return $defaut;
}
function lire_requete($cle, $defaut=NULL) {
return lire_tableau($_REQUEST, $cle, $defaut);
}
function lire_get($cle, $defaut=NULL) {
return lire_tableau($_GET, $cle, $defaut);
}
function lire_post($cle, $defaut=NULL) {
return lire_tableau($_POST, $cle, $defaut);
}
function lire_cookie($cle, $defaut=NULL) {
return lire_tableau($_COOKIES, $cle, $defaut);
}
function lire_globale($cle, $defaut=NULL) {
return lire_tableau($GLOBALS, $cle, $defaut);
}
Après quoi ton code devient beaucoup plus simple:
$start = lire_requete('start', 0);
Voili voilà... Une ligne, pas de tests, pas d'erreur, pas de pollution.
HTH