Partage
  • Partager sur Facebook
  • Partager sur Twitter

[TUTO] MVC, bonnes pratiques et site complet !

Espace membres - À venir : livre d'or, news, etc.

20 janvier 2009 à 18:41:38

Roooh, faut jamais donner une réponse toute crue comme ca... Il apprendra jamais sinon :-°. 'Suffisait juste de réviser un peu ses bases SQL pour voir que la parenthèse fermante en trop était l'avant dernière... Ce qui amenait, aussi, une virgule en trop.
  • Partager sur Facebook
  • Partager sur Twitter
Mon profil Github - Zeste de Savoir, pour la beauté du zeste
20 janvier 2009 à 19:24:57

Bonsoir, j'ai encore trouvé des problèmes chouette :D
alors /modules/membres/modifier_profil.php et /modules/membres/inscription.php
la fonction strtlower() n'existe pas, en revanche strtolower() oui;
Dans un précédent post je disais que la mise ajour des infos ne marche pas, en fait il faut supprimer
$form_modif_infos->fieldsets("Modification de l'e-mail et de l'avatar" , array('adresse_email', 'suppr_avatar', 'avatar'));
et
$form_modif_mdp->fieldsets("Modification du mot de passe" , array('mdp_ancien', 'mdp', 'mdp_verif'));

mais ce n'est pas tout

Citation : Lyrke

- Partie "Fonctions du modèle membres"
Tu parles de la fonction maj_email_membre à créer mais dans le script tu utilises maj_adresse_email_membre.
- Partie ~/modules/membres/modifier_profil.php
Peut-être mettre les formulaires en POST


En effet il faut rajouter
$form_modif_infos->method('POST');
et
$form_modif_mdp->method('POST');

en plus de changer le nom de la fonction
J'ai en plus un bug que je n'avais pas remarquer depuis le début : mes images sont enregistrées sous le format .tmp est-ce du à WAMP ?
Voilà bon courage pour la suite ^^
  • Partager sur Facebook
  • Partager sur Twitter
20 janvier 2009 à 20:59:12

@Talus : Oui tu as raison mais sur le coup j'ai pas pensé à ca ^^' .
@marc38gt : Moi j'ai rajouter les post mais je conseillais de l'indiquer dans le tuto ^^ .
Et pour les fiedsets, la syntaxe correcte est celle ci :
<?php
$form_modif_infos->fieldsets(array("Modification de l'e-mail et de l'avatar" => array('adresse_email', 'suppr_avatar', 'avatar')));
$form_modif_mdp->fieldsets(array("Modification du mot de passe" => array('mdp_ancien', 'mdp', 'mdp_verif')));


Pour les avatars il y a d'autres problèmes, on peut par exemple citer le .tmp qui ne doit pas être normal, surement du fau faite qu'on récupère l'extension du fichier temporaire créé à l'upload.
Autre chose est l'affichage de l'avatar dans le profil, on enregistre l'avatar sous la forme "images/avatar/X.EXT" et on l'affiche avec DOSSIER_AVATAR . urlencode($avatar), ce qui donne un chemin de ce style : "images/avatar/images%2Favatars%2F1.tmp" par exemple (/ -> %2f via urlencode).

Lyrke
  • Partager sur Facebook
  • Partager sur Twitter
20 janvier 2009 à 21:27:54

Tout a fait Lyrke, il suffit simplement de mettre
<img class="flottant_droite" src="<?php echo $avatar; ?>"
ou peut-être plus sécurisé :
<img class="flottant_droite" src="<?php echo htmlspecialchars($avatar); ?>
comme cela est fait dans le fichier global/menu.php

SAVAGEMAN à quand la correction du turoriel ? ;)
  • Partager sur Facebook
  • Partager sur Twitter
21 janvier 2009 à 3:06:26

Bonjour,

Merci beaucoup à celui (ou ceux) qui a créé ce tutoriel. Vraiment très intéressant et enrichissant. J'ai un peu de mal à me mettre dans le bain mais je pense avoir compris le fonctionnement (c'est déjà pas mal :D ).

Par contre, je rencontre un problème depuis plus d'un quart d'heure et j'ai beau avoir retourné tout Google et toute la doc PHP, je ne trouve pas de réponse :

Dans ma page modules/membres/afficher_profil.php, il y a 4 erreurs lié à la fonction list et l'array :

Citation : afficher_profil.php

Notice: Undefined offset: 4 in D:\wamp\www\Coffe Shop\modules\membres\afficher_profil.php on line 21

Notice: Undefined offset: 3 in D:\wamp\www\Coffe Shop\modules\membres\afficher_profil.php on line 21

Notice: Undefined offset: 2 in D:\wamp\www\Coffe Shop\modules\membres\afficher_profil.php on line 21

Notice: Undefined offset: 0 in D:\wamp\www\Coffe Shop\modules\membres\afficher_profil.php on line 21



Et ma vue profil_infos_utilisateur.php, ne peut afficher chacune des variables ($nom_utilisateur, $email, etc).

J'ai un peu fouiné et n'ait pas trouvé de "mauvaise" utilisation de la fonction list, l'array de $infos_utilisateur; est bien présent aussi. Cependant, après la ligne de code

Citation : afficher_profil.php

list($pseudo, , $mail, $avatar, $date_inscription, ) = $infos_utilisateur;



Aucune des $pseudo, $mail, etc. n'a de valeurs et je ne peux afficher mes valeurs qu'avec $infos_utilisateur['...'].

Seriez-vous m'aider ? Merci d'avance..
  • Partager sur Facebook
  • Partager sur Twitter
21 janvier 2009 à 7:53:11

Salut Tyl0x,
Comme je le disais dans un topic précédent, list ne fonctionne qu'avec un array numéroté, tu dois donc trouver un moyen de retourner un array numéroté avec PDO et pas un array associatif, mais fait attention que les 2 doivent être possible en fonction des cas (par exemple la connexion utilise un array associatif).

(Infos tiré de la doc pour list).

Lyrke
  • Partager sur Facebook
  • Partager sur Twitter
22 janvier 2009 à 19:59:26

D'abors merci beaucoup pour ce tutoriel il en manquer vraiment un au siteduzero.

Je me retrouve Bloqué au 3 éme chapitre "Les classes utilisées dans ce tutoriel " alors j'ai récuperer le code source de form.php etc ...
Et dés que je veux lancer le code donner dans le tutoriel j'ai cette ereur :

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/php/libs/form.php on line 6
  • Partager sur Facebook
  • Partager sur Twitter
22 janvier 2009 à 21:13:38

PHP4 c'est mal.
  • Partager sur Facebook
  • Partager sur Twitter
Mon profil Github - Zeste de Savoir, pour la beauté du zeste
22 janvier 2009 à 22:55:07

Merci pour ta réponse je vient de faire la mise à jour et maintenant sa marche.
Sauf que un nouveau problème vient de faire son apparition à la fin du tutoriel à la fin du chapitre 3 j'ai cet erreur
Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /opt/lampp/htdocs/mvc/libs/index.php on line 16

EDIT : Pour Info Ma version actuelle de PHP est la PHP 5.2.8
REDIT : Le problème venait d'un point virgule en plus.
  • Partager sur Facebook
  • Partager sur Twitter
23 janvier 2009 à 11:18:10

Encore une je me retrouve bloqué devant un autre problème cette fois ci sa concerne la partie "Modification du menu et des droits d'accès" j'ai bien suivi toutes les etapes quand je me connecte sa me dit que je me suis connecté mais je n'ai pas de changement au niveau du menu.

Merci D'avance.
  • Partager sur Facebook
  • Partager sur Twitter
23 janvier 2009 à 12:38:45

@Darma : Pour la vérification utilisateur_est_connecte(), il y a un bug, vérifie la variable $_SESSION['id'], logiquement elle est vide car à la connexion on ne récupère pas l'id dans la requête SQL, donc modifie la requête pour qu'elle retourne aussi l'id ^^
  • Partager sur Facebook
  • Partager sur Twitter
23 janvier 2009 à 17:47:07

Bonjour à tous
Je voulais revenir sur le problème avec la fonction list. Il suffit d'utiliser PDO::FETCH_BOTH qui retourne un tableau indexé par les noms de colonnes (PDO::FETCH_ASSOC) mais aussi par les numéros de colonnes (PDO::FETCH_NUM)(commençant à l'indice 0), comme retournés dans le jeu de résultats.
EDIT : je voulais juste prévenir que PDO::FETCH_BOTH ne doit être utilisé seulement en cas de double utilisation car le fait de générer deux tableaux ralentit un peu l'éxécution.
@Savageman j'ai une question sur ta classe form : est-il possible de faire apparaître un label pour les inputs d'attribut 'hidden' ?
A +
  • Partager sur Facebook
  • Partager sur Twitter
23 janvier 2009 à 18:59:54

Ben autant utiliser que FETCH_ROW alors... car ca ne sert à rien d'avoir un tableau deux fois plus gros, si on risque pas de se servir de l'un ou l'autre...
  • Partager sur Facebook
  • Partager sur Twitter
Mon profil Github - Zeste de Savoir, pour la beauté du zeste
23 janvier 2009 à 19:12:42

Heu... Pour les label sur hidden, je sais pas trop. C'est pas vraiment prévu pour, même si ça doit fonctionner... =) Essaye.
  • Partager sur Facebook
  • Partager sur Twitter
23 janvier 2009 à 19:16:41

Non désolé ils ne s'affichent pas, en fait je voulais me servir de ça pour mon livre d'or : si l'utilisateur n'est pas connecté alors on lui demande de remplir tous les champs : pseudo, mail..
si il est connecté alors il n'a pas besoin de remplir ces champs, c'est pour ça que je voulais utiliser un input hidden avec un label : ca afficherait son pseudo sans pour autant qu'il est besoin de le redonner et avec un petit bidouillage ca éviterait qu'un simple visiteur mette le même pseudo qu'un membre.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
23 janvier 2009 à 19:32:39

Citation : marc38gt

ca afficherait son pseudo sans pour autant qu'il est besoin de le redonner et avec un petit bidouillage ca éviterait qu'un simple visiteur mette le même pseudo qu'un membre.



Nope c'est pas une bonne technique ça, tout les champs peuvent être d'une manière ou d'une autre modifiés. Never trust user input, tu t'attends à ce que ton input radio renvoie 1 ou 0 en fonction du sexe du membre, mais en réalité il peut valoir "blabla". Donc dans ton cas, un membre peut très bien changer son nom pour se faire passer pour quelqu'un d'autre.
  • Partager sur Facebook
  • Partager sur Twitter
23 janvier 2009 à 19:35:04

Merci bien, ta classe regorge de surprise ^^, j'avais jamais essayé l'option disabled dans un input, manque d'expérience :p
T'as raison @TheDead Master alors pour différencier de manière sécurisée les membres des visiteurs je peux mettre le pseudo entre crochet.
@savageman j'attends avec impatience le code de ton livre d'or ^^
  • Partager sur Facebook
  • Partager sur Twitter
24 janvier 2009 à 16:16:13

hop (=bonjour ^^ ),
petit problème avec la connexion auto :
j'avais pas le label mais j'ai pu corriger grâce à Ouzmoutous, cependant il reste toujours un problème :
quand je ne coche pas la connexion auto et que j'essaye de me connecter çà me met : "Ce champ est obligatoire."
Pas pratique n'est-ce pas ^^
Quelqu'un saurait-il régler çà svp ?

Ah eu oui :-°
C'est normal que la checkbox soit au dessus du label "connexion automatique o_O " ?
  • Partager sur Facebook
  • Partager sur Twitter
29 janvier 2009 à 19:52:10

et la suite c'est pour quand ?
  • Partager sur Facebook
  • Partager sur Twitter
1 février 2009 à 21:21:25

Savageman je ne ferais pas de TP livre d'or mais je donnerais plutôt un lien ici:

->http://www.apprendre-php.com/tutoriels [...] o-et-mvc.html
  • Partager sur Facebook
  • Partager sur Twitter
2 février 2009 à 22:47:48

Bonjour,
je ne trouve pas comment mettre à une liste déroulante une entrée par défaut (le selected="selected").
J'ai essayer en regardant la classe mais j'y comprend pas grand chose xD .

Merci d'avance,
Lyrke

EDIT : et je voudrais aussi savoir comment mettre un texte par défaut dans un textarea, la méthode value ne fonctionne paon dirait :(
  • Partager sur Facebook
  • Partager sur Twitter
3 février 2009 à 0:16:44

Hum... Pour le value() du textarea, j'ai corrigé ma version, mais je peux pas l'uploader, j'ai pas accès au FTP depuis ma connexion... :'( Je te donne des nouvelles dès que je peux corriger.

Pour le selected="selected", c'est aussi value() qu'il faut utiliser sur un champ de type Select.

<?php
$pays = array('fr' => 'France', 'de' => 'Allemagne');
$form->add('Select', 'pays')->choices($pays)->value('de');
  • Partager sur Facebook
  • Partager sur Twitter
3 février 2009 à 7:48:00

Merci ca marche bien pour les listes ^^ .
J'attends la correction du forum avec impatience.

Lyrke
  • Partager sur Facebook
  • Partager sur Twitter
3 février 2009 à 8:18:23

Citation : Lyrke

Bonjour,
je ne trouve pas comment mettre à une liste déroulante une entrée par défaut (le selected="selected").
J'ai essayer en regardant la classe mais j'y comprend pas grand chose xD .



Savageman : Ha ha ! Tu vois, pas que moi qui ait besoin de regarder ton code !
  • Partager sur Facebook
  • Partager sur Twitter
Mon profil Github - Zeste de Savoir, pour la beauté du zeste
3 février 2009 à 10:55:33

Bonjour bonjour,

Alors j'ai un petit problème et une petite question ^^

Mon problème se situe au niveau de l'affichage du profil. Je l'ai renseigné dans les commentaires, car un autre zéro avait signalé un problème similaire au mien..
http://www.siteduzero.com/tutoriel-50-88617.html

Ma question ^^
Je suis en train de céer un formulaire de contact mail... J'ai donc créé tous les champs que je souhaitais, mais là je bloque : comment afficher mon image anti-robot ? (J'ai une créé une fonction qui marche très bien, mais je vois pas comment intégrer l'image à mon formulaire o_O ) Comment çà j'ai raté un truc dans la class form ? :colere2: (Je pose la question après avoir évidemment relu la sous partie expliquant le fonctionnement de la class form )
  • Partager sur Facebook
  • Partager sur Twitter
3 février 2009 à 11:55:39

Non... tu créé juste un champ de type "text", et dans le label, tu rentre la balise img avec l'attribut src approprié...
  • Partager sur Facebook
  • Partager sur Twitter
Mon profil Github - Zeste de Savoir, pour la beauté du zeste
3 février 2009 à 12:37:47

Merci bien ;)

EDIT : Problème dans la modif de profil :

<citation nom="">Parse error: syntax error, unexpected T_DOUBLE_ARROW in /home/www/lavaguedeiam/dev/modules/membres/vues/formulaires_modifier_profil.php on line 29</citation>

avec en ligne 29 :
<?php $form_modif_infos->fieldsets("Modification de l'e-mail et de l'avatar" => array('adresse_email', 'suppr_avatar', 'avatar'));


Et avant c'était :

Citation :

Modification de votre profil utilisateur

Warning: Invalid argument supplied for foreach() in /home/www/lavaguedeiam/dev/libs/form.php on line 244


Warning: Invalid argument supplied for foreach() in /home/www/lavaguedeiam/dev/libs/form.php on line 244


avec
<?php $form_modif_infos->fieldsets("Modification de l'e-mail et de l'avatar", array('adresse_email', 'suppr_avatar', 'avatar'));

Idée ?
  • Partager sur Facebook
  • Partager sur Twitter
3 février 2009 à 18:50:34

@ Melian : Tu utilises => (double_arrow) alors que tu n'es pas dans un array associatif.
Re-vérifie la ligne 29 ^^ .
  • Partager sur Facebook
  • Partager sur Twitter