[RESOLU] Lecteur audio en popup

Eléphanteau du PHP | 49 Messages

22 mars 2016, 17:35

Bonjour,

je cherche une solution pour ouvrir un lecteur audio actuellement présent sur une page, dans une fenêtre popup.

J'ai une liste d'album que je récupère depuis une base de donnée, quand je clique sur un des albums, je peux lire ses morceaux sur la page elle-même. Mais bien sûre quand je change de page la lecture s'arrète.

Donc j'aimerais l'ouvrir dans une fenètre popup (ou une autre méthode) pour continuer la lecture en changeant de page.

Voici le code utilisé sur la page:

Code : Tout sélectionner

<?php include('connect.php'); echo '<div id="album">'; $resultat = $bdd->query('SELECT * FROM album'); while ($donnees = $resultat->fetch()) { $album = $donnees['album']; echo '<figure>'; echo "<a href='ma_page.php?quel_album=".$donnees['id']."#audio'><img src='album/".$album."/".$album.".jpg' title='$album' alt='album'><p>$album</p></a>"; echo '</figure>'; } $resultat->closeCursor(); echo '</div>'; echo '<div id="playlist">'; if (isset($_GET['quel_album'])) { $resultat = $bdd->prepare('SELECT * FROM album WHERE id = ?'); $resultat->execute(array($_GET['quel_album'])); while ($donnees = $resultat->fetch()) { $album = $donnees['album']; $titre1 =$donnees['titre1']; $morceau1 = $donnees['morceau1']; $morceauOGG1 = $donnees['morceauOGG1']; $titre2 = $donnees['titre2']; $morceau2 = $donnees['morceau2']; $morceauOGG2 = $donnees['morceauOGG2']; $titre3 = $donnees['titre3']; $morceau3 = $donnees['morceau3']; $morceauOGG3 = $donnees['morceauOGG3']; $titre4 = $donnees['titre4']; $morceau4 = $donnees['morceau4']; $morceauOGG4 = $donnees['morceauOGG4']; $titre5 = $donnees['titre5']; $morceau5 = $donnees['morceau5']; $morceauOGG5 = $donnees['morceauOGG5']; echo '<h4>'.$album.'</h4>'; echo'<audio id="audio" preload="auto" tabindex="0" controls="" ><source id="primarysrc" src="album/'.$album.'/'.$morceau1.'"><source id="secondarysrc" src="album/'.$album.'/'.$morceauOGG1.'"></audio><br /> <ul id="playlistable"> <li class="active"><a href="album/'.$album.'/'.$morceau1.'" data-altsrc="album/'.$album.'/'.$morceauOGG1.'">'.$titre1.'</a></li> <li><a href="album/'.$album.'/'.$morceau2.'" data-altsrc="album/'.$album.'/'.$morceauOGG2.'">'.$titre2.'</a></li> <li><a href="album/'.$album.'/'.$morceau3.'" data-altsrc="album/'.$album.'/'.$morceauOGG3.'">'.$titre3.'</a></li> <li><a href="album/'.$album.'/'.$morceau4.'" data-altsrc="album/'.$album.'/'.$morceauOGG4.'">'.$titre4.'</a></li> <li><a href="album/'.$album.'/'.$morceau5.'" data-altsrc="album/'.$album.'/'.$morceauOGG5.'">'.$titre5.'</a></li> </ul>'; } $resultat->closeCursor(); } echo '</div>'; unset ($bdd); ?>
En espérant que quelqu'un puisse me conseiller,

à bientôt.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

23 mars 2016, 13:08

Bonjour,

Pour ouvrir une popup, il faut utiliser du javascript et la fonction window.open()

Voici 2 tutoriels qui t'expliqueront comment faire :
http://www.toutjavascript.com/savoir/savoir15.php3
http://www.supportduweb.com/scripts_tut ... oriel.html

A noter qu'il est préférable (pour ne pas dire quasi obligatoire) d'ouvrir cette popup sur une action de l'utilisateur comme un clic sur un lien, plutôt qu'automatiquement au chargement d'une page (car ce sera considéré comme de la pub et bloqué par les navigateurs)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 49 Messages

23 mars 2016, 23:44

J'ai vu sur le site de soundcloud une autre alternative au popup.
Il s'agit d'un lecteur qui apparait en footer quand on clique sur un morceau et qui suit la navigation sur le site.
Quelqu'un saurait-il comment c'est mis en place?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

24 mars 2016, 03:43

Tout le site Soundcloud est en javascript, c'est à dire qu'il n'y a qu'une seule et unique page HTML qui va charger les éléments sur lequel tu cliques via ajax.

Et ils simules un changement de page dans l'url via la fonction javascript window.history.pushState()

ça fonctionne bien mais ça demande de revoir la conception complète de ton site internet ce qui est assez compliqué à mettre en oeuvre.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 49 Messages

24 mars 2016, 16:15

Ok donc plus gérable via un popup.
Surtout que je ne maitrise pas du tout le javascript.
Je vais étudier les tutos que tu m'as mis en lien.
Merci.

Eléphanteau du PHP | 49 Messages

24 mars 2016, 20:49

Aprés plusieurs essais, je n'arrive pas a transmettre les variables au popup en cliquant sur un album

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

25 mars 2016, 04:07

Bah tu les passes en paramètres GET dans l'url de ta popup, non ?
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 49 Messages

25 mars 2016, 20:26

je bloque sur le GET

Code : Tout sélectionner

<script type="text/javascript"> <!-- function open_infos() { window.open('lecteurpopup.php?quel_album=<?php echo $donnees['id']; ?>#audio','nom_de_ma_popup','menubar=no, scrollbars=yes, top=100, left=100, width=300, height=200'); } --> </script>
dans le head

Code : Tout sélectionner

<?php echo "<a href='lecteurpopup.php?quel_album=".$donnees['id']."#audio' onclick='javascript:open_infos();'><img src='album/".$album."/".$album.".jpg' title='$album' alt='album'><p>$album</p></a>"; ?>
dans le body.

j'ai laissé dans le href l'adresse pour tester la page et j'ai ajouté le onclick pour ouvrir le popup
Résultat, la page appelée en cliquant sur un album fonctionne trés bien, le popup s'ouvre mais est vide
URL de la page: http://www.lesite.com/lecteurpopup.php? ... m=10#audio
URL du popup: http://www.lesite.com/lecteurpopup.php? ... bum=#audio

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

27 mars 2016, 23:22

$donnees['id'] est vide
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 2703 Messages

27 mars 2016, 23:25

function open_infos(id)
{
window.open('lecteurpopup.php?quel_album='+id+'#audio','nom_de_ma_popup','menubar=no, scrollbars=yes, top=100, left=100, width=300, height=200');
}

onclick='javascript:open_infos(".$donnees['id'].");

Eléphanteau du PHP | 49 Messages

28 mars 2016, 20:02

Super, ça fonctionne,
merci beaucoup.