IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Comment récupérer un tableau js en php sans planter ma fonction


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    débutant
    Inscrit en
    Août 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : débutant
    Secteur : Services de proximité

    Informations forums :
    Inscription : Août 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Comment récupérer un tableau js en php sans planter ma fonction
    Bonjour,

    Débutant et autodidacte en php et javascript, j'essaie, dans le cadre d'un site web dont je m'occupe, de mettre en place quelques script pour me simplifier la vie.

    Ainsi, j'ai mis en place, à l'aide de "google my friend" et de codes trouvés ça et là, adaptés à mes besoins, un player mp4 dans une page php qui liste automatiquement tous les mp4 présents dans le répertoire où se trouve la page php.

    Ca fonctionne sans souci.

    J'aimerais maintenant récupérer la liste des fichiers qui ont été visionnés à des fins de statistiques.

    Dans la fonction handler, le player, j'ai créé un tableau filenamesarray qui reprend tous les fichiers lus. Lorsque je fais un alert(filenamesarray),
    cela fonctionne parfaitement.

    Cependant, dès que j'essaie de récupérer la valeur du tableau en php (dans url, avec ajax, via un cookie, etc...) bref dès que j'insère une autre commade que alert,
    le player perd son style et repasse en lecteur défaut mp4 noir et sort donc, apparement de la fonction.

    Quelqu'un aurait-il une idée qui me permettrait de "jounaliser" les fichiers en récupérant mon tableau js en php sans quitter la fonction ?

    Pour les tests, j'ai inclus le css et les js dans le fichier php unique dont voici le code.

    Merci d'avance à ceux qui voudront bien me consacrer un peu de temps !

    Bruquer.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
     
    <head>	
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    	<title>titre</title>
     
    	<style type="text/css">
    	body {font-family:Arial, Helvetica, sans-serif;background:#fbff84}
    	.center {text-align:center;width:700px;margin:0 auto;}
     
    	#player {
    	   background:#9DD57E;
    	   padding:10px;
    	   width:640px; /*this should equal the width of the video you're using*/
    	   margin:0 auto;
    	   -webkit-border-radius: 10px;
    		  -moz-border-radius: 10px;
    			   border-radius: 10px;
    	}
    	span#logo, img#logo {
    		border:0 none;
    		height:50px;
    		position:absolute;
    		left :50%;
    		top:0px;
     
    	}
     
    	#player video {
    	   width:640px; /*this will change the width of the video*/
    	}
     
    	/*below is the styling for the playlist*/
     
    	#playlist {
    	   background:#9DD57E;
    	   list-style:none;
    	   padding:0;
    	   margin:0; 
    	   width:640px;
    	}
    	#playlist h1 {
    	   font: 20px Georgia, Helvetica, sans-serif; 
    	   color:#000000; 
    	   font-weight:bold;
    	   font-style: italic;
    	   padding:5px 2px;
    	   margin:0;
    	}
    	#playlist a {
    	   color:#000000;
    	   font-style: italic;
    	   background:#FBFF84;
    	   padding:1px 10px;
    	   display:block;
    	   text-decoration:none;
    	   border-bottom:1px solid #9DD57E;
    	}
    	#playlist a:hover {
    	   text-decoration:none; 
    	   background:#9DD57E;
    	   color:#000;
    	}
    	</style>
     
    </head>
     
    <?php
     
    $current_php_filename = basename($_SERVER["PHP_SELF"]);
    $current_php_filename_len = strlen($current_php_filename);
    $current_dir_path =  substr($_SERVER["PHP_SELF"],0,-$current_php_filename_len) ; // - php this filename len
    $current_dir_open = opendir('.');
     
    while( ($filename = readdir($current_dir_open)) !== false)
            {
            if($filename != "." && $filename != ".." && strtolower(substr($filename,-4))==".mp4") 
                    $files_list_arr[] = utf8_encode($filename);
            }
            
    sort($files_list_arr);
                            
    ?>
     
    <body><br>
    		<div id="player">
    			<video controls="controls" width="640" height="480" preload="auto" >
    				<?php                                   
                                            foreach ($files_list_arr as $filename_to_list)
                                                    {
                                                            $link =   '<source src="'.$current_dir_path.$filename_to_list.'" type="video/mp4" />'   ; 
                                                            echo $link;
                                                    }                                                                                               
                                    ?>
    					<?php closedir($current_dir_open); // closing open dir ?>
    			</video>
     
     
    		<div id="playlist">
    			<h1><center>Vidéos disponibles sur cette page</center></h1>
    			<?php
                                    $current_dir_open = opendir('.');
                                     
                                            foreach ($files_list_arr as $filename_to_list)
                                                    {               
                                                            $filename_to_list_without_ext = substr($filename_to_list,0,-4);
                                                            $vidtitle =  utf8_decode(str_replace("_", " ", $filename_to_list_without_ext));                                         
                                                            // link generation
                                                            $link2 =   '<a href="'.$current_dir_path.utf8_decode($filename_to_list).'">'.$vidtitle.'</a>'   ;
                                                            // writing link2 to webpage
                                                            echo $link2 ;
                                                    }                                       
                            ?>	
    		</div>
    		</div>
     
    	<script>
    	function handler(e) 
    		{
    		e.preventDefault(); //Prevents default action of links going directly to the source file
    		videotarget = this.getAttribute("href"); //looks at the filename in the link's href attribute
    		filename = videotarget.substr(0, videotarget.lastIndexOf('.')) || videotarget; //Splits the filename and takes everything before the ".", giving us just name without the extension
    		filenamesarray.push(filename); //ok 
    		alert(filenamesarray); //ok
    		video = document.querySelector("#player video"); //Finds div #player and video
    		video.removeAttribute("poster"); //Removes the poster attribute in the video tag
    		source = document.querySelectorAll("#player video source"); //Finds source elements inside the video tag
    		source[0].src = filename + ".mp4"; //defines the MP4 source
    		video.load(); //Loads video when video is selected
    		video.play(); //Plays video automatically 
    		};
     
    		//Ensure all links in the div "#player" act in the same way:
    		var filenamesarray = new Array();
    		var video_playlist = document.getElementById("player"); //Element ID should be the same as the ID used in the container div in the HTML.
    		var links = video_playlist.getElementsByTagName('a');
    		for (var i=0; i<links.length; i++) 
    			{ 
    			links[i].onclick = handler; 
    			};	
     
    	</script>
    </body>

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Bonjour,

    d'abord quelques précisions :
    - PHP s'exécute sur le serveur (et a donc accès à la base de données ou un fichier de stockage sur le serveur) ;
    - JavaScript s'exécute sur le client (le navigateur, et n'a donc pas accès à la base).

    Pour enregistrer les fichiers lus je vois deux possibilités :
    1. Remplacer l'appel direct au fichier mp4 par l'appel à un fichier PHP qui enregistrera le nom du morceau lu dans un fichier ou une base puis renverra le mp4.
    2. Faire un appel AJAX (pour enregistrer en base) sur un événement JavaScript onClick dans le lien permettant de lancer le morceau.
    Christophe

    Pensez à mettre quand c'est le cas.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    débutant
    Inscrit en
    Août 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : débutant
    Secteur : Services de proximité

    Informations forums :
    Inscription : Août 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonsoir,

    Ca j'avais bien compris qu'il fallait passer en php pour renvoyer les données sur le serveur. c'est ce que j'ai tenté par exemple en ouvrant un iframe php avec les valeurs en url ou avec ajax ou meme json.Le souci c'est la sortie de la fonction ou en tous cas la perte du style de la page et donc du player suite à cette commande. J'ai aussi pensé à crée un cookie depuis la fonction pour le récupérer ensuite avec une page php mais là aussi je perds le style...

    En tous cas merci pour ta réponse !

    bonne soirée !

    Bruquer.

Discussions similaires

  1. Réponses: 8
    Dernier message: 20/02/2016, 00h57
  2. Réponses: 5
    Dernier message: 08/03/2010, 14h09
  3. comment récupérer le message du vrai PHP ?
    Par junior68 dans le forum Langage
    Réponses: 2
    Dernier message: 01/08/2008, 12h13
  4. Réponses: 24
    Dernier message: 25/09/2007, 11h53
  5. Réponses: 1
    Dernier message: 14/09/2006, 10h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo