Forum Clubic

Probleme disposition calendrier php/html avec

Bonjour,

Je suis actuellement en train de créer un calendrier pour réserver des salles.
Je vais faire un calendrier par espace(par exemple Salle des fêtes) et dans cet espace j’ai plusieurs salles(petite,grande,bar…).

J’ai déjà créé le calendrier à la semaine, avec les jours en haut et avec les heures sur la gauche, de 00h a 23h30.
Je l’ai fait avec la balise

mais le soucis c’est que je veux pouvoir réserver par exemple 4 salles dans l’espace et pour la même heure et le même jour.
J’ai essayé de séparer une cellule ( ) en mettant une autre table dedans mais cela ne fonctionne pas…

Pour faire simple :smiley:

Ça c’est ce que j’aimerais que ca donne :

_________Lundi
8h00_____A B C
9h00_____A B C

A ou B ou C = une salle

Ça c’est ce que ca donne :

_________Lundi__Mardi
8h00______A_____B
9h00______A_____B

Donc mon problème serait de séparer la colonne “Lundi” en plusieurs parties.

J’ai pensé le faire en important un tableau excel, mais cela est-il possible ?
Faut-il que je le fasse en JavaScript ? Ou continuer en html/php ?

Merci de vos réponses (constructives ^^) )

Napalm

Bonjour,
Ne serait-ce pas l’attribut colspan que tu recherches? :slight_smile:

<table border=1>
	<tr>
		<td>Horaire\Jour</td>
		<td colspan=3>Lundi</td>
		<td colspan=3>Mardi</td>
	</tr>	
	<tr>
		<td>8h00</td>
		<td>A</td>
		<td>B</td>
		<td>C</td>
		<td>A</td>
		<td>B</td>
		<td>C</td>
	</tr>	
	<tr>
		<td>9h00</td>
		<td>A</td>
		<td>B</td>
		<td>C</td>
		<td>A</td>
		<td>B</td>
		<td>C</td>
	</tr>	
</table>

Merci d’avoir répondu Merlon!

C’est bien colspan que je recherché :slight_smile: Merci bien !

Par contre, tu sais comment je peux repérer la case précise? En fait je doit faire un clique dessus et il faut que je sache si ca vient de A ou de B et pour quel jour… Comment faire pour savoir ? As tu une idée ?

En tout cas merci ca va bien m’aider !

Napalm

Bah, euh … xD
Je n’ai pas tous les éléments donc, je veis pas te pondre un code ce coup-ci.
Mais le principe est simple, tu vas générer ton tableau via une boucle je suppose, donc tu as simplement à mettre des liens dans tes cellules qui va t’exécuter un code en javascript en passant un paramètre unique.
Sur l’évènement onclick 1) tu affiches le formulaire 2) tu rempli un champ caché avec le paramètre que tu avais passé.

Et hop tu auras toutes les infos a porter de mains pour effectuer le code d’ajout dans la bdd.

En espérant avoir été claire :slight_smile:
Edité le 08/02/2011 à 16:46

Salut,

Pas mieux que Merlon.
Tente déjà de construire ton tableau statique correctement. Ensuite rends le dynamique en attribuant un id différent à chacune de des cases. Utilise une variable qui s’incrémente par exemple, dans ta boucle de construction du tableau. Tu peux faire deux boucles imbriquées (une pour les lignes, une autre pour les colonnes), je pense que ce que tu veux faire le permet.

Bref, quelle que soit la solution que tu emploies pour générer ton tableau, les attributs de tes

(ou de ce qu’il y a à l’intérieur, ça dépend de ce que tu rends dynamique) seront générés en fonction d’une valeur qui s’incrémentera ou qui dépendra des deux variables de ta double boucle imbriquée.

Ensuite, tente d’afficher l’id de la case cliquée à l’écran pour être sûr que tu sais récupérer l’id.

Enfin, bâtis tes traitements une fois que tu as fait ça.

Bon courage. :wink:

Merci !

J’ai fais à peu prés la solution que vous m’avez donnée.

J’ai une fonction JavaScript qui permet de me lancer une fenêtre popup et je lui passe en argument le jour,l’id et ca va a peu près.

je vous joint le code si vous avez des suggestions ou pour mieux voir ou si certaines personnes veulent faire la même chose.

Par contre je n’ai pas fait de boucle sur colonne/ligne comme tu m’a dit car je ne vois pas du tout comment faire…
Je galère un peu a faire des colonnes et lignes avec les



function calendrier2()
		{
			if(isset($_GET["lundi"])) // Une semaine précise est demandée
			{
			$ts = $_GET["lundi"];
			}
			else //On prendra la semaine d'aujourd'hui
			{
			$day = (date('w') - 1); //Jour dans la semaine... Lundi = 0
			$diff = $day * 86400; //Différence en secondes par rapport au lundi - exemple : mercredi(2) * 86400 
			$ts = (mktime() - $diff); //On récupère le TimeStamp du lundi
			}
    	
			//Initialisation des variables
			$jour = date('d',$ts); // Jour en cours '01'
			$mois = date('m',$ts); // Mois en cours '01'
			$annee = date('Y',$ts); // Année en cours '2000'			
			$week = date('W', $ts); //Semaine en cours '01'
			$avant = $ts - 604800; //TimeStamp Lundi précédant = le ts du lundi - 60sec * 60min * 24h * 7jours
			$apres = $ts + 604800; //TimeStamp Lundi suivant = le ts du lundi + 60sec * 60min * 24h * 7jours

			echo '<div align="center">';
			echo '<a href="calendrier.php?lundi='.$avant.'"> Semaines Precedentes </a> - Semaine n°'.$week.' - <a href="calendrier.php?lundi='.$apres.'"> Semaines Suivantes </a>';
			// On affecte a la page la variable "lundi" en lui donnant comme valeur le timestamp de la semaine d'avant "$avant" ou de la semaine d'après "$apres"
			echo '</div>';

			
			$jours = array(1 => "Lundi",2 => "Mardi",3 => "Mercredi",4 => "Jeudi",5 => "Vendredi",6 => "Samedi",7 => "Dimanche");
			
			echo '</tr><tr><td width="60" > Jours/<br>Heures</td>';
			for($i=1;$i<8;$i++) //Pour chaque jour de la semaine... Lundi = 1
			{
				if( ($i == date('w')) && ($week == date('W')) ) //S'il s'agit d'aujourd'hui, on met le jour en jaune (jour && semaine)
				{
					echo '<td align="center" style="background-color:yellow"; width="14%" colspan="4"><b>'.$jours[$i].' '.date('d M Y', $ts).'</b></td>';
				}
				else // Sinon si c'est pas aujourd'hui on met le jour sans couleur
				{
					echo '<td align="center" width="14%" colspan="4"><b>'.$jours[$i].' '.date('d M Y', $ts).'</b></td>';
				}
				$ts = $ts + 86400; //On passe au jour suivant car un jour = 60sec * 60min * 24h
			}
			echo '</tr>';
			
			echo '<tr>';
			
      for($heure=0;$heure<24;$heure++) // Boucle pour afficher les heures
			{
				echo '<td>'.($heure).'h00</td>'; // Affiche l'heure pleine
				
					for($j=0;$j<7;$j++) // Affiche les cases à séléctionner
						{
							$time = $heure."h00";
							echo '<td align="center" bgcolor="red" onMousedown="javascript:alert(\''.$time.'\')" ></td> <td align="center" bgcolor="green"> </td> <td align="center" bgcolor="blue"> </td> <td align="center" bgcolor="yellow"> </td>';
						}
						
				echo '</tr><tr>';
					
				echo '<td >'.($heure).'h30</td>'; // Affiche l'heure et demie
				
				for($j=0;$j<7;$j++) // Affiche les cases à séléctionner
					{
							$time = $heure."h30";
							$ce_jour = mktime(0, 0, 0, $mois, $jour, $annee);
							$ce_jour = $ce_jour+($j * 86400);
							
							echo '<td align="center" bgcolor="red" OnClick="javascript:info(\'1\',\''.$time.'\',\''.$ce_jour.'\')" ></td></td> <td align="center" bgcolor="green"> </td><td align="center" OnClick="info()" bgcolor="blue" ></td> <td align="center" bgcolor="yellow"> </td>';
							
							// echo '<td align="center" bgcolor="red" OnClick="javascript:info(\'rouge\')" ></td></td> <td align="center" bgcolor="green"> </td><td align="center" OnClick="info()" bgcolor="blue" ></td> <td align="center" bgcolor="yellow"> </td>';
					}
				echo '</tr><tr>';
			}
			
			echo '</tr></table>';
			echo '<div align="center">';
			
			echo '<div align="center"><a href="calendrier.php?lundi='.$avant.'"> Semaines Precedentes </a> - Semaine n°'.$week.' - <a href="calendrier.php?lundi='.$apres.'"> Semaines Suivantes </a>';
			// On affecte a la page la variable "lundi" en lui donnant comme valeur le timestamp de la semaine d'avant "$avant" ou de la semaine d'après "$apres"
			echo '</div>';			
	}
	
?>

<script>
function info(i,t,j)
{
	var id = i;
	var time = t;
	var jour = j;
	
	alert('id : '+id+', time : '+time+', jour : '+jour);
	//window.open("info.php?bouton=test", "Informations rouge"," directories=no, location=no, width=500, height=300");
	
}
</script>

En tout cas grand merci de m’avoir répondu!

Napalm