Problème d'arrays

Résolu/Fermé
guigui777 Messages postés 75 Date d'inscription mardi 27 octobre 2009 Statut Membre Dernière intervention 9 janvier 2012 - Modifié par guigui777 le 2/02/2011 à 10:09
guigui777 Messages postés 75 Date d'inscription mardi 27 octobre 2009 Statut Membre Dernière intervention 9 janvier 2012 - 5 févr. 2011 à 20:05
Bonjour,

Salut à tous,
je viens auprès de vous solliciter la résolution d'un problème php sur le quel je plante depuis un moi.Il s'agit de la construction de formulaire à partir d'une classe php odnc les instruction sont envoyé à la classe sous forme de tableau.
Voici ci bas le code source de script .Le problème se situe très probablement au niveau du arrays car le tableau semble vide:

<?php 

// Vérification des droits d'accès de la page 
if (!utilisateur_est_connecte()) { 

 // On affiche la page d'erreur comme quoi l'utilisateur doit être connecté pour voir la page 
 include_once CHEMIN_VUE_GLOBALE.'erreur_non_connecte.php'; 
  
} else { 
  
 // Ne pas oublier d'inclure la librairie Form 
 include_once CHEMIN_LIB.'form.php'; 
  
 // "form_modif_infos" est l'ID unique du formulaire 
 $form_modif_infos = new Form("form_modif_infos"); 
  
 $form_modif_infos->method('POST'); 
  
 $form_modif_infos->add('Email', 'adresse_email') 
                         ->label("Votre adresse email") 
                         ->Required(false) 
                         ->value($_SESSION['email']); 
  
 $form_modif_infos->add('Checkbox', 'suppr_avatar') 
                         ->label("Je veux supprimer mon avatar") 
                         ->Required(false); 
  
 $form_modif_infos->add('File', 'avatar') 
                         ->filter_extensions('jpg', 'png', 'gif') 
                         ->max_size(8192) // 8 Kb 
                         ->label("Votre avatar (facultatif)") 
                         ->Required(false); 
  
 $form_modif_infos->add('Submit', 'submit') 
                         ->initial("Modifier ces informations !"); 
  
 // "form_modif_mdp" est l'ID unique du formulaire 
 $form_modif_mdp = new Form("form_modif_mdp"); 
  
 $form_modif_mdp->method('POST'); 
  
 $form_modif_mdp->add('Password', 'mdp_ancien') 
                       ->label("Votre ancien mot de passe"); 
  
 $form_modif_mdp->add('Password', 'mdp') 
                       ->label("Votre nouveau mot de passe"); 
  
 $form_modif_mdp->add('Password', 'mdp_verif') 
                       ->label("Votre nouveau mot de passe (vérification)"); 
  
 $form_modif_mdp->add('Submit', 'submit') 
                       ->initial("Modifier mon mot de passe !"); 
  






 ////////////////////////////////////////////////////////
// Création des tableaux des erreurs (un par formulaire) 
 $erreurs_form_modif_infos = array(); 
 $erreurs_form_modif_mdp   = array(); 
  
 // et d'un tableau des messages de confirmation 
 $msg_confirm = array(); 
 var_dump($erreurs_form_modif_infos); 
/////////////////////////////////////////////////////
////////////////////////////////////////////////////
  





 // Validation des champs suivant les règles en utilisant les données du tableau $_POST 
 if ($form_modif_infos->is_valid($_POST)) { 
  
  list($adresse_email, $suppr_avatar, $avatar) = $form_modif_infos->get_cleaned_data('adresse_email', 'suppr_avatar', 'avatar'); 
  
  // On veut utiliser le modèle de l'inscription(~/modules/membres.php) 
  include_once CHEMIN_MODELE.'membres.php'; 
  
  // Si l'utilisateur veut modifier son adresse e-mail 
  if (!empty($adresse_email)) { 
  
   $test = maj_adresse_email_membre($_SESSION['id'], $adresse_email); 
  
   if (true === $test) { 
  
    // Ça a marché, trop cool ! 
    $msg_confirm[] = "Adresse e-mail mise à jour avec succès !"; 
  
   // Gestion des doublons 
   } else { 
  
    // Changement de nom de variable (plus lisible) 
    $erreur =& $test; 
  
    // On vérifie que l'erreur concerne bien un doublon 
    if (23000 == $erreur[0]) { // Le code d'erreur 23000 signifie "doublon" dans le standard ANSI SQL 
  
     preg_match("'Duplicate entry '(.+)' for key \d+'is", $erreur[2], $valeur_probleme); 
     $valeur_probleme = $valeur_probleme[1]; 
  
     if ($adresse_email == $valeur_probleme) { 
  
      $erreurs_form_modif_infos[] = "Cette adresse e-mail est déjà utilisée."; 
  
     } else { 
  
      $erreurs_form_modif_infos[] = "Erreur ajout SQL : doublon non identifié présent dans la base de données."; 
     } 
  
    } else { 
  
     $erreurs_form_modif_infos[] = sprintf("Erreur ajout SQL : cas non traité (SQLSTATE = %d).", $erreur[0]); 
    } 
  
   } 
  } 
  
  // Si l'utilisateur veut supprimer son avatar... 
  if (!empty($suppr_avatar)) { 
  
   maj_avatar_membre($_SESSION['id'], ''); 
   $_SESSION['avatar'] = ''; 
  
   $msg_confirm[] = "Avatar supprimé avec succès !"; 
  
  // ... ou le modifier ! 
  } else if (!empty($avatar)) { 
  
   // On souhaite utiliser la librairie Image 
   include_once CHEMIN_LIB.'image.php'; 
  
   // Redimensionnement et sauvegarde de l'avatar 
   $avatar = new Image($avatar); 
   $avatar->resize_to(100, 100); // Image->resize_to($largeur_maxi, $hauteur_maxi) 
   $avatar_filename = DOSSIER_AVATAR.$id_utilisateur .'.'.strtlower(pathinfo($avatar->get_filename(), PATHINFO_EXTENSION)); 
   $avatar->save_as($avatar_filename); 
  
   // On veut utiliser le modèle des membres (~/modules/membres.php) 
   include_once CHEMIN_MODELE.'membres.php'; 
  
   // Mise à jour de l'avatar dans la table 
   // maj_avatar_membre() est définit dans ~/modules/membres.php 
   maj_avatar_membre($_SESSION['id'] , $avatar_filename); 
   $_SESSION['avatar'] = $avatar_filename; 
  
   $msg_confirm[] = "Avatar modifié avec succès !"; 
  } 
  
 } else if ($form_modif_mdp->is_valid($_POST)) { 
  
  // On vérifie si les 2 mots de passe correspondent 
  if ($form_modif_mdp->get_cleaned_data('mdp') != $form_modif_mdp->get_cleaned_data('mdp_verif')) { 
  
   $erreurs_form_modif_mdp[] = "Les deux mots de passes entrés sont différents !"; 
  
  // C'est bon, on peut modifier la valeur dans la BDD 
  } else { 
  
  
   // On veut utiliser le modèle de l'inscription (~/modules/membres.php) 
   include_once CHEMIN_MODELE.'membres.php'; 
   maj_mot_de_passe_membre($_SESSION['id'], $mdp); 
  
   $msg_confirm[] = "Votre mot de passe a été modifié avec succès !"; 
  } 
  
 } 
} 

// Affichage des formulaires de modification du profil 
include_once CHEMIN_VUE.'formulaires_modifier_profil.php';

Je lai tester avec var_dump mais il m'affiche de problème du genre
Warning: Invalid argument supplied for foreach() in C:\wamp\www\mvc\libs\form.php on line 258
Form étant le nom e la class que j'utilise.Merci à tous

4 réponses

Tu es conscient qu'on ne va pas compter toutes tes lignes pour (peut être) trouver laquelle est la 258ème ?
0
guigui777 Messages postés 75 Date d'inscription mardi 27 octobre 2009 Statut Membre Dernière intervention 9 janvier 2012 8
2 févr. 2011 à 10:12
JE VIENS DE MODIFIER MON POST pour afficher clairement les ligne qui clochent.Elles sont différentiés par des "////" que je mis tout autour avec des espace.Merci à vous
0
Bonsoir,
-------------------------------------------------------------------------------------------------------------------------------------------------
Je lai tester avec var_dump mais il m'affiche de problème du genre
Warning: Invalid argument supplied for foreach() in C:\wamp\www\mvc\libs\form.php on line 258
Form étant le nom e la class que j'utilise.Merci à tous
-------------------------------------------------------------------------------------------------------------------------------------------------
Le problème se situe dans ton fichier de classe form.php à la ligne 258 et dans une boucle foreach donc cherche dans ce fichier et pas dans celui présenté dans ton post initial...
0
guigui777 Messages postés 75 Date d'inscription mardi 27 octobre 2009 Statut Membre Dernière intervention 9 janvier 2012 8
5 févr. 2011 à 20:05
salut à tous j'ai pu voir le problème.il s'agissait d'un arrays mal construit dans le tuto lors de l'affichage du formulaire.Merci d'avoir pris du temps pour me répondre
0