Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1163 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Problème code erreur PHP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème code erreur PHP

n°1687948
fil80
Posté le 18-02-2008 à 16:27:09  profilanswer
 

Bonjours à tous,
 
aprés installation du module compte à rebours dans mon site créé à l'aide de Joomla si je l'affiche dans mon site j'ai le message suivant:
 
Notice: Uninitialized string offset: 2 in /mnt/103/free.fr/6/6/lequesnel2008/modules/mod_comptearebour.php on line 62
 
comme je ne comprends pas tré bien ce language voici mon fichier php si quelqu'un peut me dire où est l'erreur:

 

Code :
  1. <?php
  2.  
  3. /**
  4. * Module CompteARebour v 1.0 Fr
  5. * Philippe ANTOINE - 21 septembre 2007
  6. * mod_comptearebour est une adapation francisée de mod_countdown 0.6 (Joomgets)
  7. * La francisation porte sur l'affichage du module dans le frontend
  8. * ainsi que dans le backend pour le paramétrage.
  9. * L'adaptation apporte les nouveautés suivantes :
  10. * - choix de la couleur du texte
  11. * - ajout possible d'un message
  12. * @package Joomla
  13. * @copyright Copyright (C) 2005 Open Source Matters. All rights reserved.
  14. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
  15. * Joomla! is free software. This version may have been modified pursuant
  16. * to the GNU General Public License, and as distributed it includes or
  17. * is derivative of works licensed under the GNU General Public License or
  18. * other free or open source software licenses.
  19. * See COPYRIGHT.php for copyright notices and details.
  20. */
  21.  
  22. defined( '_VALID_MOS' ) or die( 'Directly access to file not permited.' ) ;
  23.  
  24. global $mosConfig_lang ;
  25.  
  26. $ev_txtcolor = @$params->get('ev_txtcolor');
  27. $ev_displaytitle = @$params->get('ev_dtitle');
  28. $ev_title = @$params->get('ev_tit');
  29. $ev_displaydate = @$params->get('ev_ddate');
  30. $ev_day = @$params->get('ev_d');
  31. $ev_month = @$params->get('ev_m');
  32. $ev_year = @$params->get('ev_y');
  33. $ev_displayhour = @$params->get('ev_dhour');
  34. $ev_hour = @$params->get('ev_h');
  35. $ev_minutes = @$params->get('ev_min');
  36.  
  37. $ev_displayURL = @$params->get('ev_dlink');
  38. $ev_URLtitle = @$params->get('ev_ltitle');
  39. $ev_URL = @$params->get('ev_l');
  40.  
  41. $ev_offset = @$params->get('ev_offset') ? @$params->get('Offset') : '0' ;
  42.  
  43. $ev_affichermessage = @$params->get('ev_affichermessage');
  44. $ev_message = @$params->get('ev_message');
  45.  
  46. $eventdown = mktime($ev_hour, $ev_minutes, 0, $ev_month, $ev_day, $ev_year, -1);
  47.  
  48. $today = time() + 3600*$ev_offset ;
  49.  
  50. $difference = $eventdown - $today ;
  51. if ($difference < 0) $difference = 0 ;
  52.  
  53. $days_down = floor($difference/60/60/24) ;
  54. if ($days_down<10) {
  55. $days_down = strval("0".$days_down);
  56. } else {
  57. $days_down = strval($days_down);
  58. }
  59.  
  60. $day_a = $days_down{0};
  61. $day_b = $days_down{1};
  62. $day_c = $days_down{2};
  63.  
  64. $hours_left = floor(($difference - $days_down*60*60*24)/60/60) ;
  65. if ($hours_left<10) {
  66. $hours_left = "0".$hours_left;
  67. }
  68. $minutes_left = floor(($difference - $days_down*60*60*24 - $hours_left*60*60)/60) ;
  69.  
  70. ?>
  71. <?php echo '<div style="color:'.$ev_txtcolor.'">';?>
  72.  
  73. <div align="center" style="border:1px solid #cdcdcd;padding:10px;margin-top:10px;margin-bottom:10px;">
  74. <div style="font-size:16px;font-weight:bold;"><?php if ($ev_displaytitle) { echo $ev_title; } ?></div>
  75. <div><?php if ($ev_displaydate) { echo $ev_day.'/'.$ev_month.'/'.$ev_year; } ?></div>
  76. <div style="font-size:20px;font-weight:bold;margin:0px;padding:0px;line-height:normal;"><?php echo 'dans'?></div>
  77.  
  78. <div style="font-size:60px;font-weight:bold;margin:0px;padding:0px;line-height:normal;"><?php echo $day_a.$day_b.$day_c; ?></div>
  79.  
  80. <div style="font-size:20px;font-weight:bold;margin:0px;padding:0px;line-height:normal;"><?php echo 'jours'?></div>
  81. <div><?php if ($ev_displayhour) { echo $hours_left.'h : '.$minutes_left.'min'; } ?></div>
  82. <?php if($ev_displayURL) {?>
  83. <div><?php echo '<HR><div><a href="'.$ev_URL.'">'.$ev_URLtitle.'</a>';?></div>
  84. <?php } ?>
  85. <?php if($ev_affichermessage) { ?>
  86. <div style="font-size:20px;font-weight:bold;margin:0px;padding:0px;line-height:normal;"><?php echo '<HR>'.$ev_message;?></div>
  87. <?php } ?>
  88. </div>


 
Je remercie d'avance ce qui pourrony m'aider
 
elmoricq-edit : édition du titre qui était en majuscules, et utilisation des balises [code ][/code ].
Merci de lire les règles de la catégorie Programmation.

Message cité 1 fois
Message édité par Elmoricq le 18-02-2008 à 16:37:27
mood
Publicité
Posté le 18-02-2008 à 16:27:09  profilanswer
 

n°1687950
skeye
Posté le 18-02-2008 à 16:30:11  profilanswer
 

fil80 a écrit :


 
Notice: Uninitialized string offset: 2 in /mnt/103/free.fr/6/6/lequesnel2008/modules/mod_comptearebour.php on line 62
 
comme je ne comprends pas tré bien ce language voici mon fichier php si quelqu'un peut me dire où est l'erreur:


 
ligne 62.


---------------
Can't buy what I want because it's free -
n°1687984
Xav_
The only one...
Posté le 18-02-2008 à 17:07:31  profilanswer
 

ta variable est un "string", et un string c'est aussi un tableau de char.
 
Tu accède à ce tableau pour en récupérer 3 char

Code :
  1. $day_a = $days_down{0};
  2. $day_b = $days_down{1};
  3. $day_c = $days_down{2};


mais apparement ton string n'en contient que 2, donc PHP t'affiche un notice pour te dire que le 3eme indice (offset) du tableau n'est pas initialisé (il n'y a rien dedans).
 
Le problème vient du fait que tu as un contrôle pour rajouter un "0" devant le nombre de jours si celui-ci est inférieur à 2 chiffres (10), mais pas de contrôle si est inférieur à 3 chiffres (100) donc là ou tu fais

Code :
  1. $days_down = floor($difference/60/60/24) ;
  2. if ($days_down<10) {
  3. $days_down = strval("0".$days_down);
  4. } else {
  5. $days_down = strval($days_down);
  6. }


rajoute un contrôle pour tester si c'est inférieur à 100, et dans ce cas il te faut rajouter un autre 0 devant.
 
Je te donne pas le code tout fait, mais déjà une bonne piste ;)
 
Dans l'état actuel, si tu met un évènement qui se produit dans plus de 100 jours, tu n'aura pas le notice, mais dès qu'on arrive en dessous de cette durée, tu l'as...
 
 
 


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Problème code erreur PHP

 

Sujets relatifs
problème avec drawrectprobleme de frame en HTML.
Probleme création nouveau membreProblème de passage de variables
Problème avec Qt4Concaténation de chaînes, problème avec langues sens d'écriture ≠
Problème PHP/MySQLdevellopeur PHP
problème avec JScrollpane 
Plus de sujets relatifs à : Problème code erreur PHP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR