php Formulaire d'inscription newsletter côté serveur

Ziggy

Membre
Salut à tous,

Dans le cadre de la formation avec FreeCodeCamp on nous demande de créer un formulaire quelconque (en HTML et CSS) pour valider une partie de la certification. Avec le cours qui précédait ça ne m'a pas posé énormément de problème, j'au soumis "mon devoir" et je suis passé aux challenges suivants.

Mais en fait le formulaire est un peu comme une coquille vide puisqu'il n'y a pas de code côté serveur pour réellement soumettre les données renseignées dans le formulaire (avec PHP) et également pour les stocker (avec SQL).

Donc voilà, je voulais m'attaquer à ce challenge perso pour faire réellement fonctionner un formulaire d'abonnement à une newsletter.
Je pense que cela pourrait être un exercice sympa pour débuter en PHP et SQL.
Si des membres du forum veulent m'accompagner ce serait pas mal de réfléchir ensemble à ça et de poster chacun nos idées et nos bouts de codes pour faire avancer le schmilblick, sinon je le ferais en solo mais c'est un peu moins fun dirons nous...

A vos éditeurs les courageux !

ps: si vous voulez je peux partager mon code html/css du formulaire sinon on peut en créer un nouveau ce n'est pas très compliqué ni long à faire.
 

Nicolas

Membre
Salut Ziggy, tu "soumets" là une super idée !
Je suis à fond avec toi, sachant que je ne connais pas encore PHP ce sera vraiment l'occasion de s'y frotter.

Et puis quand le résultat final sera obtenu, on pourra créer un joli tutoriel "PHP pas-à-pas : Formulaire Newsletter" !
On peut commencer avec ton code HTML/CSS pas de problème.

:cool:
 

Cascadeur

Membre
Je veux bien participer également mais plutôt que de refaire un code HTML et CSS pour le projet PHP pourquoi ne pas utiliser justement le formulaire de base proposé par FCC ? Il est plutôt bien fait et il y a des champs à remplir (nom, prénom, email...) des input-radio, des input-checkboxes, des text-area et un bouton submit.

Ce serait pas mal, tant qu'à faire, de gérer tous ces éléments en PHP sachant que c'est un exercice et qu'on a pas de délai pour le terminer.
J'ai copié les codes dans 2 fichiers, HTML-cocoriform.html et CSS-cocoriform.css, reste plus qu'à créer PHPcocoriform.php
 

Pièces jointes

  • CSS-cocoriform.zip
    1.3 KB · Affichages: 4
  • HTML-cocoriform.zip
    1.2 KB · Affichages: 4

Cascadeur

Membre
D'ailleurs est-ce qu'il ne serait pas plus simple de mettre les fichiers sur GitHub pour collaborer sur le projet ?
Le forum à un compte Git non ?
 

Nicolas

Membre
Oui c'est fait, le projet est public à cette adresse

J'y ai mis tes 2 fichiers, j'ai mis les en-têtes sur le fichier HTML.

Donc on commence par quoi ?
  • Le fichier HTML doit-il être renommé en .php ou bien on le lie à un fichier php à la manière d'une feuille de style CSS ?
 
Dernière édition:

Jack

Membre
  • Le fichier HTML doit-il être renommé en .php ou bien on le lie à un fichier php à la manière d'une feuille de style CSS ?
C'est un choix à faire, vous pouvez renommer le html en php et dans ce cas php est codé directement dans le fichier (qui donc comprend toujours le code html, le code est mixé dans le même fichier). Soit via un fichier php annexe qu'il conviendra d'appeler dans HTML

Ce lien est intéressant : https://www.php.net/manual/fr/tutorial.forms.php
 

Ziggy

Membre
Je pensais pas déclencher un tel intérêt !!
Mais c'est bien cool tout ça, super Nico pour GitHub je vais créer un compte pour accéder librement aux fichiers (d'ailleurs merci Cascadeur pour les avoir copier/coller !)

