Formulaire d'inscription complexe

bonjour,

j’aimerais, pour le compte d’une association créer un module d’inscription. par exemple, les adhérents se rendront sur une page où il retrouveront un tableau dans lequel ils pourront intéragir :

date / evenement / buvette / nettoyage / accueil
10/03/09 / fete / “je m’inscris” / “je m’inscris” / “je m’inscris

l’idée c’est qu’ils puissent pour chaque évenement s’inscrire dans le rôle qu’ils préferent. en sachant qu’il ne peut y avoir qu’une personne par rôle, donc si quelqu’un est inscris dans buvette, le lien “je m’inscris” disparaît…

j’espère que c’est assez clair pour que vous puissiez m’aider.

merci d’avance !
Edité le 13/03/2009 à 15:41

Déjà, pour savoir si la personne est inscrite quelque part, il va déjà falloir que celle-ci s’inscrive, ce qui sous-entends avoir une BD, à la limite un fichier XML.
Ensuite à l’affichage de la page, aller voir si la personne se trouve dans la BD dans la section buvette ou autre si elle s’y trouve, si oui, ti n’affiche pas…
Ceci sous-entend qu’elle devra se loguer une première fois, sinon, comment identifier la personne?

Plutot que de se faire chier développer ou faire développer le module, tu as une autre solution extremement simple : le wiki.

Pour ce genre de contenu, à quoi ca sert de s’inscrire dans une base quand l’idée est juste de mettre son nom dans un tableau ? Tu vas sur la page en question, tu l’édites, tu poses ton nom, valider et on n’en parle plus.

effectivement le wiki pourrait répondre à mes attentes puisque je n’ai pas besoin d’identification. c’est une asso donc confiance entre les gens qui n’ont juste à mettre leur nom là où ils veulent aider.
ma question maintenant, quel moteur me conseillez vous et le style graphique est-il personnalisable ou au moins peut-on l’intégrer dans le site par un include ou une frame ?
Edité le 14/03/2009 à 12:26

Heu… Mouaip… Installer un wiki complet pour gérer une page de formulaire… Mouaip.

Après, développer ce type de formulaire, n’est pas compliqué et en effet ne nécessite pas de sortir l’artillerie lourde. Un simple scripte PHP qui ouvrirait un fichier texte type CSV (ou autre séparateur) (pas besoin de créer un XML avec parseur là…), lirait chaque ligne qui contient les infos telles que tu les a écrit (date;evenement;nom;nom;nom) où nom = un nom ou disons vide si personne ne s’y est inscrit. Si champ vide il propose “je m’inscris” sinon nom. Click dessus renvoi vers un simple formulaire où il faut saisir son nom et voila.

Techniquement, 2 limites : l’ajout d’évènement se fait en éditant le fichier à la mano et il n’y a pas de gestion de concurrence d’accès. Mais dans le cas présent…

Voila l’algo générale. J’irai pas plus loin car mon PHP est assez limité, mais un gars familier t’écrit le scripte en moins de temps qu’il ne faut pour récupérer, installer et paramétrer mediaWiki…

Dans tous les cas attention : tu n’est pas à l’abri des bots qui feraient n’importe quoi. Mais là, pur les 2 solutions c’est plus long et plus complexe.

ouai c’est sur qu’installer un moteur wiki sans connaitre me prendrai plus de temps que de dévelloper du php.
en fait, dans ce site, j’utilise un script de news, je vais essayer de l’adapter à ce besoin.

pour moi, ton “simple” script avec CSV c’est déjà du lourd ! je suis autodidacte en dévellopement donc je prend un temps fou à faire des choses basiques.

merci pour le coup de main !

Lol, j’ai pas dit que c’était du monoligne non plus :smiley: Et plus bas, j’ai bien dit un gars familier avec Php (et le dev) :wink:

Par “simple”, je veux dire qu’il n’y a là dedans qu’un scripte de lecture d’un fichier texte et insertion de ces données dans un tableau (le reste de la page est statique après tout) et un autre d’insertion de données dans ce fichier. IL n’y a pas besoin d’un développement complet avec gestion de connexion, session, source de données, tout ça tout ça :wink:

