Questions / Idées (PHP, MySQL, JavaScript)
Posté le 13/06/2017 14:14
Bien le bonjour, je ne poste pas souvent de sujets mais aujourd'hui, j'ai besoin d'avis et d'un petit peu d'aide
Cette semaine, je dois réaliser un gestionnaire de livres de recettes. C'est à dire que le client qui utilisera le site devra pouvoir créer des livres de recettes, les voir, les modifier ou les supprimer.
Je dois donc penser à un maximum de fonctionnalités dans le but de satisfaire toutes les attentes du client qui l'utilisera, voire plus pour l'étonner (en MVC).
Le MCD est en pièce jointe.
Voici une liste des idées simples, logiques et auxquelles j'ai pensées actuellement :
– La fonction de création basique qui comprendra le titre de la recette, sa description, des photos du résultat / des ingrédients.
– La fonction de modification et de suppression d'une recette (le back office).
– La fonction de recherche par titre de recette, ingrédients présents dans la recette, date de sortie, etc.
– La fonction de partage entre les différents membres.
– De quoi pouvoir mettre les images soit en haut de la recette, soit en bas, au choix.
– De quoi pouvoir placer le texte en haut ou en bas aussi, au choix.
– De quoi choisir une couleur de fond du livre de recette et une couleur de texte.
– De quoi mettre en gras, en couleur, en italique les titres ou textes.
– De quoi redimensionner la taille du livre.
D'autres idées ? Nous sommes censé penser à toutes les éventualités possibles, tous les possibilités dont un client disposerait sur un gestionnaire de recettes.
Pour mes questions, je me demandais :
1) Comment faire que le client choisisse si les photos se placeront en haut ou en bas, sans mettre deux input de type fichier ? On nous a proposé de faire des cases vides et selon le formulaire que l'on remplit à côté, les zones vides se remplaceront mais je n'ai pas encore d'idées de comment réaliser ça.
2) Comment faire pour que le client puisse naviguer entre les différentes pages d'une recette sans rafraîchir et faire différentes pages ?
Fichier joint
Citer : Posté le 13/06/2017 14:17 | #
Un moteur de recherche par aliments…
Pour naviguer entre les pages : animation de page d'un livre + ajax.
Citer : Posté le 13/06/2017 14:18 | #
J'ai déjà noté la recherche par ingrédients.
Je ne vais pas faire d'animation de livre, juste deux pages sans style au début qui se rempliront au fur et à mesure mais je ne sais pas encore utiliser l'AJAX.
Citer : Posté le 13/06/2017 14:20 | #
Ajax c'est facile pour le moindre problème tu peux me demander.
Pourquoi ne pas rajouter une option de partage avec mailto...
Edit : le chevalier bleu a encore frappé
Citer : Posté le 13/06/2017 14:21 | #
Pour les images, tu fais un formulaire d'envoi d'image dynamique, et tu met une balise [img] dans ton texte. Comme ça tu met l'image où tu veux (en haut, en bas, au milieu) et tu peux en mettre plusieurs
Le sans rafraichir, y'a deux solutions :
– La première consiste à tout mettre dans une unique page et à afficher ce qui t'intéresse en Js. C'est vite très lourd, autant en terme de données que de
– La seconde, c'est de faire comme tous ces sites
de merdequi surchargent la fonction de chargement de leurs pages par un truc custom, souvent via Ajax ou jQuery (voir un combo des deux, je sais pas trop)Citer : Posté le 13/06/2017 14:26 | #
Qu'est-ce que tu veux dire pour les images ? Je fais un formulaire avec un type files et ensuite ?
Pour le sans rafraîchir, on me conseille souvent l'Ajax ou le jQuery, j'ai des liens qui me proposent un tutoriel pour actualiser un div, je vais essayer ça quand j'y serai, merci
Citer : Posté le 13/06/2017 14:32 | #
Si je peux te donner un conseil, regarde plutôt du coté d'Ajax, qui n'est pas affilié (donc traqué par) Google, contrairement à jQuery.
Le sans rafraichir, c'est souvent une fausse bonne idée… Tu sais jamais si le site plante ou non, si c'est ta co qui foire, etc.. Fais gaffe, c'est piégeux. Si t'as pas un besoin spécifique (lecture de son/vidéo en continu), je le déconseille.
Pour les images, tu fais un script qui envoie l'image sur le serveur (avec Ajax par exemple), et qui te retourne un ID de la photo. Ensuite, dans ton texte, tu mets [img 1234] ou [img=url_vers_l_image]
Citer : Posté le 16/06/2017 13:03 | #
Me revoici avec une autre question par rapport à ce projet :
Actuellement, vous vous trouvez sur le sommaire dans lequel vous pouvez ajouter des chapitres (genre desserts, plats chauds, etc.). Vous avez dans l'URL l'ID du livre dans lequel vous êtes. Voici mes 3 codes (Vue, Contrôleur puis Modèle) :
Vue : https://hastebin.com/uwuneviwuz.xml
Contrôleur : https://hastebin.com/ohucofofub.xml
Modèle : https://hastebin.com/ufisobocan.xml
Le problème est que le $_GET['ID'] ne passe plus à partir du contrôleur. Peut-être est-ce à cause du form qui est en POST mais toujours est-il que la variable est enregistrée et qu'elle devrait passer. Du coup, je ne peux sauvegarder l'ID du chapitre en le liant à l'ID du livre...
Une idée de ma bêtise ?
Citer : Posté le 16/06/2017 13:34 | #
Quelques remarques :
→ Attends, select id as LID where id = $LID ? Tu vas juste récupérer $LID. Si tu veux vérifier l'existence, prends au moins le temps de regarder la valeur de retour de fetch().
→ Dans erreur_ajouter_chapitre($_GET['erreur_ajouter_chapitre']).'', le grand concept de concaténer une chaîne vide à une chaîne existante, en exclusivité avec ElToredo.
→ Ton formulaire est en POST, les données envoyées sont toutes en POST. Comment tu espères recevoir dans ton contrôleur $_GET['ID'] alors que tu as fait une requête POST ?
Citer : Posté le 16/06/2017 13:42 | #
Pour le deuxième point, j'ai copié le code qu'on avait fait ensemble, s'il a changé, je ne sais pas comment, j'ai pas re-vérifié :/
Oui, le formulaire est en POST, je me demande donc comment faire passer la valeur de l'ID par ce formulaire, c'est tout ce dont j'aurais besoin.
Citer : Posté le 16/06/2017 13:46 | #
Si je peux te donner un conseil, regarde plutôt du coté d'Ajax, qui n'est pas affilié (donc traqué par) Google, contrairement à jQuery.
Traqué par Google seulement si tu prends comme source le script hébergé chez eux hein.
Mais tu peux très bien trouver un autre hébergeur ou héberger jQuery directement sur ton serveur...
Il n'y a donc pas de flicage particulier, je t'invite donc à en lire plus sur la fondation qui gère jQuery
Citer : Posté le 16/06/2017 16:34 | #
Si tu l'héberge sur ton serveur, c'est ok, mais faut faire ça bien. Genre support du https, mises à jour régulières, maintenance correcte, etc. C'est pas infaisable, mais autant partir directement sur Ajax non ?
Citer : Posté le 17/06/2017 00:09 | #
Problème réglé au cas où, merci quand-même
Ajouté le 18/06/2017 à 16:03 :
J'essaye d'afficher le bouton de création de recette seulement si une recette n'existe pas déjà. Une recette à l'id de la page sur laquelle nous sommes (dans la query). Seulement, il ne s'affiche jamais.
Modèle du SELECT de l'id en fonction du chapitre sur lequel nous sommes (il peut y avoir plusieurs recettes par chapitre mais toutes ont un ID différent, sauf si le chapitre diffère) :
https://hastebin.com/ebubitizuq.php
Vue pour afficher le bouton :
https://hastebin.com/epemucenix.xml ($donnees et pas $page en bas)
Désolé pour l'indentation, elle est propre dans le code mais pas quand je copie-colle.
Ajouté le 18/06/2017 à 16:16 :
De plus, j'ai une regex qui est censée remplacer les [ b][ /b] par des <strong></strong> :
Mais j'ai une erreur sur un '/', je ne sais lequel.
Citer : Posté le 18/06/2017 18:40 | #
PHP n'a pas de notion de type regex. Il faut mettre la regex entre quotes (et des simples de préférence).
De plus, ta regex ne va pas marcher. Ton (.+) est avare, il va bouffer le [/b] sans honte. Utilise soit (.+?) (non-avare), soit ([^\[]+) (ne mange pas ta balise de fermeture). Demande-toi aussi si passer la regex en case-insensitive ne serait pas une bonne idée.
Ton remplacement souffre du même problème. Tu tentes de substituer $& au moment de construire la chaîne. Déjà c'est $1 (erreur de frappe je soupçonne), ensuite faut le laisser dans la quote pour qu'il puisse se faire substituer après le calcul de la regex (c'est une fausse variable) : '<strong>$1</strong>'.
Citer : Posté le 18/06/2017 18:42 | #
Merci pour ta réponse, j'ai déjà réglé le souci tout à l'heure et je n'ai plus de temps pour ce projet malheureusement
Citer : Posté le 18/06/2017 18:42 | #
Il y a aussi l'option UNgreedy
connais tu ibm watson?