2017-08-22 3 views
0

d'abord tout ce que je suis arrivé ce code PHPobtenir des liens de menu déroulant dynamique

<?php 
$sqlget2 = "SELECT * FROM `table` ORDER BY `table`.`id` ASC "; 
$sqldata2 = mysqli_query($mysqli, $sqlget2) or die('error getting data'); 

    while($row = mysqli_fetch_array($sqldata2, MYSQLI_ASSOC)) { 
    echo '<option value="'.$row['id'].'">Episode '.$row['id'].'</option>'; 
}?> 

dans ma table de DB Je suis 3 lignes (id, stream_link, download_link)

Mon but est d'obtenir le flux et lien de téléchargement de cet identifiant, qui est sélectionné dans la liste déroulante en ce moment.

Je veux que le lien de téléchargement pour aller en: a href = "download_link"

et le lien de flux dans une balise vidéo

<video class="afterglow" id="myvideo" width="720" height="400" data-autoresize="fit"> 
    <source src="" type="video/mp4"> 
</video> 

Merci pour votre aide

+0

Pourquoi ne pas utiliser AJAX et utiliser la fonction de changement de jQuery avec le 'select' que vous avez? Ainsi, lorsque la sélection est modifiée, vous exécutez votre AJAX pour demander les liens appropriés – ctwheels

+0

Bienvenue dans StackOverflow. Apprenez comment créer un [exemple minimal, vérifiable et complet] (http://stackoverflow.com/help/mcve). Votre question ne montre pas ce que vous avez essayé, vous pouvez donc envisager de consulter la rubrique [Quels sujets puis-je poser] (https://stackoverflow.com/help/on-topic) dans la section d'aide. –

+0

ma réponse devrait fonctionner pour vous, vous l'essayez? – KyleK

Répondre

0

Vous avez déjà mentionné que vous avez les valeurs dans le DB. Et vous faites déjà un SELECT *, il n'y a donc aucun sens à revenir à la base de données, à récupérer à nouveau, en fonction de l'ID, lorsque vous avez déjà ces données disponibles dès le premier chargement. Donc, aussi bien l'utiliser, et utiliser les attributs de données HTML5. Ensuite, utilisez Jquery pour le reste.

WORKING EXAMPLE HERE

écho Ainsi, le lien/flux directement sur l'élément d'option, en utilisant les attributs de données. Comme si ... appelez-les comme vous voulez. J'ai utilisé le lien de données, et le flux de données dans ce cas.

<?php 
$sqlget2 = "SELECT * FROM `table` ORDER BY `table`.`id` ASC "; 
$sqldata2 = mysqli_query($mysqli, $sqlget2) or die('error getting data'); 

while($row = mysqli_fetch_array($sqldata2, MYSQLI_ASSOC)) { 
echo '<option value="'.$row['id'].'" data-link="'.$row['download_link'].'" 
data-stream="'.$row['stream_link'].'" >Episode '.$row['id'].'</option>'; 
}?> 

Puis j'utiliserais Jquery pour faire le reste.

$(document).ready(function(){ 

    // On select list change.  
    $('select').change(function(){ 

     // Find selected option element 
     var opt = $(this).find(":selected"); 

     // Alter the download link href, with the data-link attribute, on the option 
     $('.download_link').attr('href',opt.data('link')); 

     // Replace stream DIV, with data-stream attribute on the option 
     $('#stream').html('<video controls autoplay class="afterglow" id="myvideo" width="720" 
      height="400" data-autoresize="fit"><source src="'+opt.data('stream')+'" type="video/mp4"></video>'); 

    }); 
}); 

ensuite sur votre HTML ont seulement deux éléments sous la sélection. Où les données peuvent être remplacées par

<a href='' class='download_link'>Download</a> 

    <div id="stream"></div> 
+0

Merci! Le téléchargement fonctionne, mais pour la vidéo, je n'ai qu'une photo. Dans ton violon et aussi sur ma page. – H8perb0y

+0

Eh bien, c'est probablement parce que ce n'est pas configuré pour la lecture automatique. Si vous ajoutez simplement "controls autoplay" à l'élément vidéo, cela devrait être bon. J'ai édité la réponse pour l'inclure. Aussi le violon aussi. – KyleK

+0

Je ne sais pas si c'est toujours un problème, mais vous devrez probablement appeler 'afterglow.init()' après avoir ajouté le code HTML du lecteur à votre DOM. Cela devrait initier le joueur et le faire fonctionner. – mvmoay

-1

de Premier changement de cette :

echo '<option id="selectedOption" value="'.$row['id'].'">Episode '.$row['id'].'</option>'; 

ajouter ensuite une requête AJAX (j'utilise jQuery):

$('#select-div').on('change','#selectedOption',function() { 
    let data = ('#selectedOption').val(), 
    $.ajax({ 
    type: 'POST', 
    url: 'your/route.php', 
    data: data, 
    success: function (result) { 
     //do something 
    }, 
    error: function (result) { 
     //do something 
    } 
    }); 
}); 
+2

Ce n'est guère une réponse. Devrait être un commentaire – ctwheels

+0

Oui je n'étais pas tout à fait fini je pensais que quelqu'un d'autre déjà répondu –