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

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Erreur: Cannot use a scalar value as an array

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Erreur: Cannot use a scalar value as an array

n°1656171
real_matho​s
Posté le 10-12-2007 à 23:26:10  profilanswer
 

Salut,
j'ai un problème avec une de mes fonctions. Elle permet de vérifier les valeurs d'un formulaire en fonction de leur type. Je gère le fait qu'un type d'erreur ne doit aparaîtr qu'une seule fois par un tableau $erreur['type_erreur'] dont la case correspondant au type de l'erreur détectée est positionnée à true dès qu'une de ces erreurs apparaît. Ca fonctionne si un seul type d'erreur, mais dès qu'un deuxième type d'erreur apparaît, j'ai une erreur de php "Cannot use a scalar value as an array". Voilà le code:

Code :
  1. function valider_var($chaine, $type, $erreur=array())
  2.    {
  3.    if ($erreur==array())
  4.       $erreur = array('texte' => false, 'nom' => false, 'nombre' => false, 'url' => false, 'date' => false);
  5.    debug($erreur);
  6.    if (($type==FTEXTE) && (!preg_match("/[-a-zA-Z_0-9\.]*/", $chaine)))
  7.       {
  8.       if (!$erreur['texte'])
  9.          {
  10.          passer_message_info("Attention: les textes ne doivent contenir que des lettres, chiffres ou les caractères spéciaux suivants: '.', '-', '_'.", INFO);
  11.          $erreur['texte'] = true;
  12.          return false;
  13.          }
  14.       }
  15.    if (($type==FNOM) && (!preg_match("/[a-zA-Z]+[-a-zA-Z_0-9\.]*[a-zA-Z0-9]+/", $chaine)))
  16.       {
  17.       if (!$erreur['nom'])
  18.          {
  19.          passer_message_info("Attention: les noms doivent commencer obligatoirement par une lettre, terminer par une lettre ou un chiffre, et ne contenir que des lettres, chiffres ou les caractères spéciaux suivants: '.', '-', '_'.", INFO);
  20.          $erreur['nom'] = true;
  21.          return false;
  22.          }
  23.       }
  24.    elseif (($type==FNOMBRE) && !is_numeric($chaine))
  25.       {
  26.       if (!$erreur['nombre'])
  27.          {
  28.          passer_message_info("Attention: les id et les années ne doivent être composés que de chiffres.", INFO);
  29.          $erreur['nombre'] = true;
  30.          return false;
  31.          }
  32.       }
  33.    elseif (($type==FURL) && (!preg_match('#^(http://)([-a-z0-9\._])+\.[a-z]{2,6}(/[-a-z0-9\._]*)*#i', $chaine)))
  34.       {
  35.       if (!$erreur['url'])
  36.          {
  37.          passer_message_info("Attention: les adresses http doivent être de la forme: http://url.ext .", INFO);
  38.          $erreur['url'] = true;
  39.          return false;
  40.          }
  41.       }
  42.    elseif (($type==FDATE) && (!preg_match('.^([0-2][0-9]|3[0-1])[/-](0[1-9]|1[0-2])[/-][1-2]([0-9]){3}$.', $chaine)))
  43.       {
  44.       if (!$erreur['date'])
  45.          {
  46.          passer_message_info("Attention: les dates doivent être entrées au format jj/mm/aaaa ou jj-mm-aaaa.", INFO);
  47.          $erreur['date'] = true;
  48.          return false;
  49.          }
  50.       }
  51.    return true;
  52.    }


 
J'appelle la fonction comme ceci:
 

Code :
  1. foreach ($var_formulaire as $nom_champs)
  2.          {
  3.          if ($valeurs_champs[$i] = traiter_var($_POST[$nom_champs], 0, true))
  4.                 {
  5.                 if (!valider_var($valeurs_champs[$i], $types_formulaire[$i], $erreur))
  6.                       $erreur=true;
  7.                 }
  8.           $i++;
  9.           }


 
Est-ce que quelqu'un aurait une idée de comment résoudre ce problème?
Merci d'avance!

mood
Publicité
Posté le 10-12-2007 à 23:26:10  profilanswer
 

n°1656271
FlorentG
Unité de Masse
Posté le 11-12-2007 à 09:28:10  profilanswer
 

Euh... C'est quelle ligne exactement qui provoque l'erreur ?

n°1656405
real_matho​s
Posté le 11-12-2007 à 11:18:19  profilanswer
 

Salut,
l'erreur porte toujours sur une des lignes " $erreur['type_erreur'] = true; ", mais cela se produit seulement lors de l'apparition de plusieurs erreurs (donc lorsqu'il doit modifier plusieurs cellules du tableau).

n°1656408
FlorentG
Unité de Masse
Posté le 11-12-2007 à 11:20:52  profilanswer
 

On veut la ligne précise, ce sera mieux ;) ;)

n°1656470
sielfried
Posté le 11-12-2007 à 12:24:03  profilanswer
 

- ton $erreur n'est pas défini la première fois que t'appelles valider_var ;
- tu lui donnes "true" comme valeur alors que ta fonction veut un array ;
- pour savoir si ton array est vide tu as count($array) == 0 ;
- etc...


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar

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

  [PHP] Erreur: Cannot use a scalar value as an array

 

Sujets relatifs
[PHP] Variable non définie ?!erreur avec une macro d'excel
Calculer la date d'il y a 30 jours en PHPerreur code
Probleme Free et scripts de news PHP[Resolu] Php + plusieurs bases Access
erreur code jeu de nombre[HTML]/[PHP] Formulaire boutons radios et onclick
L'erreur qui n'existe pas ! enorme ![RESOLU] Pb avec librairie GD sur PHP 4.4.2
Plus de sujets relatifs à : [PHP] Erreur: Cannot use a scalar value as an array


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