2016-05-01 5 views
0

Ich habe den besseren Teil von drei Tagen für dieses Problem ausgegeben. Ich habe mehrere Lösungen ausprobiert, die ich auf dieser Seite gefunden habe, aber mit wenig Erfolg. Ich versuche eine PHP-Variable zu verwenden, um ein Youtube-Video in einem Iframe abzuspielen. Ich versuche auch, zwei MySQL-Abfragen mit der gleichen Eingabe auszuführen. Hier ist mein Code, wie er gerade sitzt. In diesem Moment, wenn es läuft, bekomme ich den Tisch, den ich will, obwohl ich ihn noch formatieren muss. Aber der Iframe taucht nicht einmal auf. Eine vorherige Lösung, die ich ausprobiert habe, würde den iframe hochziehen, aber innen wäre ein Fehler, bei dem ich im Grunde die sql-Abfrage an den iframe übergeben würde.Verwenden Sie eine PHP-Variable als Quelle in einem iframe, um ein Youtube-Video zu spielen

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = "password"; 
$dbname  = "purpletrainer"; 

// Create connection 
$conn = new mysqli($servername, $username, $password); 

// Check connection 
if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
} 
//echo "Connected successfully"; 

$trainingid = $_POST["trainingid"]; 
$sql  = "SELECT * FROM purpletrainer.trainingcontent WHERE trainingid = '$trainingid';"; 
$result  = $conn->query($sql); 
if ($result->num_rows > 0) { 
     echo "<table><tr><th>Training ID</th><th>Title</th><th>Training URL</th><th>Training Quiz URL</th></tr>"; 
     // output data of each row 
     while ($row = $result->fetch_assoc()) { 
       echo "<tr><td>" . $row["trainingid"] . "</td><td>" . $row["trainingtitle"] . "</td><td>" . $row["trainingurl"] . "</td><td>" . $row["trainingquizurl"] . "</td></tr>"; 
     } 
     echo "</table>"; 
} else { 
     echo "Error: " . $sql . "<br>" . $conn->error; 
} 


$conn->close(); 
?> 
<?php 
$servername = "localhost"; 
$username = "root"; 
$password = "password"; 
$dbname  = "purpletrainer"; 

// Create connection 
$conn = new mysqli($servername, $username, $password); 

// Check connection 
if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
} 
$videosql = "SELECT trainingurl FROM purpletrainer.trainingcontent WHERE trainingid = '$trainingid';"; 
$videoresult = $conn->query($videosql); 
if ($videoresult->num_rows > 0) { 
     while ($videourl = $videoresult->fetch_assoc()) { 

     } 
} else { 
     echo "Error: " . $sql . "<br>" . $conn->error; 
} 
$conn->close(); 
?> 

<div class="col-md-6"> 
     <iframe width="420" height="315" src= '<?php echo htmlspecialchars($videourl); ?>' frameborder="0" allowfullscreen></iframe> 
</div> 

Antwort

1

Es ist gängige Praxis nicht die Variable $videourl außerhalb der while-Schleife zu verwenden. (Setzen Sie Ihren iframe in die while Schleife). sidenote: fetch_assoc() erstellt ein Array. Es sollte $videourl['trainingurl'];

Hier ist ein Beispiel sein:

<?php 

if ($videoresult->num_rows > 0) 
{ 
    while($videourl = $videoresult->fetch_assoc()){ 
?> 
    <div class="col-md-6"> 
    <iframe width="420" height="315" src= '<?= $videourl['trainingurl']; ?>' frameborder="0" allowfullscreen></iframe> 
    </div> 
<?php 
    } 
    } 
    else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
    } 
?> 

bearbeitet für Klarheit und zukünftige Leser Beachten Sie, dass der <?= $variable ?> Starttag erst seit PHP 5.4+ richtig unterstützt. Wenn Sie diese Version nicht verwenden, behalten Sie die Verwendung von <?php echo $variable; ?>

+0

Die '$ videourl'-Variable würde tatsächlich außerhalb der Schleife bestehen, sie ist im globalen Gültigkeitsbereich definiert, enthält jedoch den Wert, der ihr während der letzten Iteration der Schleife zugewiesen wurde – andrew

+0

Danke @andrew, wusste das nicht. Ich habe nie darüber nachgedacht. Meine Antwort wurde entsprechend aktualisiert. – NoobishPro

+0

Vielen Dank, das ist viel näher an dem, was ich brauche. Das Video wird immer noch nicht angezeigt, aber der iFrame ist der Fehler, dass die URL nicht auf dem Server gefunden wurde. –

Verwandte Themen