Frank Eno
Frank Eno

Reputation: 2649

PHP stringID not read in onclick from an echo

I have an audio player working fine in HTML, but when I call if from a PHP echo it seems it doesn't get the div ID's name so it doesn't play my audio. Here's my code:

// Show audio
if ($sObj->get('audio') != null) {
    $sAudio = $sObj->get('audio');
    $audioURL = $sAudio->getURL();
    $playerName = 'player';
    echo '
    <audio id="player" ontimeupdate="updateTime()" src="'.$audioURL.'"></audio>
    <a class="btn btn-primary btn-round" id="songPlay" onclick="play('.$playerName.')"> --> THE ISSUE SEEMS TO BE HERE...

<i class="fa fa-play"></i></a>
<a class="btn btn-primary btn-round" id="songPause" onclick="pause()"><i class="fa fa-pause"></i></a>
<a class="btn btn-primary btn-round" id="songStop" onclick="stopSong()"><i class="fa fa-stop"></i></a>
<div id="songTime"><strong>0:00 / 0:00</strong></div>
<div id="songSlider" onclick="setSongPosition(this,event)"><div id="trackProgress"></div></div>
';
}

For some reason the player doesn't play my audio, the audio URL is correct because if I use the same audio tag and code in an HTML file, it works perfectly.

What am I doing wrong in PHP?

Thanks!

Upvotes: 0

Views: 31

Answers (1)

jotaelesalinas
jotaelesalinas

Reputation: 1497

PHP strings are not multiline. That means that you cannot just simply insert newlines.

You have to use heredoc syntax:

$str = <<<STR1
line1
line2
line3
...
STR1;

Or you can split the lines with "\n":

$str = 
    "line1\n" .
    "line2\n" .
    "line3";

You can still interpolate variables:

echo <<<HTML
    <audio id="player" ontimeupdate="updateTime()" src="$audioURL"></audio>
    <a class="btn btn-primary btn-round" id="songPlay" onclick="play('$playerName')"><i class="fa fa-play"></i></a>
    <a class="btn btn-primary btn-round" id="songPause" onclick="pause()"><i class="fa fa-pause"></i></a>
    <a class="btn btn-primary btn-round" id="songStop" onclick="stopSong()"><i class="fa fa-stop"></i></a>
    <div id="songTime"><strong>0:00 / 0:00</strong></div>
    <div id="songSlider" onclick="setSongPosition(this,event)">
        <div id="trackProgress"></div>
    </div>
HTML;

Upvotes: 1

Related Questions