cacher des message d'erreurs

sophos
Invité n'ayant pas de compte PHPfrance

26 avr. 2006, 16:24

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.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 avr. 2006, 16:44

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... :)

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

26 avr. 2006, 16:51

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
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

sophos
Invité n'ayant pas de compte PHPfrance

26 avr. 2006, 17:11

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:

ant
Eléphant du PHP | 161 Messages

26 avr. 2006, 17:27

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.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 avr. 2006, 18:12

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;

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

27 avr. 2006, 14:10

Apparemment $ligne[] n'a pas de 8e (indice 7) élément.
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.