Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2659 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Créer formulaire inscription

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Créer formulaire inscription

n°1923752
schnoqueur
Posté le 13-09-2009 à 21:08:08  profilanswer
 

Bonjour,
J’ai un site internet et j’aimerai créer un formulaire d’inscription. Je m’explique :  
Il y aura trois activités et pour chaque activité un nombre de places limités, les personnes inscrivent leur noms dans une ou plusieurs des activités, ils valident. Un compteur affiche le nombre de place restante, ou alors pour 20 places par exemple il y a 20 cases qui, lorsqu’un est rempli, se grise. Les noms des inscrits ne seraient pas publics mais je pourrais les consulter.
Comment faire donc cela ? J’ai pensé à un fichier excel, un pdf avec formulaire, du html… Mais je ne maitrise pas, pouvez-vous m’aider ?  
Merci


---------------
Mon ancien feedback A/V : http://forum.hardware.fr/hfr/Achat [...] 3624_1.htm
mood
Publicité
Posté le 13-09-2009 à 21:08:08  profilanswer
 

n°1923759
NostalGeek​ette
Posté le 13-09-2009 à 21:39:06  profilanswer
 

Tu peux faire un formulaire tout simple en HTML, puis traiter tes données en PHP/MySQL. J'ai pas exactement compris ce que tu voulais faire par contre... Comment se présenterait le forumulaire ?

 

Une case "nom"
Une liste déroulante avec les activités possibles (grisés si y'a déjà trop de personnes dedans), et une partie gestion à laquelle toi seul a accès, pour voir les noms des membres, les effectifs de chaque activité, etc ?

 

J'veux bien te coder le formulaire, pour le traitement c'est un peu plus complexe, faudrait savoir si tu disposes d'une base de données ?


Message édité par NostalGeekette le 13-09-2009 à 21:40:51
n°1923763
schnoqueur
Posté le 13-09-2009 à 22:08:29  profilanswer
 

Voilà comment pourrait être le formulaire :  
http://img10.imageshack.us/img10/7058/formp.jpg
 
J'ai mis 2 types de présentations différentes, par exemple, pour activité 1 : 1 case correspond à une place, on met son nom dans la case puis on clique sur validé, la case est alors mise comme occupé
2ème possibilité : j'ai mis activité 2 et il y a une seule case, on met son nom dedans puis on valide. Un compteur met le nombre de places restantes, s'il n'y a plus de places, on ne peut pas s'inscrire.
Ce n'est que des idées, un système de menu déroulant où on sélectionnerait une ou plusieurs activités (grisé si indisponible) pourrait faire l'affaire.
 
Et il y aurait en effet une partie gestion où je pourrais voir qui est inscrit à quoi (récupérer par exemple sous forme de liste les inscrits à une activité).
 
Par contre pour la base de donnée tu parles de quoi ? J'ai un serveur avec les accès en ftp et une base mysql. Mon site marche sous spip, s'il y a un plugin ce serait parfait mais je n'ai rien trouvé. Je peux créer une page indépendante au site spip.
 
Merci pour ton aide  :jap:


---------------
Mon ancien feedback A/V : http://forum.hardware.fr/hfr/Achat [...] 3624_1.htm
n°1923887
NostalGeek​ette
Posté le 14-09-2009 à 13:05:42  profilanswer
 

Je pense que l'idéal serait la présentation n°2. La plus simple à réaliser du moins. Pour la base de données, je parlais de MySQL, oui. :)

 

Je t'ai codé un script, à toi de l'adapter comme bon te semble, et de l'intégrer dans ta page / ton design. :)
Voici l'aperçu de ce que le script donne : http://www.noelshack.com/up/aab/ac [...] 5f7196.png
Et voici le code : (Désolée, je connais pas la balise HFR pour mettre en forme le code php :x)

 
Citation :

mysql_connect("localhost", "root", "" ) or die(mysql_error());
 mysql_select_db("tests" );

 

$activites = 1;

 

 while($activites < 4)
  {
 
   $retour = mysql_query('SELECT COUNT(*) AS nb_de_places_occupees FROM activites WHERE activite = '.$activites.'');
   $donnees = mysql_fetch_array($retour);
   $nb_de_places_restantes = 5 - ($donnees['nb_de_places_occupees']); /* 5 est le nombre de places maximum pour chaque activites */
   
   echo '<fieldset id="left"><legend>Activité n°'.$activites.'</legend>';
   echo '<form method="post" action="index.php">';
   
   $reponse = mysql_query('SELECT * FROM activites WHERE activite = '.$activites.' ORDER BY id ASC');
   while ($noms = mysql_fetch_array($reponse))
   {echo '<input type="text" name="nom" value="'.$noms['nom'].'" disabled="disabled" /><br />';}

   
   if($nb_de_places_restantes == 0)
   {
    echo '<br /><strong>Effectifs complets !</strong>';
   }
   
   else
   {
    echo '<input type="text" name="nom" /> (Votre nom)<br />';
    echo '<input type="hidden" name="activites" value="'.$activites.'" /><br />';
    echo 'Nombre de places restantes : '.$nb_de_places_restantes.'<br />';
    echo '<input type="submit" value="Valider"></form>';
   }
   echo '</fieldset><br />';
   $activites ++;
  }
 
 if(isset($_POST['nom']))
 {
  if(!empty($_POST['nom']))
  {
   $nom = $_POST['nom'];
   $activites = $_POST['activites'];

 

  mysql_query("INSERT INTO activites VALUES('', '" . $activites . "', '" . $nom . "')" ) or die (mysql_error());
   header('Location: index.php?inscription=ok');
   mysql_close();
  }
 
  else
  {
   echo 'Vous devez indiquer votre nom dans la case de l\'activité choisie.';
  }
 }

 

if(isset($_GET['inscription']) AND $_GET['inscription'] = 'ok')
 {
  echo 'Votre inscription a bien été prise en compte ! Merci.';
 }

 

La partie en gras dans le script, c'est celle qui affiche la liste des noms. Si tu la retires, la liste n'apparait plus. :)
Donc à toi de voir, si la liste doit être dans la partie gestion, ou si elle peut rester publique... M'enfin, voilà, t'as toutes les possibilités, à toi d'adapter.

 

/!\ SURTOUT : N'oublie pas de mettre les identifiants corrects à la place de "localhost" (le serveur) "root" (l'indentifiant), le vide qui correspond au mot de passe, et "tests" qui sera le nom de ta base de données. Par exemple chez free, le serveur serait ftpperso.free.fr + tes identifiants que tu dois connaitre (renseigne toi de ce qu'il faut mettre pour le serv si tu n'es pas chez free). Bref, ça donnerait ceci :

 
Citation :


mysql_connect("ftpperso.free.fr", "identifiant", "motdepasse" ) or die(mysql_error());
mysql_select_db("leNomDeTaBaseDeDonnees" );

 

/!\ Et deuxième point : il faudra que tu crées cette table dans ta base de données (Voici la requête SQL pour la créer) :

 
Citation :


CREATE TABLE IF NOT EXISTS `activites` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `activite` int(11) NOT NULL,
  `nom` varchar(55) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ;

 


 

Voilou ! Si tu as des questions ou des trucs qui te semble mal faits dans le script, n'hésite pas à me le dire. :$


Message édité par NostalGeekette le 14-09-2009 à 21:26:11
n°1924030
schnoqueur
Posté le 14-09-2009 à 19:34:25  profilanswer
 

Bon, ça ma l'air très bien tout ça :D  Merci beaucoup.
 
J'ai cependant quelques questions :  
- je ne vois pas la partie en gras dans le code, qui permet de masquer ou non la liste des inscrits. Si je veux que la liste des inscrits ne soit pas publiques, j'enlève cette partie, à ce moment-là pour consulter la liste des inscrits tu dis qu'elle sera consultable dans la partie gestion. La partie gestion se situe où  ? :pt1cable:  Sur l'image que tu montres en exemple, si j'ai bien compris dans activité 2 c'est ce qui s'afficherait si je met l'affichage des noms des inscrits publique ?
 
- au niveau configuration du code, je n'ai besoin que de modifier ça ? :  
 

Citation :

mysql_connect("ftpperso.free.fr", "identifiant", "motdepasse" ) or die(mysql_error());
mysql_select_db("leNomDeTaBaseDeDonnees" );


 
à la place de leNomDeTaBaseDeDonnees, je met l'adresse (sql.monsite.fr) ou le nom de la base ?
 
