Inscription en ligne, agenda collectif

Soyez le premier à donner votre avis sur cette source.

Snippet vu 22 497 fois - Téléchargée 30 fois

Contenu du snippet

Voila une petite page que j'ai faite pour une association,le principe est que chacun peut s'inscrire en ligne sur une date et son nom sera affiché de la couleur qui correspond à sa fonction.
Il est très simple a adapter, il n'y a même pas besoin de tout comprendre et vous avez votre planning , ça peut même servir a toute forme travail collectif, chacun pouvant s'inscrire pour une tache donnée.
J'ai tout fait pour que ce soit aisé a utiliser , et j'ai mis des ## a coté de ce qu'il faut adapter

utilisation
Pas besoin de SQL donc ça fonctionne chez n'importe quel hébergeur
Il suffit de créer un dossier data qui contient des fichiers textes qui correspondent a chaque case du tableau sous la forme 1+date+.txt,2+date+.txt... ( les '+' sont nécessaires) le contenu donne la liste des participants
et une feuille de style css qui permet d'afficher chaque nom avec une couleur en fonction de la fonction du participant

j'espère que ça vous sera utile, si vous l'utilisez prévenez moi...

Source / Exemple :


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <title>Inscription en ligne</title>
    <link rel="stylesheet" href="./styles/style_general.css" type="text/css">
    <link rel="stylesheet" href="./styles/personnes.css" type="text/css">
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
	<META name="Author" lang="fr" content="Trismuth">
</head>

<body>

<?php include("./bibli/entete.php") ?><!--un petit truc discret a mettre en haut de toutes vos pages, suffit d'avoir un sous dossier bibli ou vous méttez les deux autres fichiers !-->

<H1>Agenda collectif <IMG align="right" src="adresse d'une petite image sympa"></H1>
<p class=".default"><br><br><br><br></p>

<?php 

//precondition:  IL faut que le dossier ./data contienne des fichier  "ordre"+date+.txt
//ou ordre est l'odre dans lequel vous voulez que les date apparaissent
//************* phase d'éxécution d'une requete ********************************************************
$err="Erreur d'accès au fichier, veuillez rééssayer dans un instant";
if($_GET['lePrenom']!="") {
	switch($_GET["requete"]){
		
//ajout
		case 1:
		//On utilise flock a chaque ouverture de fichier, pour éviter les problemes si plusieurs
		// personnes se connectent en meme temps.
		($freq=fopen($_GET["fichier"],'a')) or die ("$err") ;
		fputs($freq,$_GET["niv"]."/ ".$_GET["lePrenom"]."\n");
/*attenion , si vous éditez les fichiers a la main n'oubliez pas de mettre "entrée ala fin de chaque fichier*/
// $niv représente le type de personne qui s'inscrit déterminela couleur dans laquelle ça s'afficheras
		fclose($freq);
		break;
		
		
		//retrait
		case 2:
		
		//copie du fichier de départ dans un fichier "tmp.txt
		($ancien = fopen("$_GET[fichier]",r)) or die ("$err") ;
		flock($ancien,LOCK_EX);
		touch('tmp.txt');
		($tmp = fopen('tmp.txt',w)) or die ("$err");
		flock($tmp,LOCK_EX);//lock_ex=2 protege le fichier en ériture et en lecture
			while (!feof( $ancien )){
			//echo "@$ligne@";  --> juste pour le débuggage
			$ligne=fgets( $ancien , 1024 );
			(($ligne!="\n")&&(fputs($tmp,"$ligne")));
			}
		flock($ancien,LOCK_UN);	
		fclose($ancien);
		flock($tmp,LOCK_UN);
		fclose($tmp);
			
		//recopie dans le fichier de départ , sauf la ligne contenant le prénom cherché ou leslignes vides		
		
		($tmp = fopen('tmp.txt',r)) or die ("$err") ;
		flock($tmp,LOCK_EX);
		($freqq=fopen("$_GET[fichier]",w)) or die ("$err");
		flock($freqq,LOCK_EX);
			while (!feof($tmp)){
			$ligne=fgets($tmp,1024);
				//echo "!$ligne!";
				if (($ligne!="")&&(!(strstr($ligne,$_GET['lePrenom'])))){
				fputs($freqq,$ligne);//echo "@$ligne@";
				}
			}
		flock($reqq,LOCK_UN);	
		fclose($freqq);
		flock($tmp,LOCK_UN);
		fclose($tmp);
		unlink('tmp.txt');	
	
		
		
		//unlink($_SERVER["REMOTE_ADDR"].'.txt');
		break;
		
	
	}
}
//affichage rapide du tableau _get
/*echo "<pre>";          --->  encore pour le debuggage
print_r($_GET);
echo "</pre>";*/
//remise a zero du tableau get ça sert a rien mais ca a l'air plus propre ;)
$_GET=array();
/*echo "<pre>";
print_r($_GET);
echo "</pre>";*/
//*************** fin execution requete *********************************************************

