php in js

rernanded

Erfahrenes Mitglied
Hi

nachfolgender code will nicht so recht, dh die Seiten mit den Urls die ich per php im array haben will kann ich nicht aufrufen.
Lediglich die www.abcblablabla.de wird im iframe angezeigt. Beim Klicken auf next oder prev passiert dann nix mehr.

MONI

HTML:
<?php

include_once("php-connection.php"); 

$sql = "SELECT * FROM urls ORDER BY id ASC LIMIT 0,100";

$ergebnis =    @mysql_query($sql);
$anz_ds =    @mysql_num_rows($ergebnis);

for ($ii = 0 ; $ii < $anz_ds ; $ii++)
{

   $id =@mysql_result($ergebnis,$ii,"id");
   $url =@mysql_result($ergebnis,$ii,"url");

}
?>

<html>
 
<head>
<style>
.iframe {
width: 789px;
height: 456px;
        -transform: scale(0.5);
        -moz-transform: scale(0.5);     
        -o-transform: scale(0.5);
        -ms-transform: scale(0.5);     
        -webkit-transform: scale(0.5);     
}
</style>
<script>
var URLs = "<?php echo "\"$url\","; ?>";
var currURL = 0;
function previframe() {
    if (currURL == 0) currURL = (URLs.length -1);
      else currURL--;
    document.getElementById("iframeeins").src = URLs[currURL];
}
function nextiframe() {
    currURL = (currURL + 1) % URLs.length;
    document.getElementById("iframeeins").src = URLs[currURL];
} 
</script>
</head>
<body>

<iframe src="http://www.abcblablabla.de/" id="iframeeins" class="iframe"></iframe>
<button onclick="previframe()">PREV</button><button onclick="nextiframe()">NEXT</button>

</body>
</html>
 
Besser???
HTML:
<?php
$db_link = mysqli_connect (
                     'server',
                     'user',
                     'pw',
                     'db'
                    );
$sql = "SELECT * FROM urls LIMIT 0,100";
$db_erg = mysqli_query( $db_link, $sql );
if ( ! $db_erg )
{
  die('Dies ist eine ungültige Abfrage.' . mysqli_error());
}
while ($row = mysqli_fetch_object($db_erg))
//echo $row->url."<br />"; 
?>
 
Geht leider nicht
Quelltext:
HTML:
<html>
<head>
<style>
.iframe {
width: 789px;
height: 456px;
        -transform: scale(0.5);
        -moz-transform: scale(0.5);    
        -o-transform: scale(0.5);
        -ms-transform: scale(0.5);    
        -webkit-transform: scale(0.5);    
}
</style>
<script>
var URLs = ["",];
var currURL = 0;
function previframe() {
    if (currURL == 0) currURL = (URLs.length -1);
      else currURL--;
    document.getElementById("iframeeins").src = URLs[currURL];
}
function nextiframe() {
    currURL = (currURL + 1) % URLs.length;
    document.getElementById("iframeeins").src = URLs[currURL];
}
</script>
</head>
<body>
<iframe src="http://www.123blablabla.de/" id="iframeeins" class="iframe"></iframe>
<button onclick="previframe()">PREV</button><button onclick="nextiframe()">NEXT</button>
</body>
</html>


php sieht so aus
HTML:
<?php
$db_link = mysqli_connect (
                     'server',
                     'user',
                     'pw',
                     'db'
                    );
$sql = "SELECT * FROM urls LIMIT 0,3";
$db_erg = mysqli_query( $db_link, $sql );
if ( ! $db_erg )
{
  die('Dies ist eine ungültige Abfrage.' . mysqli_error());
}
while ($row = mysqli_fetch_object($db_erg))
?>
...


...
<script type="text/javascript">
var URLs = [<?php echo "\"".$row->url."\","; ?>];

...
 
Du gibst immer nur die URL der "letzten" Zeile (= false) aus.
PHP:
$urls = [];
while ($row = mysqli_fetch_object($db_erg)) {
  $urls[] = $row->url;
}

// ...

var URLs = <?php echo json_encode($urls); ?>
 
@ComFreek: alles klar und danke.
Kleines Problem ist noch, daß die erste url im array übersprungen wird, allerdings nur beim ersten mal.

MONI
 
Zuletzt bearbeitet:
Du könntest z. B. den <script>-Teil ganz unter deinen <iframe> schieben, sodass du im JS die 1. Adresse vom iframe direkt setzen kannst:
Javascript:
var URLs = <?php echo json_encode($urls); ?>
document.getElementById("iframeeins").src = URLs[0];
...
 
Zurück