- dernière question  :whistle: si je veux qu'il y ai 15 place au total pour activité 1 et 20 pour activité 2, et que par exemple Activité 1 soit remplacer par Réunion et Activité 2 par Concert. C'est à dire pouvoir paramétrer le nombre de place pour chaque activité et le nom de l'activité, je fais comment ?
 
Merci encore  :jap:  


---------------
Mon ancien feedback A/V : http://forum.hardware.fr/hfr/Achat [...] 3624_1.htm
n°1924087
NostalGeek​ette
Posté le 14-09-2009 à 21:30:21  profilanswer
 

Alors

 

- Oups, j'ai oublié de mettre en gras. :$ C'est modifié, désolée.
Si tu l'enlèves, ça n'affichera plus la liste avec les noms. :) Si tu veux afficher juste les noms sur une autre page, suffit de copier coller les deux lignes qui te connectent à la base de données + cette partie de code en gras. :)

 

- Pour le code de connexion, tu dois remplacer leNomDeTaBaseDeDonnees par ce qui se trouve ici :
http://www.noelshack.com/up/aab/bdd-4c2f87de51.png

 

- Si tu veux rendre le code plus complexe, ça va être délicat... Disons que si tu ne comprends pas mon code, et si tu n'as absolument aucune bases en PHP, il faudra que quelqu'un refasse entièrement ton code à chaque fois... J'vais te coder ta page de gestion, où tu pourras donner le nom souhaité à chaque activité, et définir le nombre de places.

 

=> Le code dans le message suivant.

 

EDIT : Je verrai ça demain, je suis totalement crevée et je m'embrouille dans le code... Désolée, j'espère que c'est pas urgent. :$

Message cité 1 fois
Message édité par NostalGeekette le 14-09-2009 à 21:55:13
n°1924093
schnoqueur
Posté le 14-09-2009 à 21:59:53  profilanswer
 

NostalGeekette a écrit :


 
EDIT : Je verrai ça demain, je suis totalement crevée et je m'embrouille dans le code... Désolée, j'espère que c'est pas urgent. :$


 
Non, pas de problème  :) J'ai le temps  ;)


---------------
Mon ancien feedback A/V : http://forum.hardware.fr/hfr/Achat [...] 3624_1.htm
n°1924098
NostalGeek​ette
Posté le 14-09-2009 à 22:19:40  profilanswer
 

J'ai bien avancé, ça devrait fonctionner. :)
Ce qui m'embête c'est que je pourrai pas poster le code avant demain soir... :/ Ceci dit je dois y aller, donc @+ :)

n°1924319
NostalGeek​ette
Posté le 15-09-2009 à 18:51:17  profilanswer
 

Je suis sincèrement désolée, j'y arrive pas... :'(

n°1924325
schnoqueur
Posté le 15-09-2009 à 19:39:09  profilanswer
 

C'est pas grave, c'est déjà pas mal ce que tu as fait  :jap:  (je n'aurais pas put en faire autant  :pt1cable: ). Je vais me débrouiller avec ça  ;)  
Merci encore  :jap:


---------------
Mon ancien feedback A/V : http://forum.hardware.fr/hfr/Achat [...] 3624_1.htm
mood
Publicité
Posté le 15-09-2009 à 19:39:09  profilanswer
 

n°1924342
NostalGeek​ette
Posté le 15-09-2009 à 21:28:30  profilanswer
 

J'espère que tu repasseras par ici !! Après avoir tout repris à 0, voici enfin le bon code, un script qui fonctionne. :)
Voici l'aperçu de ce que cela donne :
http://goodlinkin182.free.fr/activites/index.php
http://goodlinkin182.free.fr/activites/gestion.php

 

Code de la page formulaire.php :

 
Citation :


<?php

 

mysql_connect("localhost", "root", "" ) or die(mysql_error());
 mysql_select_db("tests" );
 
 if(isset($_POST['nom']))
 {
  if(!empty($_POST['nom']))
  {
   $nom = $_POST['nom'];
   $activite = $_POST['activite'];

 

  mysql_query("INSERT INTO noms VALUES('', '" . $activite . "', '" . $nom . "')" ) or die (mysql_error());
   header('Location: index.php?inscription=ok');
  }
 
  else
  {
   echo 'Vous devez indiquer votre nom dans la case de l\'activité choisie.';
  }
 }

 

if(isset($_GET['inscription']) AND $_GET['inscription'] = 'ok')
 {
  echo 'Votre inscription a bien été prise en compte ! Merci.';
 }
 
 $reponse0 = mysql_query('SELECT COUNT(*) AS nb_activites FROM activites') or die(mysql_error());
 $donnees0 = mysql_fetch_array($reponse0);
 $nb_activites = $donnees0['nb_activites'];
 
 echo '<h3>Liste des activités</h3>';
 
 if($nb_activites == 0)
 {
  echo 'Aucune activité disponible pour le moment.<br /><br />';
 }

 

else
 {
  if($nb_activites == 1)
  {
   echo 'Il y a '.$nb_activites.' activité disponible pour le moment.<br /><br />';
  }
 
  else
  {
   echo 'Il y a '.$nb_activites.' activités disponibles pour le moment.<br /><br />';
  }
 }
 
 $reponse1 = mysql_query('SELECT * FROM activites ORDER BY id ASC') or die(mysql_error());
 while ($donnees1 = mysql_fetch_array($reponse1))
 {
  $id = $donnees1['id'];
  $activite = $donnees1['activite'];
  $details = $donnees1['details'];
  $places = $donnees1['places'];
 
  echo '<fieldset>';
  echo '<legend>Activité n°'.$id.'</legend>';
  echo 'Activité : <strong>'.$activite.'</strong><br />';
 
  if(empty($details))
  {
   echo '';
  }
 
  else
  {
   echo 'Détails : '.nl2br($details).'';
  }
 
  echo '<hr />';
 
  echo '<form method="post" action="index.php">';  
  echo '</label>Inscrivez votre nom :</label> <input type="text" name="nom" /><br />';
  echo '<input type="hidden" name="activite" value="'.$id.'" /><br />';
 
  $reponse2 = mysql_query('SELECT COUNT(*) AS nb_de_places_occupees FROM noms WHERE activite = '.$id.'');
  $donnees2 = mysql_fetch_array($reponse2);
  $nb_de_places_restantes = $places - ($donnees2['nb_de_places_occupees']);
   
  echo 'Nombre de places total : '.$places.'<br />';
  echo 'Nombre de places restantes : '.$nb_de_places_restantes.'<br />';
  echo '<input type="submit" value="Valider"></form>';
 
  echo '</fieldset><br />';
 }
 
 mysql_close();
?>

 

Code de la page gestion.php :

 
Citation :


<?php

 

mysql_connect("localhost", "root", "" ) or die(mysql_error());
 mysql_select_db("tests" );

 

if(isset($_GET['supprimer']))
 {
  $_GET['supprimer'] = $_GET['supprimer'];
  mysql_query('DELETE FROM activites WHERE ID = \'' . $_GET['supprimer'] . '\'');
  header('location:gestion.php');
 }
 
 if(isset($_POST['activite']) AND isset($_POST['places']) AND isset($_POST['details']))
 {
  if(!empty($_POST['activite']) AND !empty($_POST['places']))
  {
   $activite = $_POST['activite'];
   $details = $_POST['details'];
   $places = $_POST['places'];

 

  mysql_query("INSERT INTO activites VALUES('', '" . $activite . "', '" . $details . "', '" . $places . "')" ) or die (mysql_error());
   header('Location: gestion.php?ajout=ok');
  }
 
  else
  {
   echo '<br />Vous devez remplir tous les champs obligatoires.';
  }
 }

 

if(isset($_GET['ajout']) AND $_GET['ajout'] == 'ok')
 {
  echo '<br />L\'activité a été ajoutée avec succès.';
 }

 

echo '<h3>Ajouter une activité </h3>';
 echo '<form action="gestion.php" method="post">';
 echo '<label>Nom de l\'activité : </label><input type="text" name="activite" /><br />';
 echo '<label>Nombre de places dispo : </label><input type="text" name="places" /><br /><br />';
 echo '<label>Description de l\'activité (facultatif) : </label><br />';
 echo '<textarea cols="60" rows="10" type="text" name="details"></textarea><br />';
 echo '<input type="submit" value="Enregistrer" />';

 

$reponse0 = mysql_query('SELECT COUNT(*) AS nb_activites FROM activites') or die(mysql_error());
 $donnees0 = mysql_fetch_array($reponse0);
 $nb_activites = $donnees0['nb_activites'];
 
 echo '<hr /><h3>Liste des activités</h3>';
 
 if($nb_activites == 0)
 {
  echo 'Aucune activité disponible pour le moment.<br /><br />';
 }

 

else
 {
  if($nb_activites == 1)
  {
   echo 'Il y a '.$nb_activites.' activité disponible pour le moment.<br /><br />';
  }
 
  else
  {
   echo 'Il y a '.$nb_activites.' activités disponibles pour le moment.<br /><br />';
  }
 }
 
 $reponse1 = mysql_query('SELECT * FROM activites ORDER BY id ASC') or die(mysql_error());
 while ($donnees1 = mysql_fetch_array($reponse1))
 {
  $id = $donnees1['id'];
  $activite = $donnees1['activite'];
  $details = $donnees1['details'];
  $places = $donnees1['places'];
 
  echo '<fieldset>';
  echo '<legend>Activité n°'.$id.'</legend>';
  echo 'Activité : <strong>'.$activite.'</strong><br />';
 
  if(empty($details))
  {
   echo '';
  }
 
  else
  {
   echo 'Détails : '.nl2br($details).'';
  }
 
  echo '<hr />';
 
  $reponse2 = mysql_query('SELECT COUNT(*) AS places_occupees FROM noms WHERE activite = '.$id.'') or die(mysql_error());
  $donnees2 = mysql_fetch_array($reponse2);
  $places_occupees = $donnees2['places_occupees'];
 
  if($places_occupees == 0)
  {
   echo 'Aucun membre ne s\'est inscrit pour cette activité.';
  }
 
  else
  {
   echo '<strong>Liste des membres pour cette activité ('.$places_occupees.'/'.$places.')</strong><br />';
  }
 
  $reponse3 = mysql_query('SELECT * FROM noms WHERE activite = '.$id.' ORDER BY id ASC') or die(mysql_error());
  while ($donnees3 = mysql_fetch_array($reponse3))
  {
   $nom = $donnees3['nom'];
   echo '<input type="text" name="nom" value="'.$nom.'" disabled="disabled" /><br />';
  }
 
  echo '</fieldset><br />';
 }
 
 mysql_close();
?>

 

Requête pour créer les deux tables dans la BDD :

 
Citation :


CREATE TABLE IF NOT EXISTS `noms` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `activite` int(11) NOT NULL,
  `nom` varchar(55) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ;

 
Citation :


CREATE TABLE IF NOT EXISTS `activites` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `activite` varchar(100) NOT NULL,
  `details` text NOT NULL,
  `places` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


Message édité par NostalGeekette le 27-09-2009 à 20:26:19
n°1924377
stealth35
Posté le 16-09-2009 à 00:27:36  profilanswer
 

humm pas trop protégé ton truc, je m'amuse bien

n°1924478
NostalGeek​ette
Posté le 16-09-2009 à 11:55:15  profilanswer
 

En attendant, c'est moi qui ait fait le code, pas toi... >_<
Propose tes améliorations au lieu de "t'amuser"...

n°1924490
schnoqueur
Posté le 16-09-2009 à 12:39:57  profilanswer
 

Génial  :sol: Je vais tester tout ça ;)


---------------
Mon ancien feedback A/V : http://forum.hardware.fr/hfr/Achat [...] 3624_1.htm

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Créer formulaire inscription

 

Sujets relatifs
crée un formulaire a partire d'une image de fond?Créer un script au démarrage d'un jeu
créer page automatiquement en php membre[Prog Windows] Créer de nouveaux comptes pop3 dans outlook par code
formulaire/recherche de case vide/messagecréer un tableau d'images cliquables sans espaces
Probléme avec mon formulaire EmailConfirmation inscription par sms
implémenter et créer un arbre en java 
Plus de sujets relatifs à : Créer formulaire inscription


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR