Merci pour la réponse! Jai fini par y arriver. Jai mis le code dans le même fichier inscription.php. Il y avait avait un détail dans mon code à revoir!
il y a un truc que j'ai pas compris à ce tuto ou alors y'a un bug:
else {
// Changement de nom de variable (plus lisible)
$erreur =& $id_utilisateur;
// On vérifie que l'erreur concerne bien un doublon
if (23000 == $erreur[0]) { // Le code d'erreur 23000 siginife "doublon" dans le standard ANSI SQL
preg_match("`Duplicate entry '(.+)' for key \d+`is", $erreur[2], $valeur_probleme);
$valeur_probleme = $valeur_probleme[1];
if ($nom_utilisateur == $valeur_probleme) {
$erreurs_inscription[] = "Ce nom d'utilisateur est déjà utilisé.";
} else if ($adresse_email == $valeur_probleme) {
$erreurs_inscription[] = "Cette adresse e-mail est déjà utilisée.";
} else {
$erreurs_inscription[] = "Erreur ajout SQL : doublon non identifié présent dans la base de données.";
}
} else {
$erreurs_inscription[] = sprintf("Erreur ajout SQL : cas non traité (SQLSTATE = %d).", $erreur[0]);
}
Dans le preg_match, le /d+ , ça ne serait pas plutôt (/D+)
Tout d'abord, merci Savageman pour la réalisation de ce tuto !
J'ai cependant un petit problème avec l'ajout d'un avatar, lorsque je clic sur "ajouter un avatar", je ne peux pas sélectionner les fichiers jpg, png ou gif. J'ai pourtant précisé les formats pris en compte lors de la création de mon formulaire.
Si quelqu'un peut m'aider à résoudre ce problème...
Voici le code de mon fichier inscription.php
<?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 est déjà connecté
include CHEMIN_VUE_GLOBALE.'erreur_deja_connecte.php';
} else {
// On inclue la librairie Form
include CHEMIN_LIB.'form.php';
$form_inscription = new Form('formulaire_inscription');
$form_inscription->method('POST');
$form_inscription->add('Text', 'nom_utilisateur')
->label("Votre nom d'utilisateur");
$form_inscription->add('Password', 'mdp')
->label("Votre mot de passe");
$form_inscription->add('Password', 'mdp_verif')
->label("Vérification du mot de passe");
$form_inscription->add('Email', 'adresse_email')
->label("Votre adresse email");
$form_inscription->add('File', 'avatar')
->filter_extensions('jpg', 'png', 'gif')
->max_size(8192)
->label("Votre avatar (8kb max)(facultatif)")
->Required(false);
$form_inscription->add('Submit', 'submit')
->label("S'inscrire");
$form_inscription->bound($_POST);
include 'inscriptionController.php';
}
include CHEMIN_VUE.'formulaire_inscription.php';
EDIT : C'est bon problème résolu (c'était une mauvaise configuration de Chrome)
Avant tout, merci Savageman pour la réalisation de ce tuto !
J'ai suivi le tuto en entier mais je rencontre un probleme lors des test sous WAMP, j'ai l'impression que les include ne sont pas appreciés, j'ai des problèmes recurrents de ce type : Warning: include(/controller/modules/client/traitement_inscription.php): failed to open stream: No such file or directory in C:\wamp\www\permis_fute\modules\client\inscription.php on line 54
Je ne comprends pas vraiment car après relecture tous les fichiers semblent être au bon endroit et les appels fonctionnels. Voici la page de mon code d'inscription située ici
monprojet/modules/membres/inscription.php
faisant appel à la vue située ici
monprojet/modules/vues/vue_inscription.php
Voila le code de mon inscription :
<?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 est déjà connecté
include CHEMIN_VUE_GLOBALE.'erreur_deja_connecte.php';
}
else
{
//Ne pas oublier d'inclure la librarie Form
include CHEMIN_LIB.'form.php';
// "formulaire_inscription" est l'ID unique du formulaire
$form_inscription = new Form('formulaire_inscription');
$form_inscription->method('POST');
$form_inscription->add('Text', 'nom_utilisateurclient')
->label("Votre nom d'utilisateur");
$form_inscription->add('Text', 'nom_client')
->label("Votre nom");
$form_inscription->add('Text', 'prenom_client')
->label("Votre prénom");
$form_inscription->add('Date', 'date_naissanceclient')
->label("date de naissance");
$form_inscription->add('Password', 'mdp_client')
->label("Votre mot de passe");
$form_inscription->add('Password', 'mdp_verif')
->label("Votre mot de passe (vérification)");
$form_inscription->add('Email', 'emailclient')
->label("Votre adresse email");
$form_inscription->add('File', 'avatarclient')
->filter_extensions('jpg', 'png', 'gif')
->max_size(8192) // 8 Kb
->label("Votre avatar (facultatif)")
->Required(false);
$form_inscription->add('Submit', 'submit')
->value("validez l'inscription");
// Pré-remplissage avec les valeurs précédemment entrées (s'il y en a)
$form_inscription->bound($_POST);
// Affichage du formulaire
include CHEMIN_VUE.'formulaire_inscription.php';
}
?>
Je suis le tuto sur le mvc seulement j'ai quelques préoccupations
1. est il possible d'integrer d'autres attributs html dans la class form.php tel que le placeholder, la class, l'id, et bien d'autres?
2. lors de la modification du profil d'un membre je recois un message d' erreur qui pointe directement sur la class form, j'ai lu que la classe a été mis à jour, puis-je obtenir le lien?
Comme beaucoup dans ce forum, je ne comprends pas bien où doivent être placés les contrôleurs. J'ai beau relire la première section, je ne vois pas d'explication à ce sujet.
Je bloque sur la partie inscription.
Je ne comprends pas pourquoi dans le formulaire inscription aucune action n'est définie (via la méthode ->action(page.php) par exemple ?).
Lorsque le bouton submit est cliqué, si je ne me trompe pas actuellement rien ne passe (vu qu'aucune action n'est définie)
Je serai donc tenté de définir l'action qui renvoie vers la "page.php" et de mettre dans cette page le contrôleur pour la vérification des données et
Est-ce une bonne approche ? Je ne trouve pas ça hyper propre.
Tout d’abord, merci à Savageman pour son tuto et sa class form qui est très pratique pour coder des formulaires proprement
Je poste car j’utilise cette classe et j’ai besoin de mettre un choix multiple sur un formulaire : un exercice peut avoir plusieurs thèmes (une table avec tous les thèmes existe dans la bdd). Donc je voudrais faire un formulaire d’enregistrement d’un exercice qui propose à l’utilisateur de choisir tous les thèmes auxquels l’exercice serait rattaché.
j’ai essayé de mettre des checkbox et je n’y arrive pas. En HTML, on met des checkbox avec un même "name" (ex : "themes[]") et après la validation du formulaire, on récupère dans $_POST[‘theme’], un tableau avec toutes les valeurs cochées sur lesquelles on peut faire des foreach.
Là, quand j’essaye de créer plusieurs checkbox avec un même name, j’ai un message d’erreur qui me dit en gros que le name doit être unique… J’ai regardé si il y avait pour la classe form_Checkbox une méthode choices comme pour les select mais ce n’est pas le cas :) J’ai vu qu’il y avait des exemples d’utilisation de checkbox dans ce topic mais avec un seul choix donc je ne peux pas m’en inspirer. Si quelqu’un a une idée ou un exemple avec plusieurs choix je suis preneur !!!
En fait je me demande si je dois mettre un élément de type checkbox qui "dessine" à lui tout seul plusieurs cases à cocher (et dans ce cas là : comment le spécifier dans le code ?) ou si je dois mettre un élément checkbox par thème (et dans ce cas, comment gérer le fait que le name est censé être identique alors que la classe form impose qu’il soit unique)
Mes projets : WhoisRedJohn, fatidique et MusicAll. Mon Github
Mes projets : WhoisRedJohn, fatidique et MusicAll. Mon Github