//**************initialisation du tableau a partir du contenu de ./data";**
$dh = opendir("./data");
while ($fichier = readdir($dh)){
	if(substr($fichier,-5)=="+.txt"){
	$listeDates[strtok("$fichier","+")]= strtok("+");	
	}
}
closedir($dh);
ksort($listeDates);

//affichage su tableau
echo '<table width="100%" border="1">';
 // 1ligne: titre
 echo"<tr><td><H3>Date</h3></td><td><H3>Participants</h3></td><td><H3>Commandes</h3></td><tr>";	
 
 
 foreach($listeDates as $cle=>$date){
	echo "<tr>";
	//premiere colone date
	echo '<td><DIV class="dateclass">'.$date.'</DIV></td>';
	
	//deuxieme colone avec le contenu du fichier
	echo    "<td>";
	$fchemin="./data/$cle+$date+.txt";
	$fp=fopen("$fchemin",r);
		while (!feof($fp)){
		
		list($niv,$ligne)=split("/",fgets($fp,1024));// yavais plus simple?
			if($ligne!=""){
			echo "<DIV class=\"".$niv."class\">".$ligne."<br></DIV>";
			}
		}
	fclose($fp);
	echo "</td>";
	
	//troisiem colone avec les commandes entierement en html
	?>
	<td>
		
		<form method="GET" action="<?php $_SERVER['PHP_SELF']; ?>">
			S'ajouter
			<input type="text" value="" name="lePrenom"/>
			<select name="niv">
				<option value="t1">Type d'incrit 1</option>
				<option value="t2">Type d'inscrit 2</option>
				
			</select> 
			<input type="hidden" name="fichier" value="<?php echo $fchemin; ?>" />
			<input type="hidden" name="requete" value="1" />	
			<input type="submit" value="envoyer"/>
		</form>
		
		<form method="GET" action="<?php $_SERVER['PHP_SELF']; ?>">
			Se desinscrire
			 <select name="lePrenom">     
				<?php
				$fp=fopen("$fchemin",r);
				while (!feof($fp)){
				list($niv,$ligne)=split("/",fgets($fp,1024));
					if($ligne!=""){
					echo "<option value=$ligne>$ligne<br>";
					}
				}
				fclose($fp);
				?>
			</select>
			<input type="hidden" name="fichier" value="<?php echo $fchemin; ?>" />
			<input type="hidden" name="requete" value="2" />	
			<input type="submit" value="envoyer"/>
			</form>
		
	</td>
	
	<?php
	//finligne 	
	echo "</tr>"; 
} 

echo "</table>";

//*************************** fin affichage tableau**********
//
/*
echo "<pre>";
print_r($listeDates);
echo "</pre>";

  • /
?> Trismuth prod </body> </html>

Conclusion :


C'est ma première production, en le relisant je pense que ça ce voit, j'apprécirais tout les commentaires qui pourraient m'aider a progrésser un peu en php ( je pense que j'ai pas toujours fait au plus simple, pratique ou sur) et en html ( notamment au niveau des entetes )
Autant apprendre bien dès le départ>... merci d'avance ; )

A voir également

Ajouter un commentaire

Commentaires

Messages postés
56
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2012

Quelqu'un peut-il m'aider, j'ai pas tout compris.
ça m'arrangerait beaucoup.
Par avance Merci.
Messages postés
11
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
14 mars 2017

Bonsoir
Merci, Trismuth, pour la réponse rapide et efficace apportée : ça fonctionne très bien et cela me va très bien !
J'ai compris la syntaxe du nom des fichiers txt à créer, c'est opérationnel !
Cordialement
Yann
Messages postés
11
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
14 mars 2017

Bonjour
La présentation de ce planning semble tout à fait convenir à ce que je veux faire (inscription de membres à différentes dates possibles) seulement je ne vois pas la structure des fichiers "date.txt" et "ordre.txt" ni l'arborescence complète du dossier en ligne.
si quelqu'un veut bien me dépanner, merci d'avance .
Cordialement
Yann
Messages postés
1
Date d'inscription
vendredi 14 mars 2008
Statut
Membre
Dernière intervention
6 juin 2009

Salut !

Je vais tester ton script pour la même raison que tout le monde, pour une association ^^. J'ai juste vu le screenshot, c'est tout à fait ce qu'il me faut ! Mais, pourraient-t'ont pas faire que quand j'ajoute un nom, je peux seulement supprimer le nom qui correspond à mon IP quand je l'ai ajouté ?

ça éviterait qu'un petit malin désinscrive tout le monde ^^
Messages postés
1
Date d'inscription
jeudi 20 novembre 2008
Statut
Membre
Dernière intervention
21 novembre 2008

salut,
j'prepare un site pour mon asso, c'est exctement ce que j'ai besoin !!
le truck c'est que j'sais pas du tout comment l'installer ?! manquerai pas des pages ou une architecture ?
en tut cas si quelqu'un pouvait m'aider ça s'rai sympa.
++
hugo

http://fev.c.la
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.