[PHP/MySQL] Créer une interface d'affichage multimédia

Créer une interface d'affichage multimédia [PHP/MySQL] - PHP - Programmation

Marsh Posté le 18-01-2010 à 15:10:53    

Bonjour à tous !
 
Je viens vous trouvez car j'ai besoin de votre aide pour la réalisation de mon projet tutoré.
 
Tout d'abord, le sujet.  
Dans l'établissement nous avons une TV, et celle-ci dois servir pour afficher durant la journée des informations diverses et variée (météo, emploi du temps, prof absents, news, annonce...). Cette TV sera relié bien évidemment à un PC.
Notre but est donc de concevoir ce qui permettra de programmer et gérer ce qui sera à afficher.
 
Au début j'avais pensé faire une application en Java, mais d'après notre prof il serai préférable de la faire en PHP et MySQL, pour permettre une mise a jour à distance plus facilement.
N'ayant aucune connaissance sur le sujet, je suis aller sur le site du zero et je me suis fait les chapitre HTML/CSS/PHP/MySQL.
 
Sauf que je ne sais pas par quoi commencer, vu que dans ces cours, mon sujet n'est pas spécialement aborder.
 
Pour la base je pensais présenter sur une page une semaine avec plusieurs créneaux horaires, puis par un menu déroulant sur chaque créneau, choisir ce que l'on veut afficher.
 
Est ce que vous pourriez m'aiguillez sur les directions a prendre ?
 
Dans tout les cas je vous remercie pour tout les infos que vous pourrez me donnez :)


---------------
[Mon Feed-Back]  
Reply

Marsh Posté le 18-01-2010 à 15:10:53   

Reply

Marsh Posté le 18-01-2010 à 15:39:24    

Salut à toi,
Efffectivement le début est souvent difficile, déja avant de commencer (d'après moi) ce que je ferais, c'es une liste des choses que tu va afficher sur la page.
 
Ensuite pour chaque choses à afficher tu créer un document .php par exemple meteo.php news.php etc... et tu t'attaque à eux 1 par 1, mais tu t'occupe juste de faire fonctionner le programme c'est tout ! , ensuite tu fera des includes sur ta page finale et tu t'occupera du design avec html/css =)
 
Bonne chance !

Reply

Marsh Posté le 18-01-2010 à 16:17:09    

Tu peux regarder aussi du côté des CMS genre spip, joomla... Ca pourrait répondre à ton besoin.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 20-01-2010 à 18:31:35    

Bon j'ai regarder un peu joomla, mais pas trop compris le fonctionnement :??:
 
Sinon j'ai commencer a faire ma page d'acceuil, donc celle ou on présente l'emploi du temps avec ce que l'on doit afficher.
 
J'ai utilisé une boucle pour réaliser mes cases, en insérant dans chacune un numero ainsi qu'une liste déroulante.
Au final ça donne un truc comme ça :  
 
http://img29.imageshack.us/img29/5968/emploitemps.png
 
Maintenant je bloque sur comment faire pour que lorsque qu'on choisissent dans la liste déroulante, ça ouvre une fenetre pour indiqué le choix correspondant, et que ça le sauvegarde ?
 
Apparement il faudrait le faire en javascript pour ouvrir dans une nouvelle fenetre ?
Récupéré ensuite dans une base de donnée MySQL ?
 


---------------
[Mon Feed-Back]  
Reply

Marsh Posté le 21-01-2010 à 09:27:19    

Citation :

Bon j'ai regarder un peu joomla, mais pas trop compris le fonctionnement


Si t'as pas trop compris comment ça fonctionne, je ne vois pas comment tu vas t'en sortir pour coder une ihm multimédia from scratch :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 21-01-2010 à 10:46:09    

Bon après hésitation, j'ai re DL joomla, apparement ça avait planter pendant l'extraction et du coup ça plantais.
J'ai regarder vite fait, et j'en doute pas que pour réaliser un site web ça soit nikel, mais bon ce que je dois faire j'avoue ne pas trop voir comment ça pourrais m'aider :s
Après, je suis pas une bête en programation web, j'ai vu les 4 langages principaux en 1 mois sur le site du zero donc bon, mes compétences sont assez limité :(


---------------
[Mon Feed-Back]  
Reply

Marsh Posté le 21-01-2010 à 11:13:28    

en gros, tu veux afficher des pages web sur une TV, à des heures données.
L'édition du contenu des pages web sera géré par joomla (ou spip ou tout autre cms). Sur certains cms, on peut dire à partir de quelle date et heure la page doit être dispo. Par contre, pour le côté périodique, je ne sais pas. Là, faudra peut-être mettre en place une petit IHM qui ira remplir le CRON (si t'es sous linux) ou le planificateur de tâche si t'es sous windows (là, y'a déjà une IHM).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 21-01-2010 à 11:34:19    

Oula, c'est encore pire que ce que je pensais xD
 
En fait je pensais faire une table mysql avec un champ pour le n° de cellule est un pour savoir ce qui doit etre indiquer.
Ensuite on fait l'affichage avec les timestamp pour avoir les bonne durée.
 
Sinon pour le moment j'ai réussi a faire ouvrir une popup lorsque l'on choisi un item dans le menu déroulant. Mais j'arrive pas a récupérer la valeur de la cellule dans la popup.
 
 
Pour le moment mon tableau est constitué de liste déroulante ainsi faite :
 

Code :
  1. <form method="post" >
  2.        <p>
  3.         <select name="<?php echo"$cellule"; ?>" id="<?php echo"$cellule"; ?>" onChange="choix=this.options[this.selectedIndex].value;if (choix){menuderoulant2 (...)}">
  4.         <option value="vide" selected="selected"> </option>
  5.         <option value="pageweb.php">Page Web</option>
  6.         <option value="video.php">Video</option>
  7.         <option value="emploitemps.php">Emploi Du Temps</option>
  8.         </select>
  9.        </p>
  10.       </form>


 
grace à

Code :
  1. id="<?php echo"$cellule"; ?>"

chaque cellule a son numéro
Mais comment faire pour le récupérer dans la popup ?

Code :
  1. $_POST['$cellule']

ne fonctionne pas, ou alors j'ai loupé quelque chose ?
 
dans le 'form' je ne peux pas mettre "action=page.php" puisque ce n'est pas la même selon le choix :??:


---------------
[Mon Feed-Back]  
Reply

Marsh Posté le 21-01-2010 à 11:49:25    

passage par la méthode GET de l'id de la cellule à la page ouverte dans le popup.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 28-01-2010 à 20:34:06    

Oui merci rufo, grace à ça j'ai pu faire passer mes 3 parametre dans l'adresse, puis les récuperer dans ma popup :)
 
Bon depuis j'ai un peu avancé.
J'ai changer le mode de fonctionnement.
La page d'accueil présente l'emploi du temps avec dans chaque cellule un bouton "organiser" qui ouvre sur cette popup :
 
Et le résultat que cela produit :  
http://img4.imageshack.us/img4/4894/popupg.th.png
 
On rentrer les infos, et le bouton "ok" met à jour la base de données ou sont référencé les cellules.
 
Je voulais savoir si il est possible d'enlever le bouton "ok" et d'executer la requete de mise a jour lorsqu'on clique sur le bouton pour fermer la fenetre ?
 
Merci a vous :)


---------------
[Mon Feed-Back]  
Reply

Marsh Posté le 28-01-2010 à 20:34:06   

Reply

Marsh Posté le 28-01-2010 à 21:05:26    

Pour te donner quelques idées avant de partir dans tous les sens:

 

Il faut bien différencier le backend du frontend sur un site comme le tien.

 

Le backend ce sont les pages que verra celui qui rempli les infos (profs absents...). ça peut rester très sobre, il s'agit juste de remplir une base sql.
En frontend tu vas générer une page en mettant en forme les infos de cette base sql dans une page html.
Et c'est cette dernière que verra l'utilisateur (donc les élèves) sur la TV.

 

Réfléchis bien à la structure de tes tables de la base de données.
Tu dois savoir exactement les infos qui vont être stockées.

 

Ce que je ferais:
- Des pages web d'administration destinées à remplir les informations utiles à afficher. Ces infos seront stockées dans une base de données.
- Une page html générée à partir des infos de la base de données.
- Un navigateur web en mode plein ecran affiche en permanence sur la tv la page html avec un refresh auto réglé à la durée que tu veux. Il existe des plugins firefox pour ça.


Message édité par garath_ le 28-01-2010 à 21:10:24
Reply

Marsh Posté le 28-01-2010 à 23:02:40    

Merci beaucoup pour ta réponse, et je suis rassuré de voir que c'est l'idée à laquelle je pensais, meme si pour le moment certains points restent asser flou.
 
Pour le moment je crée les pages web d'administration, on voit donc l'emploi du temps et on choisi ce que l'on veux y afficher, stocker dans une base de données.
Mais l'organisation est effectivement à travailler car pour le moment ça reste très basique (une seule possibilité pour chaque créneau horaire).


---------------
[Mon Feed-Back]  
Reply

Marsh Posté le 29-01-2010 à 09:45:35    

Citation :

...avec un refresh auto réglé à la durée que tu veux.


Ou plus simplement, utiliser la fonction setTimeout() de javascript. pas besoin de plugin ou usine à gaz pour faire ça! :/


Message édité par rufo le 29-01-2010 à 09:45:48

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 31-01-2010 à 10:54:21    

Ou juste une balise meta qui refresh toutes les X secondes  ;)

Reply

Marsh Posté le 01-02-2010 à 19:09:45    

merci pour vos informations :)
 
Sinon je voulais savoir, a présent, dans ma popup, a la place d'indiquer un lien, j'ai un champ pour parcourir le disque et choisir le fichier que l'on affichera.
Le soucis, c'est que dans mon cas je n'ai aucun besoin de stocker le fichier sur le serveur, puisque tout restera en local. Je peux donc aller le chercher directement sur le disque? Mais je n'arrive pas a récupérer le chemin du fichier choisi.
Sur le serveur on a la commande $_FILES['monfichier']['tmp_name'] pour indiquer le chemin, mais ici comme je ne veux pas l'envoyer comment je peux faire ? :??:


---------------
[Mon Feed-Back]  
Reply

Marsh Posté le 02-02-2010 à 09:28:58    

non, pas direct sur le disque. Les fichiers accessibles pour apache (donc pour ton site) doivent être dans le répertoire www/. Alors, après, tu peux créer des liens sur ces répertoires pour qu'ils soient accessibles pour apache (je crois qu'on appelle ça des virtual directory).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 23-02-2010 à 18:55:28    

Re bonjour, je suis de retour ^^
 
Bon j'ai plutot pas mal avancé, j'arrive a stocker tout ce qu'il me faut globalement, ainsi qu'a lire ce qui est stocké, et a l'afficher selon les créneau sur une page.
 
Edit :
Donc j'ai fait l'affichage en utilisant la fonction date (renvoyant un jour de la semaine, ainsi que l'heure) et je récupère le tout dans un switch qui, selon le jour et l'heure, reforme le numero de la cellule a afficher. (les numero attribué a chaque cellule sont : le 1er chiffre = colonne; le 2eme = ligne)
 
http://img684.imageshack.us/img684/2262/planninge.jpg
 
Ensuite une boucle permet l'affichage selon le type de fichier de la cellule
 
 
Mon code :  

Code :
  1. // On se connecte à la base de données
  2.  mysql_connect("localhost", "root", "" ) or die('Connexion impossible à la BDD');
  3.  mysql_select_db("projet_tut" ) or die('Erreux dans le choix de la BDD');
  4.  //variables permettant de savoir ou l'on se situe dans la journée
  5.  $jour = date('l');
  6.  $heure = date('H');
  7.  //Switch pour avoir la colonne correspondante
  8.    switch ($jour) {
  9.   case 'Monday':
  10.    $cellule = 1;
  11.   break;
  12.   case 'Tuesday':
  13.    $cellule = 2;
  14.   break;
  15.   case 'Wednesday':
  16.    $cellule = 3;
  17.   break;
  18.   case 'Thursday':
  19.    $cellule = 4;
  20.   break;
  21.   case 'Friday':
  22.    $cellule = 5;
  23.   break;
  24.   }
  25.  //Switch permettant d'avoir la ligne correspondante
  26.  switch ($heure) {
  27.   case '07':
  28.    $cellule = $cellule . '0';
  29.   break;
  30.   case '08':
  31.    $cellule = $cellule . '1';
  32.   break;
  33.   case '09':
  34.    $cellule = $cellule . '2';
  35.   break;
  36.   case '10':
  37.    $cellule = $cellule . '3';
  38.   break;
  39.   case '11':
  40.    $cellule = $cellule . '4';
  41.   break;
  42.   case '12':
  43.    $cellule = $cellule . '5';
  44.   break;
  45.   case '13':
  46.    $cellule = $cellule . '6';
  47.   break;
  48.   case '14':
  49.    $cellule = $cellule . '7';
  50.   break;
  51.   case '15':
  52.    $cellule = $cellule . '8';
  53.   break;
  54.   case '16':
  55.    $cellule = $cellule . '9';
  56.   break;
  57.   case '17':
  58.    $cellule = $cellule . '10';
  59.   break;
  60.   }
  61.  //Requete d'affichage. $cellule est former selon les choix des switchs
  62.  $reponse = mysql_query("SELECT lien, type FROM planning WHERE cellule=$cellule" ) or die(mysql_error());
  63.  //Boucle pour afficher ce que contient la table, en fonction du type
  64.  while ($donnees = mysql_fetch_array($reponse) )
  65.   {
  66.   //si type = photo
  67.   if($donnees['type'] == 'photo') {
  68.   ?> <img src="uploads/<?php echo $donnees['lien'];?>" style="width:100%;height:100%" /><br /> <?php
  69.   }
  70.   //si type = video (youtube seulement)
  71.   if($donnees['type'] == 'video') {
  72.   ?> <object width="1280" height="800"><param name="movie" value="<?php echo $donnees['lien'];?>&hl=fr_FR&fs=1&autoplay=1&loop=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="<?php echo $donnees['lien'];?>&hl=fr_FR&fs=1&autoplay=1&loop=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="1280" height="800"></embed></object> <?php
  73.   }
  74.   //si type = emploitemps
  75.   if($donnees['type'] == 'emploitemps') {
  76.   ?> <iframe width="1280px"  height="800px" src="<?php echo $donnees['lien'];?>"> </iframe> <?php
  77.   }
  78.   //si type = pdf
  79.   if($donnees['type'] == 'pdf') {
  80.   ?> <iframe width="1280px" height="800px" src="uploads/<?php echo $donnees['lien'];?>"> </iframe> <?php
  81.   }
  82.   }


 
Grace à cela ça fonctionne, sauf qu'il faut rafraichir la page pour prendre en compte les changement d'heure.
Ce que j'ai fait avec :  
 

Code :
  1. <meta http-equiv="refresh" content="10">


Pour les photos, les pdf et les emploi du temps c'est pas trop génant.
Le soucis, c'est pour les vidéos de youtube, car a chaque refresh, la vidéo recommence du début.
 
Je voulais donc savoir si il était possible de ne raffraichir par exemple qu'une variable, et non la page complete.
 
Je pensais rafraichir les variables $jour et $heure, et si une de ses deux variables change, alors on rafraichit la page complete.
 
Possible ou non ? ou quel autre solutions sinon ? :??:


Message édité par LaGuiche le 24-02-2010 à 16:55:39

---------------
[Mon Feed-Back]  
Reply

Marsh Posté le 24-02-2010 à 22:48:46    

Utilise AJAX...


---------------
Fort et motivé. Sauf parfois.
Reply

Marsh Posté le 24-02-2010 à 23:52:50    

Si je comprends bien ce que tu veux (c'est un peu confus...), tu peux utiliser Javascript et setTimeout() comme quelqu'un l'a dit avant.
Cherche de la doc sur ca et la fonction Date() de Javascript pour voir comment s'en servir.
 
Si j'en crois tes screenshots, tu veux rafraichir toutes les heures, donc grosso modo ca va ressembler à ca:

Code :
  1. <script>
  2. // Variable globale, initialisée quand la page est créée
  3. var heureReference = (new Date()).getHours();
  4. // Fonction qui compare l'heure courante avec celle de référence et agit en conséquence
  5. function compareHeureCouranteAvecHeureReferenceEtAgitEnConsequence() {
  6. if ((new Date()).getHours()==heureReference) {
  7.  // L'heure n'a pas encore changé... on remet un timer pour revérifier dans 30 secondes.
  8.  setTimeout('compareHeureCouranteAvecHeureReferenceEtAgitEnConsequence()',30000);
  9. }
  10. else {
  11.  // L'heure a changé! Faut rafraichir bordel!
  12.  window.location = 'addresse_de_ta_page';
  13. }
  14. }
  15. // Mise en place du premier timer qui appelera la fonction de comparaison
  16. setTimeout('compareHeureCouranteAvecHeureReferenceEtAgitEnConsequence()',30000);
  17. </script>


Non garanti, c'est fait de tete, c'est possible que y ait des ptites erreurs! Possible aussi qu'il faille des appels à clearTimeout() pour que ca accumule pas d'la merde en mémoire.
Tu colles ca genre juste avant la balise fermante </body> de ta page. Et oublies pas de virer la balise meta refresh.


---------------
C'était vraiment très intéressant.
Reply

Marsh Posté le 25-02-2010 à 10:09:31    

j'aime bien les switchs pour le jour et l'heure....

Reply

Marsh Posté le 03-03-2010 à 17:04:45    

stealh, t'entend quoi par "j'aime bien les switch" :??:
 
et lasnoufle, merci beaucoup beaucoup ! ça marche nikel ce que tu a fait, vraiment au poil !!!
merci encore :)


---------------
[Mon Feed-Back]  
Reply

Marsh Posté le 04-03-2010 à 10:34:53    

C'est ironique, il veut dire que c'est naze de faire ça comme ça :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 04-03-2010 à 13:08:23    

Ué y me semblais que c'était ça :D
 
Mais bon ça marche, et j'ai pas trouver d'autres solutions alors je laisse comme ça ^^


---------------
[Mon Feed-Back]  
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed