Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Discussions


Index du Forum » Discussions » Questions / Idées (PHP, MySQL, JavaScript)
Eltoredo Hors ligne Modérateur Points: 4299 Défis: 35 Message

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


Et7f3 Hors ligne Membre Points: 176 Défis: 1 Message

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.
"l'impossible n'est pas français", Je suis français je suis donc capable de tout.
Eltoredo Hors ligne Modérateur Points: 4299 Défis: 35 Message

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.
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Et7f3 Hors ligne Membre Points: 176 Défis: 1 Message

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é
"l'impossible n'est pas français", Je suis français je suis donc capable de tout.
Dark storm Hors ligne Labélisateur Points: 11538 Défis: 176 Message

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 merde qui 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)
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Eltoredo Hors ligne Modérateur Points: 4299 Défis: 35 Message

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
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Dark storm Hors ligne Labélisateur Points: 11538 Défis: 176 Message

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]

Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Eltoredo Hors ligne Modérateur Points: 4299 Défis: 35 Message

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 ?
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Lephenixnoir Hors ligne Administrateur Points: 20793 Défis: 143 Message

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 ?
Eltoredo Hors ligne Modérateur Points: 4299 Défis: 35 Message

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.
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Xavier59 Hors ligne Membre de CreativeCalc Points: 1337 Défis: 12 Message

Citer : Posté le 16/06/2017 13:46 | #


Dark storm a écrit :
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
1337
Dark storm Hors ligne Labélisateur Points: 11538 Défis: 176 Message

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 ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Eltoredo Hors ligne Modérateur Points: 4299 Défis: 35 Message

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> :

$Titre = preg_replace(/\[b\](.+)[\/b\]/, '<strong>' . $& . '</strong>', $Titre);


Mais j'ai une erreur sur un '/', je ne sais lequel.
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Lephenixnoir Hors ligne Administrateur Points: 20793 Défis: 143 Message

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>'.
Eltoredo Hors ligne Modérateur Points: 4299 Défis: 35 Message

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
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Et7f3 Hors ligne Membre Points: 176 Défis: 1 Message

Citer : Posté le 18/06/2017 18:42 | #


Il y a aussi l'option UNgreedy
connais tu ibm watson?
"l'impossible n'est pas français", Je suis français je suis donc capable de tout.

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 41 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd