Autor Zpráva
TomasRe
Profil
Můžete mi prosím někdo poradit, co dělám špatně při vkládání proměnných do javascriptu? Script by měl měnit obrázky v časovém intervalu s odkazem a popiskem

// <![CDATA[
var imgs1 = new Array(<?php $vysledek = mysql_query("SELECT * FROM `banner` WHERE `aktivni`!=0 ORDER BY `poradi` ASC"); $i=1; while ($zaznam = mysql_fetch_array($vysledek)): if ($i==1) $obraz="\"./img/banner/".$zaznam["obr"]."\""; else $obraz =",\"./img/banner/".$zaznam["obr"]."\""; echo $obraz; $i++; endwhile; ?>);
var lnks1 = new Array(<?php $vysledek = mysql_query("SELECT * FROM `banner` WHERE `aktivni`!=0 ORDER BY `poradi` ASC"); $i=1; while ($zaznam = mysql_fetch_array($vysledek)): if ($i==1) $urel="\"".$zaznam["url"]."\""; else $urel =",\"".$zaznam["url"]."\""; echo $urel; $i++; endwhile; ?>);
var alt1 = new Array(<?php $vysledek = mysql_query("SELECT * FROM `banner` WHERE `aktivni`!=0 ORDER BY `poradi` ASC"); $i=1; while ($zaznam = mysql_fetch_array($vysledek)): if ($i==1) $titel="\"".$zaznam["title"]."\""; else $titel =",\"".$zaznam["title"]."\""; echo $titel; $i++; endwhile; ?>);
var title1 = new Array(<?php $vysledek = mysql_query("SELECT * FROM `banner` WHERE `aktivni`!=0 ORDER BY `poradi` ASC"); $i=1; while ($zaznam = mysql_fetch_array($vysledek)): if ($i==1) $titel="\"".$zaznam["title"]."\""; else $titel =",\"".$zaznam["title"]."\""; echo $titel; $i++; endwhile; ?>);
var currentAd1 = 0;
var imgCt1 = 2;
function cycle1() {
  if (currentAd1 == imgCt1) {
    currentAd1 = 0;
  }
var banner1 = document.getElementById('adBanner1');
var link1 = document.getElementById('adLink1');
  banner1.src=imgs1[currentAd1];
  banner1.alt=alt1[currentAd1];
  banner1.title=title1[currentAd1];  
  document.getElementById('adLink1').href=lnks1[currentAd1];
  currentAd1++;
}
  window.setInterval("cycle1()",8000);
// ]]>
juriad
Profil
<script>

var pole = <?php
$vysledek = mysql_query("SELECT * FROM `banner` WHERE `aktivni` != 0 ORDER BY `poradi` ASC");
$pole = array();
while ($zaznam = mysql_fetch_assoc($vysledek)) {
  $pole[] = $zaznam;
}
echo json_encode($pole);
?>;

// A tady máš v JS proměnnou pole, která obsahuje pole objektů.
</script>
TomasRe
Profil
juriad:
Moc děkuju, jen se tedy zeptám - var pole platí pro všechny proměnné ve scriptu? Jak potom přiřadím, že tato hodnota je url, tato je title?
juriad
Profil
To PHP ti vrátí něco jako:
[{"title":"titulek","obr":"obr1.jpg"},{"title":"druhy titulek","obr":"obr2.jpg"}]
Tedy pole, ve kterém jsou objekty.

function cycle() {
  baner1.src = "./img/banner/" + pole[currentAd1].obr;
  baner1.title = pole[currentAd1].title;
  ...
  currentAd = (currentAd + 1) % pole.length;
  // a nepotřebuješ proměnnou imgCt1 ani ten if.
}
Párkrát jsem to doupravil.
TomasRe
Profil
juriad:
Já se omlouvám, javascriptu vůbec nerozumím. Můžu poprosit tedy o dokopnutí, jak to má být správně?

<script>
var pole = <?php
$vysledek = mysql_query("SELECT * FROM `banner` WHERE `aktivni` != 0 ORDER BY `poradi` ASC");
$pole = array();
while ($zaznam = mysql_fetch_assoc($vysledek)) {
  $pole[] = $zaznam;
}
echo json_encode($pole);
?>;
</script>
<script>
function cycle() {
  baner1.src = pole[currentAd1].url;
  baner1.title = pole[currentAd1].title;
  currentAd = (currentAd+1) %pole.length;
}
</script>
<p><a id="cycle" href="" target="_blank"><img id="cycle" title="" src="../img/banner/1.jpg" alt=""></a></p>
juriad
Profil
Stačí takto?
http://kod.djpw.cz/ubkb
TomasRe
Profil
juriad:
Bohužel mi to stále nefunguje. Opravdu se omlouvám a nedělám to schválně... Chci se vyvarovat toho, že to tam právě vypíšu. A pomocí načtení z databáze mi to také nefunguje.
TomasRe
Profil
juriad:
Furt to studuji a ostatní řádky jsou mi jasné, jen pořád nevím, jak vyplním data z

var pole = <?php $vysledek = mysql_query("SELECT * FROM `banner` WHERE `aktivni` != 0 ORDER BY `poradi` ASC"); $pole = array(); while ($zaznam = mysql_fetch_assoc($vysledek)) {$pole[] = $zaznam;} echo json_encode($pole); ?>

do


var banners = [{"url":"http://www.google.cz","target":"_blank","title":"google","obr":"1.jpg"},{"url":"url","target":"_blank","title":"druhy titulek","obr":"2.jpg"}];
=> zde by se měly data načítat samostatně...ale jak?
juriad
Profil
To už ten PHP kód dělá. Podívej se do zdrojového kódu stránky. Přesně to [{...}, {...}, {...}] tam uvidíš.
TomasRe
Profil
juriad:
Jj, už to vidím že mi to vypíše, ale když mám

var banners = <?php $vysledek = mysql_query("SELECT * FROM `banner` WHERE `aktivni` != 0 ORDER BY `poradi` ASC"); $banners = array(); while ($zaznam = mysql_fetch_assoc($vysledek)) {$banners[] = $zaznam;} echo json_encode($banners); ?>

tak se mi stejně nic nemění... :(
mimochodec
Profil
TomasRe:
A chyba je v php nebo v JS? Ve vygenerovaném js to vidíš nebo ne?
TomasRe
Profil
mimochodec:
už jsem to našel - já měl ten druhý banner zastopovaný :-(. Strašně se omlouvám...


juriad:
Moc děkuji za pomoc i trpělivost. Opravdu moc díky...

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: