login  Naam:   Wachtwoord: 
Registreer je!
 Forum

variabel youtube-filmpje insluiten (Opgelost)

Offline Gust - 12/07/2015 16:14 (laatste wijziging 12/07/2015 16:15)
Avatar van GustMySQL interesse Bij een agendasysteem wil ik in de output een filmpje laten zien dat bij die activiteit hoort, enkel als deze wordt toegevoegd. In het tekstveld achter $film wordt het youtube-adres ingevoerd. In de output wil ik dit als volgt tonen:

  1. <?php
  2. if(!empty($film))
  3. {
  4. echo "<iframe width=\"560\" height=\"315\" src=\"$film\" frameborder=\"0\" allowfullscreen></iframe>";
  5. }
  6.  
  7. ?>


Maar ik krijg niets te zien, ofwel een 'leeg' youtube-bestand. Iemand die weet hoe dit aangepakt moet worden?

9 antwoorden

Gesponsorde links
Offline Thomas - 12/07/2015 16:27
Avatar van Thomas Moderator Hoe luidt $film?

En mogelijk werkt die constructie niet in browsers omdat het domein van het iframe een ander domein is dan je website. Normaal zitten youtube filmpjes ook in een soort van container. Waarom heb je per se een iframe nodig?
Offline Gust - 12/07/2015 16:49
Avatar van Gust MySQL interesse Hoeft daarom geen iframe te zijn, ik wil alleen de film tonen die men toevoegt bij de aanmelding.
Offline Jointjeff - 13/07/2015 10:28 (laatste wijziging 13/07/2015 10:29)
Avatar van Jointjeff HTML interesse Maar hoe ziet je input eruit, dus de waarde van $film?

Is dat gewoon de URL van een youtube-film?

In dat geval zou je het ook zo kunnen doen:

  1. <?php
  2. $youtube_url = 'https://www.youtube.com/watch?v=d2TUBF7q8EE';
  3. preg_match( '/[\\?\\&]v=([^\\?\\&]+)/', $youtube_url, $results );
  4. $id = $results[1];
  5. ?>


En dan vervolgens de iframe:
  1. <iframe src="https://www.youtube.com/embed/<?php echo $id; ?>" width="400" height="300" frameborder="0" allowfullscreen></iframe>


In jou geval zou dat dan dus zo kunnen:
  1. <?php
  2. if ( $film ) :
  3. preg_match( '/[\\?\\&]v=([^\\?\\&]+)/', $film, $results );
  4. $id = $results[1];
  5. ?>
  6. <iframe src="https://www.youtube.com/embed/<?php echo $id; ?>" width="400" height="300" frameborder="0" allowfullscreen></iframe>
  7. <?php
  8. endif;
Offline Thomas - 13/07/2015 14:01
Avatar van Thomas Moderator @JointJeff maar dat gaat dus wss niet werken omdat je een bron opent in een iframe die afwijkt van het domein van je website.

Waarschijnlijk wordt dat vanuit veiligheidsoverwegingen niet geaccepeteerd.

Daarnaast biedt YouTube (naar alle waarschijnlijkheid) legio oplossingen om filmpjes embedded op je eigen site weer te geven.
Offline Gust - 14/07/2015 12:37
Avatar van Gust MySQL interesse Bedankt allebei!
Offline Jointjeff - 14/07/2015 14:48 (laatste wijziging 14/07/2015 16:40)
Avatar van Jointjeff HTML interesse Wat was de oplossing Gust?

Edit: oplossing is reeds gemarkeerd.
Offline Gust - 14/07/2015 17:34 (laatste wijziging 14/07/2015 17:39)
Avatar van Gust MySQL interesse Nog een bijkomende vraag waarvoor ik moeilijk een nieuw topic moet opstarten.

Natuurlijk is het de bedoeling dat de gebruiker een youtube-url in het tekstveld plaatst, en geen andere url. En dan nog het juiste type van url.

Ik dacht om iets als volgt te doen:
'Als het veld niet leeg is EN er wordt geen youtube-url gebruikt, geef dan een alert.

Vertaald zou dat zo moeten zijn:
  1. } if((!empty($url)) and !preg_match( '/[\\?\\&]v=([^\\?\\&]+)/', $youtube_url)) {
  2. echo ' De youtube-url is fout of je hebt geen youtube-film ingevuld<br><br>';


Maar dit werkt dus niet. Ik krijg in alle omstandigheden deze echo.
Offline Gust - 14/07/2015 17:34 (laatste wijziging 14/07/2015 17:38)
Avatar van Gust MySQL interesse Foutje. 2 keer gepost
Offline Thomas - 15/07/2015 20:03
Avatar van Thomas Moderator Je doet daar NOT empty AND NOT <expressie>.

Vervolgens zeg je: De youtube-url is fout OF je hebt geen youtube-film ingevuld.

Dat stemt toch al niet overeen? 

Strict genomen retourneert preg_match() alleen het cijfer 1 als er een match is.

De volgende check werkt dus waarschijnlijk beter:
  1. <?php
  2. if (empty($url) || preg_match('/[\\?\\&]v=([^\\?\\&]+)/', $youtube_url) !== 1) {
  3. echo 'fout';
  4. ?>


Je zou dit ook nog kunnen vereenvoudigen tot:
  1. <?php
  2. if (preg_match('/[\\?\\&]v=([^\\?\\&]+)/', $youtube_url) !== 1) {
  3. echo 'fout';
  4. ?>

Want zelfs als de $youtube_url niet leeg is (de empty check levert false op) moet voor een geldige videolink de preg_match nog steeds opgaan. Als de match mislukt is de link waarschijnlijk toch onbruikbaar.
Bedankt door: Jointjeff
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.26s