Bon, conseil en plus pour rester simple et t’avancer : chaque activité est identifiée par son évènement (le numéro de ligne par exemple) et son ordre (buvette=1, nettoyage=2…). Ca te permet de générer les liens Je m’inscris pour faire les insertions.

Voila pour faire avancer encore un peu?

Au fait, 1 personne au nétoyage ? Tortionnaire va !!! :smiley:

:slight_smile: non …juste un exemple le nettoyage ! mais n’empeche qu’il en faut dans les évenements organisés par les assos.

revenons aux choses sérieuses. j’ai donc adapté mon script de news.
j’ai 2 pages PHP : liste_dirigeants.php (dans laquelle on retrouve un tableau récapitulatif des entrées dans la BDD) et rediger_dirigeants.php (pour entrer des infos dans la BDD).
ce script marche à merveille avec mes news pour lesquelles je n’entre qu’un “titre” et un “contenu”, l’ID étant automatique.
là j’ai juste ajouter des éléments à entrer mais j’ai du faire des oublis ou des erreurs dans le code parcequ’il n’y a rien qui entre dans la BDD (aucun message d’erreur concernant la connection à la BDD, en cliquant sur “envoyer” on retourne bien sur liste_dirigeants mais rien n’est entré dans la base).

j’ai donc fait une insertion manuelle directement dans phpmyadmin et mes entrées apparaissent bien dans liste_dirigeants.php
voici mon code :

REDIGER_DIRIGEANTS.php

<?php 
				mysql_connect("secret", "secret", "secret");
				mysql_select_db("secret");

if (isset($_GET['modifier_dirigeants'])) // Si on demande de modifier une entrée
{
    // On récupère les infos de la correspondante
    $retour = mysql_query('SELECT * FROM dirigeants WHERE id=' . $_GET['modifier_dirigeants']);
    $donnees = mysql_fetch_array($retour);
    
    // On place le titre et le contenu dans des variables simples
    $date = stripslashes($donnees['date']);
    $heure = stripslashes($donnees['heure']);
	$match = stripslashes($donnees['match']);
	$responsable = stripslashes($donnees['responsable']);
	$feuille = stripslashes($donnees['feuille']);
	$score = stripslashes($donnees['score']);
	$arbitre = stripslashes($donnees['arbitre']);
	$buvette = stripslashes($donnees['buvette']);
    $id_dirigeants = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification
}
else // C'est qu'on rédige une nouvelle dirigeants
{
    // Les variables $titre et $contenu sont vides, puisque c'est une nouvelle dirigeants
    $date = '';
    $heure = '';
	$match = '';
	$responsable = '';
	$feuille = '';
	$score = '';
	$arbitre = '';
	$buvette = '';
    $id_dirigeants = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification
}
?>

<form action="liste_dirigeants.php" method="post">
<p>Date : <input type="date" size="30" name="titre" value="<?php echo $date; ?>" /></p>
<p>Heure : <input type="time" size="30" name="heure" value="<?php echo $heure; ?>" /></p>
<p>Match : <input type="text" size="30" name="match" value="<?php echo $match; ?>" /></p>
<p>Responsable de salle : <input type="text" size="30" name="responsable" value="<?php echo $responsable; ?>" /></p>
<p>Feuille de marque : <input type="text" size="30" name="feuille" value="<?php echo $feuille; ?>" /></p>
<p>Tableau des scores : <input type="text" size="30" name="score" value="<?php echo $score; ?>" /></p>
<p>Arbitre : <input type="text" size="30" name="arbitre" value="<?php echo $arbitre; ?>" /></p>
<p>Buvette : <input type="text" size="30" name="buvette" value="<?php echo $buvette; ?>" /></p>
<br />
    
    <input type="hidden" name="id_dirigeants" value="<?php echo $id_dirigeants; ?>" />
    <input type="submit" value="Envoyer" />
</p>
</form>

et liste_dirigeants.php

<?php 
				mysql_connect("secret", "secret", "secret");
				mysql_select_db("secret"); 


//-----------------------------------------------------
// Vérification 1 : est-ce qu'on veut poster une dirigeants ?
//-----------------------------------------------------

