ugrás a tartalomhoz

Frissítés

gery90 · 2009. Okt. 16. (P), 22.36
Üdv mindenki.
Van egy olyan gondom hogy egy oldalamon van két <select> elem.
a select fajl a select mappa tartalmától függ.
itt van egy részlet a php kódomból.

<div id="valami">
<form name="open" method="get" action="feldolgoz_open.php">
<select name="mappa">
<?php
include("select_mappa.php");
for($i=0; $i<count($ertekek); $i++)
{
print ('<option value="'.$ertekek[$i].'">'.$ertekek[$i].'</option>');
}
?>
</select>
<select name="fajlok">
<?php include("../select_file.php");
for($j=0; $j<count($ertekek_file); $j++)
{
print ('<option value="'.$ertekek_file[$j].'">'.$ertekek_file[$j].'</option>');

}
?>
</select>
<input type="submit" value="Megnyitás" />
</form>
</div>

Halottam az ajaxos frissítésről amivel akár simán csak egy divnek a tartalmát lehet frissíteni. Én sokat böngésztem emiatt de nem jutottam sokra. vagyis találtam scripteket de nekem nem ment. valószínű csak én vok béna.
Kérlek ha tudtok erre valami kóddal szolgálni küldjétek el.
Előre is köszi.
Gery
 
1

Sokat?

Poetro · 2009. Okt. 16. (P), 23.03
XMLHTTPRequest (röviden XHR) minden mai JavaScript keretrendszerben benne van (Prototype, jQuery, Dojo, Mootools, YUI, ExtJS stb.), és mindegyik szolgál példával.
2

U.az

gery90 · 2009. Okt. 17. (Szo), 08.10
Én is néztem ezt az oldalt de nem nagyon sikerült bármit is kezdeni vele.
Betettem egy .js fajlba ée azt includol-tam.
Esetleg tudsz nekem egy rövid kis scriptet küldeni az én esetemre ami a head részben van és közvetlen onnan működik?
Előre is köszi:

ifjabbik Padawan
5

Ilyesmi

Poetro · 2009. Okt. 17. (Szo), 21.45
Mondjuk nem tudom, mit jelent az, hogy include-oltad, és mivel nem tudom, mit is szerentél csinálni, valami ilyesmit gondoltam:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
  Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title><!-- Insert your title here --></title>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
  <script type="text/javascript">
    $(function () {
      $('form[name="open"]').submit(function () { // kezeljük a form elküldést
        var params = {}; // ide gyűjtjük a paramétereket
        $(':input', this).each(function () { // nézzük az összes form elemet
          if (this.name) {
            params[this.name] = $(this).val(); // tároljuk az értékét
          }
        });
        $('#data').load(this.action, params); // betöltjük az adatokat a data nevű div-be.
        return false;
      });
    });
  </script>
</head>
<body>
  <div id="valami">
    <form name="open" method="get" action="feldolgoz_open.php">
      <select name="mappa">

        <?php include("select_mappa.php"); for($i=0; $i<count($ertekek); $i++) : ?>
        <option value="<?php print htmlspecialchars($ertekek[$i], ENT_QUOTES) ?>">
          <?php print htmlspecialchars($ertekek[$i], ENT_QUOTES) ?>
        </option>
        <?php endfor; ?>

      </select>

      <select name="fajlok">

        <?php include("../select_file.php"); for($j=0; $j<count($ertekek_file); $j++) : ?>
        <option value="<?php print htmlspecialchars($ertekek_file[$j], ENT_QUOTES) ?>">
          <?php print htmlspecialchars($ertekek_file[$j], ENT_QUOTES) ?>
        </option>
        <?php endfor; ?>

      </select>

      <input type="submit" value="Megnyitás" />
    </form>
  </div>
  <div id="data">
    
  </div>
</body>
3

kérdés

a.d.a.m · 2009. Okt. 17. (Szo), 09.37
ha jól értem a kódot, akkor az első select-ben ki lehet választani egyet azok közül a könyvtárak közül, amiket a select_mappa.php állományban felsoroltál, majd a másodikban select_file.php-ban szereplő állományok közül lehet választani.

Az $ertekek változónak kézzel adsz értéket, vagy úgy generálod?

Ha kézzel ilyen formában tárolod a fájlok adatait akkor poetro által adott link tökéletes számodra, ha dinamikusan állítod elő, akkor van más lehetőséged is.

A funkciók használata le van írva az oldalon, ott találsz példakódot is.
4

okés

gery90 · 2009. Okt. 17. (Szo), 21.26
Az adataim dinamikusak.
A következőre jutottam.
létrehoztam egy frissit.js fajlt amiben a következő kód van:

new Ajax.PeriodicalUpdater('div_open_mappa_file', 'creat.php',
{
method: 'post',
insertion: Insertion.Top,
frequency: 1,
decay: 2
});

és ezt includoltam be a creat.php (Ez tartalmazza a select elemeket amiről most szó van) törzsébe:

<body>
<script type="text/javascript">
function IncludeJavaScript(frissit.js)
{
document.write('<script type="text/javascript" src="'
+ frissit.js + '"></scr' + 'ipt>');

</script>
<div id="valami">
<form name="open" method="get" action="feldolgoz_open.php">
<select name="mappa">
<?php
include("select_mappa.php");
for($i=0; $i<count($ertekek); $i++)
{
print ('<option value="'.$ertekek[$i].'">'.$ertekek[$i].'</option>');
}
?>
</select>
<select name="fajlok">
<?php include("../select_file.php");
for($j=0; $j<count($ertekek_file); $j++)
{
print ('<option value="'.$ertekek_file[$j].'">'.$ertekek_file[$j].'</option>');

}
?>
</select>
<input type="submit" value="Megnyitás" />
</form>
</div>
</body>

de még mindig nem csinál semmit....
Hol rontottam el a kódot?
6

nem értem

a.d.a.m · 2009. Okt. 18. (V), 23.01
egy kicsit összezavarodtam. Mit is szeretnél pontosan? Egy olyan kódot ami a select elemekbe betölti a könyvtárak (select1), majd ott választva a fájlok (select2) nevét? Ha erre gondoltál, itt néz körül: jselect. Vagy egy olyat, ami folyamatosan (mondjuk percenként) frissíti a selectek tartalmát a könyvtárak tartalma alapján és már az oldal betöltésekor is van adat a selectek-ben?

A kódodból, szerintem hiányzik a function blokkot lezáró "}":
<script type="text/javascript">
function IncludeJavaScript(frissit.js)
{
document.write('<script type="text/javascript" src="'
+ frissit.js + '"></scr' + 'ipt>');

</script>
Egyébként sokkal egyszerűbb lenne így:
<script type="text/javascript" src="frissit.js"></script>
Egyébként hogyan kellene működni a kódodnak? Ahogy én értelmezem az ajax másodpercenként betölti a div_open_mappa_file konténerbe a creat.php-t. De én nem látok a kódban pl. div_open_mappa_file elemet. Emellett a kód lényegében változatlan (a korábbihoz képest) tehát egyszer belehelyezed a select-ekbe a tartalmat (könyvtár és fájl nevek) és az utána csak akkor változik/frissül ha a teljes oldalt frissíted.

A kód helyesen (szerintem) a következő (sajnos nem vagyok nagy prototype mágus, így lehet hogy mások ezt elegánsabban is meg tudják oldani) - megjegyezném nincs sok értelme a dolognak, mert az újratöltés miatt nem lehet választani:

HEADER:

<script type="text/javascript" src="http://prototypejs.org/assets/2009/8/31/prototype.js"></script>
<script type="text/javascript">
document.observe("dom:loaded", function(){
new Ajax.PeriodicalUpdater('konyvtarak', 'konyvtarlista.php', {
     method: 'get', frequency: 5, decay: 2
   });
new Ajax.PeriodicalUpdater('allomanyok', 'allomanylista.php', {
     method: 'get', frequency: 5, decay: 2
   });
});
</script>
BODY:

<div id="valami">
<form name="open" method="get" action="feldolgoz_open.php">
<div id="konyvtarak"></div>
<div id="allomanyok"></div>
<input type="submit" value="Megnyitás" />
</form>
</div>
konyvtarlista.php (ezt össze lehet vonni a select_mappa.php-vel, a lényeg hogy valami hasonló kimenete legyen):

<?php
if (include("select_mappa.php") ){
  print '<select name="mappa">';
  for($i=0; $i<count($ertekek); $i++)
    {
    print ('<option value="'.$ertekek[$i].'">'.$ertekek[$i].'</option>');
    }
  print '</select>';
  }
?>
7

Hali lenne egy kérdésem

agyergorcs · 2009. Okt. 19. (H), 17.18
Hali

lenne egy kérdésem nekem is a frissítéssel kapcs, egy webshopot csinálok és amikor a kosárba beleteszek valamilyen terméket a weblapon csak F5 gombnyomás után jelenik meg a plusz összeg és a termék, nem egyből ahogy megnyomtam a gombot. Hogy tudnám kivitelezni, hogy minden kosárbatételnél megjelenjen egyből?
8

Így

gphilip · 2009. Okt. 19. (H), 17.32
Hali!

KészÍts egy kontrollert, illetve egy templatet, ami csak a kosár megjelenÍtéséért felelős. Egy normál oldal dispatching-je során modulként használhatod a kosár kontrollerét a fő kontrollerben.

Majd mikor a kosárbe helyezel vmit, akkor a kosárba gomb egy AJAX-os requestet indÍt, ami közvetlenül cÍmzi a kosár kontroller URL-jét, ami elmenti a műveletet, majd visszaadja a kosár view-ját. Ezzel a válasszal lecserélheted az eredeti modul markupját.

vagy esetleg adj munkát és kenyeret azoknak, akik ebből élnek, és csináltasd meg velük :)
9

bár megtehetném:D

agyergorcs · 2009. Okt. 19. (H), 20.26
bár megtehetném:D
10

Sikerült megoldanom viszont

agyergorcs · 2009. Okt. 20. (K), 08.40
Sikerült megoldanom viszont iframe-el, AJAX-hoz sajnos nem konyítok, viszont egy gondom lenne, hogy a body-nak a hátterét adja hozzá ami nekem nem annyira jó és bármi mást állítok be semmi nem történik és nem is akar megszűnni ez az átlátszóság, ezt hogyan tudnám megoldani?