Concernant PHP je me disais qu'il serait préférable de coder directement php dans le fichier du formulaire comme ce n'est pas un gros projet... Qu'en pensez-vous ?

Après se pose la question de l'hébergement du formulaire:
  • Chacun chez soi sur un localhost ?
  • en utilisant un hébergement live avec un nom de domaine disponible ?
    • est-ce que le forum peut allouer un petit espace pour ça ?
 

Anthony

Membre
Euh... franchement si vous n'avez aucune base en PHP je vois pas très bien comment vous allez vous en sortir...
Soit via un fichier php annexe qu'il conviendra d'appeler dans HTML
En fait c'est d'abord PHP qui va lire le HTML et voir si il y a du langage qui lui correspond, si oui il le traite et renvoie la page traité côté client sinon il renvoie la page sans traitement.
 

Anthony

Membre
Non mais le fait de vouloir apprendre ensemble, de collaborer sur un projet commun oui pourquoi pas ce sera certainement très instructif pour les différents participants mais il faut se fixer des objectifs réalisables.

PHP n'est peut-être pas le langage de programmation le plus compliqué mais ça ne s'improvise pas non plus.
Parmi Nicolas, Ziggy et Cascadeur qui connait ne serait-ce que la base de la base de PHP ?

Après je ne vous dis pas d'abandonner, cela peut fonctionner mais cela passera par des phases d'apprentissages de PHP importante avant de coder quoique ce soit. Sinon à faire des copier/coller de tutos trouvés à droite ou à gauche.
 

Nicolas

Membre
J'ai évoqué le projet sur commentçamarche...
Salut,
plutôt que de supposer le premier geste à faire serait d'apprendre je pense.
"Donc pour en revenir au chargement de PHP dans mon HTML "
Le PHP ne charge en aucun cas le HTML c'est plutôt l'inverse.
Hypertext Preprocessor (PHP en abrégé) est un langage de programmation serveur, il sera interprété avant de fournir une réponse au client.

Il est surtout utiliser pour faire la liaison entre le HTML et la base de données, permettant "d'écrire" le contenu et la page(HTML, CSS).
Il peut aussi car côté serveur utiliser des fonctions serveurs comme se connecter à un service de messagerie et envoyer un mail(si le serveur mail est disponible évidemment).

Si son but est bien de fournir au client un fichier à charger son action est en amont du téléchargement, ou en aval puisque nécessite le serveur (distant).

Cette existence de 2 "côtés" d'un même processus(achmeniner et afficher un contenu web) permet d'enrichir et d'automatiser ces affichages en soumettant une série d'instructions informatique(la programmation) avant que la page soit chargée ou dans le cas d'un formulaire de recevoir et traiter les données du formulaire de façon isolée(donc plus sûre).
Sinon il y a JavaScript qui fonctionne sur le client(l'ordinateur de l'utilisateur) qui permet tout ce qu'un langage de programmation peut apporter.
JavaScript est bien inclus dans la page par référence hypertexte(une URL ou l'adresse du fichier) tandis que PHP permet de modifier le contenu à charger(la page qui s'affichera) comme le HTML, le contenu de ceux ci ou le CSS et fournir la version selon les instructions du programme.


2 choses à considérer qui fait que votre question n'est pas en rapport avec la pratique de PHP(comment PHP peut charger HTML? ou quel lien entre les 2):
  • La séparation entre les données et leur présentation, elle permet avec PHP de garder la même présentation(HTML, CSS) en changeant le contenu à afficher de façon sérielle et automatique. PHP s'exécutant avant de fournir le HTML et le CSS il sert à fournir celui ci, créant une version dynamqiue des données. Ce sont les pages dnamiques.
  • PHP est un langage serveur. Il nécessite un serveur et fonctionne sur le serveur donc indépendamment du client(l'ordinateur qui charge la page à afficher). C'est un principe(pour résumer de façon incompléte) de type entrée/sortie qui permet d'avoir en entrée une base de données ou un formulaire envoyé par la page HTML du client et en sortie soit un contenu HTML(une page ou partie de cette page) soit la base de données pour y stocker les données envoyées par le client(ou un client de messagerie de type e-mail, etc...).

L'extension ".php" derrière le nom du fichier indique que PHP est utilisé.
Si vous mettez un fichier PHP avec seulement un contenu HTML/CSS et/ou JavaScript le serveur PHP la regardera, verra qu'il n'a rien à y faire et renverra le fichier tel quel vers le client. PHP ne sait lire que "la partie" PHP.

Concrètement:

HTML
<html>
<article>
<h1>un exemple de HTML/h1>
<?PHP
echo "<p>utilisant une fonction PHP(écrire un texte ici)</p>"
/** ici le code PHP est inclus/écrit en script dans le HTML directement , on peut très bien l'externaliser et renvoyer vers une autre page HTML, la programmation à ceci d'intéressant qu'elle permet d'e transscire des concepts humains en une logique simple qu'un ordinateur est capable d'utiliser: fais ci , fais ça....si/selon  etc...*/
?>
</article>

est interprétée par le serveur puis envoit le HTML suivant au client:

HTML
<html>
<article>
<h1>un exemple de HTML/h1>
<p>utilisant une fonction PHP(écrire un texte ici)</p>
</article>

Que le navigateur traduit en l'affichage désiré(afficher un titre puis en paragraphe de texte).

Pour manipuler la page et son contenu JavaScript(plus fréquemment utilisé côté client) permet plus de choses par le DOM qui est la modélisation du HTML en objets de programmation, une représentation virtuelle permettant d'accéder et de modifier éventuellement chaque élément s'y trouvant.

Les 2 langages de programmation sont complémentaires et utilisés différemment:
_l'un pour l'interactivité et la manipulation de la page de façon "directe"(tout est sur le client et fonctionne sans lien avec le réseau une fois téléchargé par le navigateur), c'est JavaScript.
_l'autre pour traiter des flux de données et les envoyer à l'une ou l'autre des parties sur le réseau(client, base de données, client de messagerie...).

En clair tout dépends de ce que vous voulez faire l'un ou l'autre de ces 2 langages de programmation sera utile ou non(bien que JavaScript puisse être employé en fonctionnement serveur c'est le principe de PHP dont il est question ici).

Si vous connaissez HTML et CSS il vous faudra passer par l'apprentissage de la programmation qui est une autre paire de manches que des langages descriptifs comme HTML et CSS.
Quelques notions comme les variables et les tests logiques vous seront nécessaires.

CQFD:ne mettez pas la charrue avant les bœufs et commencez par apprendre(recherche sur le web: apprendre PHP/apprendre la programmation web etc...) histoire de partir sur des bonnes bases et avoir une petite idée de "comment ça marche" mais aussi de "à quoi ça sert".
Souvent se donner un but précis permet de soutenir une motivation.
Si votre but est d'apprendre PHP vous devriez chercher une fonctionnalité à développer qui nécessite de la programmation côté serveur(exemple: une boutique en ligne, un gestionnaire de commentaire ou de classement de vos musiques préférés, un forum de discussion, l'envoi d'un devis sur votre adresse e-mail etc...).

Bon apprentissage du monde merveilleux de la logique informatique/mathématique qu'implique la programmation alors :)

Bien sûr il faut que vous soyez au point avec HTML et le fonctionnement basique d'un réseau (HTTP, IP...) avant d'aller vers quelque chose qui est une couche supplémentaire de l'architecture d'un programme et son résultat sur le web(le site et ses fonctionnalités serveurs et gestions d'informations).
 

Ziggy

Membre
La vache il en a mis une sacrée tartine !!

Bon après ce n'est qu'un avis, on est pas obligé de le suivre.
Qu'en pensez-vous finalement ?
Parmi Nicolas, Ziggy et Cascadeur qui connait ne serait-ce que la base de la base de PHP ?
Ben pas moi et c'est pour ça que je voulais faire ce projet pour découvrir PHP de manière ludique plutôt que de se taper des tutos et des tutos à lire ou à regarder. Mais bon ok c'est peut-être compliqué de la façon dont j'ai présenté la chose.
 

Nicolas

Membre
Salut Ziggy, ça a refroidi un peu l'élan du début mais on est pas obligé d'abandonner.
Où en es tu toi de ton côté ? Apparemment personne n'a touché aux fichiers sur GitHub
 

yule

Membre
Hello,

Ah ben de bonnes idées ici !

Ca sera aussi l'occasion pour moi de m'y mettre sérieusement à un langage !!! Depuis plus de 20 ans, je m'amuse en autodidacte sans maitriser un seul langage..:cry: je flotte en HTML et PHP, je rame en CSS et je coule en js (tellement plus facile et fainéant d'utiliser des codes tout fait..) Python j'ai envie mais plus tard..

Donc et pour HTML mais surtout PHP, j'utilise depuis longtemps sans enlever mes œillères... Quand je dis ça, c'est que j'avais pas la patience de comprendre l'entier de mes besoins, mais de "jouer au légo" en prenant un exemple de code ici, un autre là-bas etc.. pour solutionner mon besoin précis dans l'élaboration de mon site. Et bon , passablement de questions dans d'autres forums.. Avec le temps, j'apprends à nettoyer mon code php mais "pole pole". Mon site tourne très bien ! Mais si on s'amusait a regarder mon code, les pros diraient... mais pourquoi faire aussi compliqué.. pourquoi cette variable, elle est contradictoire avec ta ligne X etc...

Voili voilou, je vais zieuter ce page page html et css et essayer de faire ce fichier php (je vais commencer la page php.. après on pourra discuter des structures de contrôles à l'envoi du formulaire...) mais pour commencer, juste préparer cette page

Faudra m'expliquer l'utilisation participative de GIthub à l'occase...

A+
Yule
 

yule

Membre
Oyé oyé,

Me revoilà de retour.... Comme promis, je l'ai adapté en version php , soit passablement de html dans un fichier php
Dans cette version, vous pourrez tout simplement récupérer ce qui a été soumis par un visiteur.

Aucune structure de contrôle à proprement dit si ce n'est celle qui permet de vérifier que le formulaire n'est pas vide, qu'il y a des champs requis (obligatoire), l'adresse mail doit ressembler à une adresse mail, l'âge doit rester un chiffre etc.... (faites des erreurs volontairement..)

J'ai essayé de commenter au mieux le formulaire mais ce n'est qu'une étape pour la suite du projet. Le but est de comprendre le pourquoi coment avant d'aller plus loin.

Je pense que pour la suite, il faudra

  • Des structures de contrôle : Imposer des choix aux visiteurs
    [*]Créer une table Mysql
    [*]Créer des includes pour la connexion à la BDD, éventuellement pour un header et un footer si répétitif (plusieurs pages différentes dans le script)
    [*]Ajouter les éléments dans la table
    [*]Afficher la liste des inscrits, modifier ou effacer des inscrits etc...

Dans l'immédiat, il suffit de dezipper ce fichier et le copier sur votre serveur puis aller à l'adresse (form.php)

Genre (ex) : monsite.com/test/formulaire/form.php ou en local : h*tp://localhost/formulaire/form.php

Enfin y a de quoi faire pour s'y coller à PHP...

Bonne bonne
Yule

PS: j'en ai profité pour faire ceci avec Visual studio code... histoire de m'en imprégner un peu (j'ai pas encore compris cette histoire de debug et message d'erreur quand je sauvegarde mon fichier phpfmt: php_bin "php" is invalid ) mais bon "ça va viendre"
 

Pièces jointes

  • formulaire.zip
    5.6 KB · Affichages: 2
Dernière édition:

Nicolas

Membre
Salut Yule, ça va un peu vite pour moi mais super boulot !
@Ziggy tu as de quoi faire maintenant ;)
J'ai essayé de commenter au mieux le formulaire mais ce n'est qu'une étape pour la suite du projet. Le but est de comprendre le pourquoi coment avant d'aller plus loin.
Tout à fait ! Et ton travail est une bonne base pour nous tous dans la compréhension de php !

J'ai mis le formulaire en ligne comme ça chacun d'entre nous peur le consulter.
https://devcometrue.fr/formulaire/form.php
 
Dernière édition:

Nicolas

Membre
Donc, si je comprends bien, la base du fichier PHP est dans le code suivant et c'est celui-là qu'il faut qu'on appréhende ?
PHP
<?php
$choix = !empty($_GET['choix']) ? $_GET['choix'] : NULL; // Pour structure de contrôle du formulaire, pour plus tard...

$name = isset($_POST['name']) ? $_POST['name'] : NULL;  // Détermine si la variable 'name' est déclarée et est différente de null
$email = isset($_POST['email']) ? $_POST['email'] : NULL;  // Détermine si la variable 'email' est déclarée et est différente de null
$age = isset($_POST['age']) ? $_POST['age'] : NULL; // Détermine si la variable 'age' est déclarée et est différente de null
$role = isset($_POST['role']) ? $_POST['role'] : NULL; // Détermine si la variable 'role' est déclarée et est différente de null
$recommend = isset($_POST['recommend']) ? $_POST['recommend'] : NULL; // Détermine si la variable 'recommend' est déclarée et est différente de null
$mostLike = isset($_POST['mostLike']) ? $_POST['mostLike'] : NULL; // Détermine si la variable 'mostLike' est déclarée et est différente de null
$prefer = isset($_POST['prefer']) ? $_POST['prefer'] : NULL; // Détermine si la variable 'prefer' est déclarée et est différente de null
$comment = isset($_POST['comment']) ? $_POST['comment'] : NULL; // Détermine si la variable 'comment' est déclarée et est différente de null
?>
 

yule

Membre
Donc, si je comprends bien, la base du fichier PHP est dans le code suivant et c'est celui-là qu'il faut qu'on appréhende ?
En partie..
Pour ce premier jet, c'est toujours le même code permettant de récupérer les variables envoyés par l'utilisateur (nom , email , age etc..) afin que cela reste sur le formulaire une fois envoyée, grâce aussi à value="<?php echo $name; ?>" et ainsi de suite par groupe

Après il y l'affichage multiples des choix "What would you like to see improved?" qu'on pourra discuter

Mais si @yule s'y met et vu qu'il a l'air d'avoir certaines compétences en la matière
Merci mais tout est relatif

En conclusion, ce qui est important, c'est d'installer ce bout de script en local (ou pas, il y a la version online ) et de comprendre son fonctionnement en le testant/ bidouillant etc..,

Constater à ce stade ce qu'il fait et ce qu'il devrait faire à future. Mais il n'y a aucune urgence.

A+
Yule
 
Dernière modification par un modérateur:

Ces discussions pourraient vous intéresser...

Hello, J'ai créé un formulaire avec Bootstrap mais j'ai un problème de mise en forme. Les <input> prennent chacun leur propre ligne alors que j'aimerais que certains soit côte à côte. Je ne parviens pas du tout à faire ce que je veux et je ne trouve rien dans la documentation...
Salut, Je suis en train de tester bootstrap sur mon localhost et j'ai un problème d'affichage. Je m'explique : Je veux afficher 4 colonnes qui contiennent chacune d'entre elles du texte mais j'ai beau chercher je ne comprends pas pourquoi elles s'affichent une au dessus des autres...
Bonsoir à tous, Je suis en train de créer un petit formulaire de contact et je voulais que certains des champs du formulaire se remplissent automatiquement par les navigateurs des utilisateurs. On a cette option sur FireFox et Chrome je suppose que tous l'ont. Donc je fais quelques...
Haut