if (isset($_POST['date']) AND isset($_POST['heure']) AND isset($_POST['match']) AND isset($_POST['responsable']) AND isset($_POST['feuille']) AND isset($_POST['score']) AND isset($_POST['arbitre']) AND isset($_POST['buvette']))
{
     $date = stripslashes($donnees['date']);
    $heure = stripslashes($donnees['heure']);
	$match = stripslashes($donnees['match']);
	$responsable = stripslashes($donnees['responsable']);
	$feuille = stripslashes($donnees['feuille']);
	$score = stripslashes($donnees['score']);
	$arbitre = stripslashes($donnees['arbitre']);
	$buvette = stripslashes($donnees['buvette']);
    // On vérifie si c'est une modification de dirigeants ou pas
    if ($_POST['id_dirigeants'] == 0)
    {
        // Ce n'est pas une modification, on crée une nouvelle entrée dans la table
        mysql_query("INSERT INTO dirigeants VALUES('', '" . $date . "', '" . $heure . "', '" . $match . "', '" . $responsable . "', '" . $feuille . "', '" . $score . "', '" . $arbitre . "', '" . $buvette . "')");
    }
    else
    {
        // C'est une modification, on met juste à jour le titre et le contenu
        mysql_query("UPDATE dirigeants SET date='" . $date . "', heure='" . $heure . "', match='" . $match . "', responsable='" . $responsable . "', feuille='" . $feuille . "', score='" . $score . "', arbitre='" . $arbitre . "', buvette='" . $buvette . "' WHERE id=" . $_POST['id_dirigeants']);
    }
}


//--------------------------------------------------------
// Vérification 2 : est-ce qu'on veut supprimer une dirigeants ?
//--------------------------------------------------------

if (isset($_GET['supprimer_dirigeants'])) // Si on demande de supprimer une dirigeants
{
    // Alors on supprime la dirigeants correspondante
    mysql_query('DELETE FROM dirigeants WHERE id=' . $_GET['supprimer_dirigeants']);
}
?>

<table><tr>

<th>Date</th>
<th>Heure</th>
<th>Match</th>
<th>Responsable de salle</th>
<th>Feuille de match</th>
<th>Tableau score</th>
<th>Arbitre</th>
<th>Buvette</th>
<th>Je m'inscris</th>
<th>Supprimer</th>
</tr>

<?php
$retour = mysql_query('SELECT * FROM dirigeants ORDER BY id DESC');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les dirigeants
{
?>

<tr>

<td><?php echo stripslashes($donnees['date']); ?></td>
<td><?php echo stripslashes($donnees['heure']); ?></td>
<td><?php echo stripslashes($donnees['match']); ?></td>
<td><?php echo stripslashes($donnees['responsable']); ?></td>
<td><?php echo stripslashes($donnees['feuille']); ?></td>
<td><?php echo stripslashes($donnees['score']); ?></td>
<td><?php echo stripslashes($donnees['arbitre']); ?></td>
<td><?php echo stripslashes($donnees['buvette']); ?></td>
<td><?php echo '<a href="rediger_dirigeants.php?modifier_dirigeants=' . $donnees['id'] . '">'; ?>Insciption</a></td>
<td><?php echo '<a href="liste_dirigeants.php?supprimer_dirigeants=' . $donnees['id'] . '">'; ?>Suppression (réservé max)</a></td>
</tr>

<?php
} // Fin de la boucle qui liste les dirigeants
?>

voila, moi perso j’ai un doute sur les isset dans le 2eme code…
Edité le 15/03/2009 à 12:27

Ohé, un wiki, c’est pas un terme technique qui implique d’être bac+14 pour l’utiliser … C’est comme installer un forum.

Le tout, c’est d’en trouver un qui te propose les fonctionnalités que tu cherches : édition anonyme, themes, prérequis logiciels.

Qui serait donc le plus rapide ?

  1. Installer / configurer une architecture type LAMP + développer les pages
  2. Installer Wordpress + doodle (sondage)

Bon les gens aprés une semaine de dev j’ai réussi à obtenir ce que je voulai !

pour les intéréssés je partage le code si vous le souhaitez