Autor Zpráva
Fisak
Profil
Dobrý den. Rád bych si měnil obrázky které se mi uloží v db ale rád bych to udělal bez nutnosti refreshe stránky.
obrazek.php:
//... spojení s db ...
echo "<img src=\"".$promena['obrazek']."\" />";

index.php
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script>
 
    function updateDb(valobr) {   
        var datastring = 'obrazek='+ valobr;
        $.ajax({
        type: "POST",
        url: "zmena_obr.php",
        data: datastring
        });
 
        return false;
 
    }
 
</script>

<form method="post">
    <input type="submit" name="zmena" value="Zelená" onclick="return updateDb('zelena.jpg')"/>
    <input type="submit" name="dolu" value="Modrá" onclick="return updateDb('modra.jpg')"/>
    
</form>
zmena_obr.php
<?php
 
$heslo  = "vertrigo";        
$server  = "localhost";
$login = "root";
$database = "system";
 
if (MySQL_Connect($server, $login, $heslo) && MySQL_Select_DB($database))
{ 
  
    if(!empty($_POST['obrazek']))
    {
        mysql_query("update zkouska SET obrazek= '".$_POST['obrazek']."' where type = 'obr'");
    }
 
}

Teď mám to že když kliknu na Modrá tak se mi v db řádek "obrazek" změní na modra.jpg ale chci aby se mi rovnou i refreshnul obrazek.php a tudíž se vypsal nový obrázek. Lze to nějakým způsobem jednoduše udělat? Předem děkuji za odpovědi.
Camo
Profil
Fisak:
Nejako nechápem v čom je problém. Máš predsa adresu toho obrázka v premennej valobr. Takže neviem prečo ho nepriradíš v tej funkcii do src. Otázne je ako to bude vyzerať s vypnutým JS.
Fisak
Profil
Camo:
jo to sice mám ale lepší je to uložit do db a pak když znovu načteš stránku tak tam stále budeš mít ten obrázek.. takhle když to budu brát z toho valobr tak po refreshnutí stránky se načte opět výchozí obrázek
Camo
Profil
Fisak:
Zrejme chceš, aby to mohol mať každý užívateľ iné. Tak buď si to ulož do cookie a pri načítaní si to odtiaľ vytiahni, alebo ak to má byť prenositeľné medzi počítačmi, tak to ulož do tabuľky k userovi.
Fisak
Profil
Camo:
Pokud si přečteš ten můj kod tak se dozvíš že ukládání mám již vyřešené :-) jde mi o to aby se mi znovu načetl obrazek.php bez nutnosti refreshe stránky a po zmáčknutí submitu "<input type="submit" name="zmena" value="Zelená" onclick="return updateDb('zelena.jpg')"/>" nebo "<input type="submit" name="dolu" value="Modrá" onclick="return updateDb('modra.jpg')"/>"
_es
Profil
Fisak:
jde mi o to aby se mi znovu načetl obrazek.php bez nutnosti refreshe stránky
A ten PHP skript obrazek.php máš do stránky začlenený ako? Ak je jeho obsah do stránky včlenený cez iný PHP skript pomocou príkazu include ako by si chcel „znovu načítať obrazek.php“? Môžeš cez JS znovunačítať priamo obrázok. Prehliadač nemá ako zistiť, ako a z čoho si na serveri poskladal výsledný HTML kód.
Fisak
Profil
_es:
Právě to byla moje otázka jak to začlenit pomocí ajaxu do stránky takovým způsobem aby to dělalo to co jsem popisoval... Mám jeden ajax:
<script>
          Casovac();

            function NewHodnota() {
      var xmlhttp;
            var    hodnotalist = document.getElementById('hodnota_obr');
                if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest();
                else xmlhttpp=new ActiveXObject("Microsoft.XMLHTTP"); 
                xmlhttp.onreadystatechange=function() {
                  if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                      hodnotalist.innerHTML = xmlhttp.responseText;
                }    
              }    
                xmlhttp.open("GET", "obrazek.php", true);
                xmlhttp.send(); 
              Casovac();
            }
    
            function Casovac() { 
                 setTimeout("NewHodnota()", 1000);
            }
</script>
<span id='hodnota_obr'></span>
Ovšem ten mi načte ten script obrazek.php jednou za vteřinu. Já bych rád ho načetl po zmáčknutí jednoho ze submitů...
Camo
Profil
Fisak:
Ten časovač tam máš načo? A prosím ťa môžeš mi objasniť, čo ti bráni zmeniť src toho obrázku v tej funkcii???
Fisak
Profil
Camo:
Prosím přečti si vždy nejdřív co jsem napsal než odešleš svůj komentář :-)

Fisak:
Ovšem ten mi načte ten script obrazek.php jednou za vteřinu. Já bych rád ho načetl po zmáčknutí jednoho ze submitů...
Toto jsem psal že to potřebuju předělat ;-)


Camo:
čo ti bráni zmeniť src toho obrázku v tej funkcii???
Co furt máš s tou změnou src ? Celou dobu se tu jedná o znovunačtení php scriptu po kliknutí na submit! Neřeš prosím žádný obrázek!!!
_es
Profil
Fisak:
Celou dobu se tu jedná o znovunačtení php scriptu po kliknutí na submit! Neřeš prosím žádný obrázek!!!
V [#1] je zrejmé, že výstupom toho PHP skriptu je <img src="odkazNaObrázok"> V JS zmeníš to, aký obrázok sa má zobraziť, veľmi jednoducho:
objektObrázka.src="odkazNaInýObrázok";
Camo asi nechápe, prečo do toho „montuješ“ PHP, keď stačí v JS nastaviť tomu obrázku src.
Ak chceš v JS reagovať bez znovunačítania celej stránky po odoslaní dát do zmena_obr.php nejako zložitejšie, prečo ti PHP skript zmena_obr.php nevráti niečo zmysluplné, čo v JS spracuješ?
Inak to z tvojich dotazov vyzerá, že si asi málo pochopil, čo sa deje na strane prehliadača a čo na strane serveru a máš z toho nejaký „PHPJS guláš“.
Fisak
Profil
_es:

Camo asi nechápe, prečo do toho ‚montuješ‘ PHP, keď stačí v JS nastaviť tomu obrázku src.
Montuju do toho php protože potřebuju načíst php script nikoli obrázek. Obrázek měl bejt příklad na kterym bych se to dozvěděl .. Takže už po několikátý řikám neřešte vůbec obrázky prostě chci načíst po kliknutí na submit php script kde může být např. i výpis obrázku. A já chápu co se děje na straně prohlížeče a na straně serveru. A nevidím tam žádný PHPJS guláš. Myslel jsem spíš to udělat nějakou podmínkou např. <form onsubmit="return NewHodnota()" > a pak v newhodnotě akorát dát nějakou podmíku že pokud se to spustí tak se "obrazek.php" znovu načte. Ovšem to nevím jak udělat.
Camo
Profil
Fisak:
Tak sa nauč vyjadrovať a ušetríš čas aj sebe aj tým čo sa ti snažia poradiť. Zraz sa tváriš, že my tu riešime nejaký sprostý obrázok, zatiaľ čo ty už dávno prenášaš dáta zo serveru. Ak nevieš ako sa robí s Ajaxom, tak si najprv o tom niečo prečítaj, aby si aspoň to chápal, že ten časovač je tam úplne odveci, a preto som naň narážal...
_es
Profil
Fisak:
prostě chci načíst po kliknutí na submit php script kde může být např. i výpis obrázku.
Tak potom si pozri udalosť onclick „tlačítka“ či onsubmit formulára a objekt XMLHttpRequest (alebo ich jQuery náhrady). Čo si predstavuješ pod „výpisom obrázku“? Obrázok sa obvykle zobrazí, čo je jeho „výpis“?
Fisak
Profil
Camo:
Vyjádřil jsem se dost jasně
[#1] Fisak:
chci aby se mi rovnou i refreshnul obrazek.php
A co sem zase pleteš časovač proboha. Psal jsem že tento script se mi načte jednou za vteřinu a já chci aby se mi to načetlo po zmáčknutí submitu. viz. [#7] FisakOvšem ten mi načte ten script obrazek.php jednou za vteřinu. Já bych rád ho načetl po zmáčknutí jednoho ze submitů...“ což je mi jasný že tam nebude časovač když ho tam nechci a chci udělat podmínkou pokud se zmáčkne submit tak se refreshne obrazek.php. Je to snad logické takže zde nemusíš psát věci které už jsem zde napsal a které jsou uplně jasné :-) Děkuji a pokud možno camo promysli si nejdříve co zde napíšeš!


_es:
výpis pro mě znamená echo ""; a děkuji kouknu se...
Camo
Profil
Fisak:
Mne je jasné, že tebe jasné nieje vôbec nič a ešte sa tu do mňa navážaš!
Mne sa nepoďakuješ za link? Nie že by som o to stál, ale tvoj pokrivený charakter mi nedá to nespomenúť, ty časovač.
A trvám na tom, že sa nevieš vyjadrovať...
_es
Profil
Fisak:
výpis pro mě znamená echo "";
Čo nevysvetľuje čo má byť ten „výpis obrázku“. Obrázok sa do prehliadača stiahne a zobrazí, ale čo je ten „výpis“? Ak by si prispôsobil svoje dotazy svojim aktuálnym znalostiam, tak by si asi pochopil lepšie a rýchlejšie.
Fisak
Profil
_es:
Čo nevysvetľuje čo má byť ten ‚výpis obrázku‘. Obrázok sa do prehliadača stiahne a zobrazí, ale čo je ten ‚výpis‘?
toto je stále slovíčkaření nevidím v tom význam řešit to :-)


a popsal jsem svůj problém dost jasně :-)
Mike8748
Profil
Fisak:
popravdě nějak nechápu problém i když jsem to několikrát četl...

pokud ten kód s časovačem je to co chceš ale aby to reagoavalo pouze na ty tlačítka... tak to tak udělej

jquery funkce .ajax má možnost nastavit callback, který se zavolá po zpracování toho požadavku (tedy to co je v ukázce s časovačem v xmlhttp.onreadystatechange)
takže stejnou funkci použiješ jako callback parametr při volání .ajax a je to

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:

0