Page 1 sur 2
Nombre des erreurs s'affiche sans les erreurs
Posté : 02 juin 2011, 04:55
par rimie
bonjour,
je fais une verification des champs avec une fonction, le nombre des erreurs s'affichent meme s'il n y a pas une erreur:
<?php
$this->error [] = '<li>La valeur '.$value.' ne correspond pas a la clef '.$key.'</li>;
return false;
public final function getError(){
$ret_err = ''; // ret_err a rien
if(count($this->error)>0)
{
echo '<br>nbre d\'erreurs est: '.count($this->error).'<br>';
var_dump($this->error).'<br>';
foreach($this->error as $erreur)// on loop pour chercher les erreurs
{
$ret_err .= $erreur; // on les recupere
}
echo '<br><hr width="200"><br>';
echo '<font color="red"><b>Veuillez verifier les erreurs ci-dessous:</b></font><br>';
echo '<ul>';
echo $ret_err;
echo '</ul>';
}
}
?>
et le resultat de var_dump:
nbre d'erreurs est: 6
array(6) { [0]=> NULL [1]=> NULL [2]=> NULL [3]=> NULL [4]=> NULL [5]=> NULL }
merci pour votre aide
Re: Nombre des erreurs s'affiche sans les erreurs
Posté : 02 juin 2011, 10:22
par Ryle
C'est parce que tu ne comptes pas le nombre d'erreur, mais le nombre d'éléments dans le tableau...
Le plus simple serait donc que lorsqu'un de tes tests ne retourne pas d'erreur, tu n'ajoutes rien dans le tableau (au lieu d'ajouter un null)
Re: Nombre des erreurs s'affiche sans les erreurs
Posté : 03 juin 2011, 02:45
par rimie
C'est parce que tu ne comptes pas le nombre d'erreur, mais le nombre d'éléments dans le tableau...
Le plus simple serait donc que lorsqu'un de tes tests ne retourne pas d'erreur, tu n'ajoutes rien dans le tableau (au lieu d'ajouter un null)
meme si j'ai ajoute un return false pour ne pas la considerer etant une erreur
si j'ai bien compris voila le code, mais ca marche pas
if($this->error === true)
{
foreach($this->error as $erreur)// on loop pour chercher les erreurs
{
$ret_err .= $erreur; // on les recupere
}
echo '<br><hr width="200"><br>';
echo '<font color="red"><b>Veuillez verifier les erreurs ci-dessous:</b></font><br>';
echo '<ul>';
echo $ret_err;
echo '</ul>';
}
}
Re: Nombre des erreurs s'affiche sans les erreurs
Posté : 06 juin 2011, 04:13
par rimie
est ce que vous pouvez m'expliquer le methode a utiliser afin de le resoudre?
merci
Re: Nombre des erreurs s'affiche sans les erreurs
Posté : 06 juin 2011, 07:59
par xTG
if($this->error === true)
N'est-ce pas un array ? Pourquoi tester un booléen ?
Re: Nombre des erreurs s'affiche sans les erreurs
Posté : 07 juin 2011, 02:48
par rimie
if($this->error === true)
N'est-ce pas un array ? Pourquoi tester un booléen ?
if (is_array($this->error) && (count($this->error)>0))
ca me retourne la meme chose sans citer qu'il y ait des erreurs
nbre d'erreurs est: 5
Veuillez verifier les erreurs ci-dessous:
Re: Nombre des erreurs s'affiche sans les erreurs
Posté : 07 juin 2011, 08:13
par xTG
Et quel est ton code pour logguer les erreurs ?
Car à priori il log n'importe quoi (cf NULL).
Re: Nombre des erreurs s'affiche sans les erreurs
Posté : 07 juin 2011, 15:30
par rimie
Et quel est ton code pour logguer les erreurs ?
Car à priori il log n'importe quoi (cf NULL).
le voila:
$this->error [] = '<li>La valeur '.$value.' ne correspond pas a la clef '.$key.'</li>;
return false;
Re: Nombre des erreurs s'affiche sans les erreurs
Posté : 07 juin 2011, 22:15
par Ryle
Je sais qu'en général on râle parce qu'il y a trop de code, mais là, c'est un peu court jeune homme
La question est surtout : qu'est ce que tu mets dans ce tableau quand tu n'as pas d'erreur ? En effet, il semblerait que tu colles des null dedans alors qu'il ne faudrait rien ajouter pour éviter de comptabiliser des erreurs qui n'existent pas...
Re: Nombre des erreurs s'affiche sans les erreurs
Posté : 08 juin 2011, 04:37
par rimie
voila des exemples:
$this->error[] = '<li>The function <font color="red"><b>'.$fname.'</b></font> does NOT exists in '.__CLASS__.' class</li>';
return false;
if(($this->InptType == 'radio') OR ($this->InptType == 'checkbox'))
{
$this->error [] = (empty($this->InptValue)) ? '<li>The value for the '.$this->InptType.' is a MUST</li>' : Null;
}
if(!in_array($this->InptType, $this->InptTypesArray))
{
$this->error[] = '<li><b>'.$this->InptType.'</b> is NOT a valid type, please choose one of the following types: <b>'.implode(', ',$this->InptTypesArray).'</b>.';
return false;
}
Re: Nombre des erreurs s'affiche sans les erreurs
Posté : 08 juin 2011, 07:58
par xTG
$this->error [] = (empty($this->InptValue)) ? '<li>The value for the '.$this->InptType.' is a MUST</li>' : Null;
S'il n'y pas d'erreur pourquoi mettre null ?
if(empty($this->InptValue))
$this->error [] = '<li>The value for the '.$this->InptType.' is a MUST</li>';
Re: Nombre des erreurs s'affiche sans les erreurs
Posté : 08 juin 2011, 11:52
par rimie
on ne peut pas la mettre de cette maniere:
$this->error [] = (empty($this->InptValue)) ? '<li>The value for the '.$this->InptType.' is a MUST</li>' : Null;
Re: Nombre des erreurs s'affiche sans les erreurs
Posté : 08 juin 2011, 21:24
par Ryle
Tu peux... Mais vu que cela ne fonctionne pas, ça vaut peut être le coup d'essayer la suggestion de xTG
Le problème, c'est que "null", c'est quelque chose. Quelque chose qui n'est pas initialisé, mais c'est quelque chose. Du coup quand tu comptes le nombre d'erreurs contenue dans ton tableau, chaque null est comptabilisé comme une erreur..
Si tu ne mets rien (et mettre null, c'est mettre quelque chose) dans ton tableau quand il n'y a pas d'erreur le reste de ton code devrait fonctionner sans problème...
Re: Nombre des erreurs s'affiche sans les erreurs
Posté : 09 juin 2011, 03:46
par rimie
sinon cette methode:
if(is_array($this->error))
{
foreach($this->error as $eK=>$eV)
{
if($eV != Null)
{
echo '<br><hr width="200"><br>';
echo '<br>nbre d\'erreurs est: '.count($eV).'<br>';
echo '<font color="red"><b>Veuillez verifier les erreurs ci-dessous:</b></font><br>';
echo '<ul>'; //<font color="#FF00EE">
echo $eV; // on les affiche
echo '</ul>'; //</font>
}
}
}
Re: Nombre des erreurs s'affiche sans les erreurs
Posté : 09 juin 2011, 04:57
par devlop78
Non, tu détournes le problème ...
Le principe du tableau d'erreurs, est de lister les erreurs. Si tu mets null, c'est qu'il n'y pas d'erreurs, et ça perd du coup tout son sens logique. Ca marche, ça marchera, mais c'est pas propre. Là c'est vraiment un problème de conception.