Page 1 sur 1

cacher des message d'erreurs

Posté : 26 avr. 2006, 16:24
par sophos
Bonjour,

En tant que gros nul en prog je souhaiterai cacher a mon chef, deux messages d'erreurs, que je n'arrive pas a regler.
Il y a t-il une fonction qui permette de les cachers, ces messages ?

Ou alors peut etre pouvait vous m'aider à resoudre ces foutus messages lol

Notice: Undefined offset: 7 in c:\program files\easyphp1-8\www\processus\choixserveur.php on line 25

Notice: Undefined offset: 4 in c:\program files\easyphp1-8\www\processus\choixserveur.php on line 31
<?
.
.
.
20 $fic = fopen('../processus/task.csv','r');
21 echo "<table border='1'>\n";
22 $l=0;
23 for ($ligne = fgetcsv($fic,4096,','); !feof($fic); $ligne =  fgetcsv($fic,4096,',')){
24 echo "<tr>";
25 $mac[] = $ligne[7];
26   $j = sizeof($ligne);
27   for ($i = 0; $i < $j; $i++) {
28  	$ligne2=str_replace($label,$label2,$ligne[$i]);
29    echo "<td> $ligne2 </td>";
30     }
31    $temp = str_replace($label,$label2,$ligne[4]);
32  	$temp2 = substr($temp,0,strlen($temp)-2);
33 	 if(($temp2>5000)&& ($temp2<10000)){
34		$clan = str_replace($label,$label2,$ligne[4]);
35		echo "<font color='#CC9933'>";
36  	    echo "le processus $ligne[0] utilise plus de 5 Mo de memoire vive($clan)<br>";
37  	    echo "</font>";
38    	}
?>
Voila pourtant le code fonctionne, les valeures ne sont ni trop grandes ni trop petites, enfin je ne sais vraiment pas du tout d'ou cela peut venir.

Posté : 26 avr. 2006, 16:44
par Ryle
Hello,

Il y a bien des solutions pour cacher ses erreurs en php, mais dans la mesure où tu n'apprécierais probablement pas que d'autres le fasse dans la vie de tous les jours (un plombier laissant l'eau s'écouler dans ton mur, un serveur redécorant ton plat qu'il a fait tomber en cuisine, etc.) autant essayer de bosser proprement et de les éviter plutot que d'attendre la catastrophe ;)

Ton erreur vient du fait que tes élément 4 et 7 de ton tableau $ligne ne sont pas définis dans certains cas, ou à priori dans un cas bien particulier... il te suffit donc de le trouver et de l'isoler, ou bien simplement de tester si les valeurs que tu veux utiliser existent bien... :)

Posté : 26 avr. 2006, 16:51
par mere-teresa
Effectivement, mieux vaut régler les problèmes.
En même temps, en production, ton application ne doit pas laisser d'erreurs apparaître, pour ne pas montrer ses éventuelles failles : ce que tu cherches est là http://fr3.php.net/manual/fr/function.e ... orting.php

cacher des message d'erreurs

Posté : 26 avr. 2006, 17:11
par sophos
Merci,

Je le sais bien que laisser une erreur c'est etre archi pas bon dans son travail mais la j'ai tourner, retourner le probleme rien a y faire, je ne trouve pas donc en attendans j'utilise la methode de mere theresa, qui marche du feu de dieu. :lol:

Posté : 26 avr. 2006, 17:27
par ant
Tu caches cette erreur mais ca va multiplier ton problème avec autant d'erreurs potentielles qui vont découler des premières.

D'autant que tu effectues des tests conditionnels sur une variable potentiellement fausse, ce qui risque de rendre le comportement de ton application complètement hasardeux.

En production, si ton patron s'en appercoit et que ton appli plante et que tu ne sais pas lui expliquer pourquoi, ca risque d'être fun.

Posté : 26 avr. 2006, 18:12
par Ryle
Je rejoint un peu ant sur ce point, si tu caches les erreurs ou les warnings, pour débugger en cas de problème, c'est assez coton :)

donc avant de bidouiller la config définie par le serveur, essaie peut être de remplacer ton for() par un while(), pour ne pas avoir de soucis avec la dernière ligne :
while (!feof($fic)){ 
  $ligne = fgetcsv($fic,4096,',');
  ...
}
Actuellement, avec le for, tu vas lire une fois de trop le fichier :
for($i=0; $i<=4 ; $i++) // à la sortie de ta boucle, $i est égal à 5, car il a été augmenté une fois de trop jusqu'à ce que la condition soit fausse
Et éventuellement tester si les valeurs que tu utilises existent (tu le fais probablement déjà avec $_POST ou $_GET) :
$mac = isSet($ligne[7]) ? $ligne[7] : NULL;

Posté : 27 avr. 2006, 14:10
par mere-teresa
Apparemment $ligne[] n'a pas de 8e (indice 7) élément.