ugrás a tartalomhoz

JS -> php

aeternum · 2009. Nov. 9. (H), 12.33
Sziasztok.
Szenvedek egy problémával és nem megy (azé' szenvedek :).

Input textből kinyert értéket szeretnék megjeleníteni egy SPAN-on, majd ezt az értéket átadni egy php változónak.

A szenvedés oka épp a technológiai-elvi különbség. A JS lokálgépen fut, míg a php szerveren.
Tehát, ami változik lokálon, arról nem tud a szerver. Pedig jó vóna! :)
Az onBlur, illetve az onChange megoldja a SPAN.innerText értékének megváltozását, de ettől még nem lesz $_REQUEST()-ben semmi sem.

A form submit pedig újratölti az oldalt, így kiüriti az innerText.value-t. Igaz, ekkor már van $_GET/$_POST értékem, de nem tudom ezzel az értékkel frissíteni a SPAN.innerTextet.

Stróbáltam JS függvények variálásával, de nem megy...
:(

Már kezdek belezavarodni a függvények meghívásába...

<script language="JavaScript" type="text/javascript">
var d=new Date();
var monthname=new Array("Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December");

var dayname=new Array("Vasárnap","hétf&otilde;","kedd","szerda","csütörtök","péntek","szombat");
var TODAY = "<b>" + d.getFullYear() + ". " + monthname[d.getMonth()] +  " " + d.getDate() + ".           " + dayname[d.getDay()] + "</b>";

function elso_kiiras()
{ var mikor= d.getHours()+1+':00';
  document.getElementById('um_MSG').innerText='Mérés ideje: '+ mikor;
}

function kukiba(em)
{var lejarat = new Date();
 var egyedi_m = em;
  lejarat.setTime(d.getTime() + 1800);
  setCookie("egyedi_meres_ideje", em, lejarat);
}

function kiir (mit)
{ document.getElementById('um_MSG').innerText='Egyedi mérés: '+ mit;
  kukiba(mit);
}

function elkuld()
{var egyedi_m;
 egyedi_m=document.getElementById('egyedi').value;
 kukiba(egyedi_m);
}

</script>
</head>



<body onload="elso_kiiras();" bgcolor="#000000">


A cella, ahova kell az input.
<td>
   Egyedi mérés:
   <form method="get" name="egyedi_fn" id="egyedi_fn" onsubmit="elkuld();">
<input name="egyedi" id="egyedi" type="text" size="1" maxlength="5" value="" onFocus="if(this.value=='') if (d.getMinutes()>9) this.value=d.getHours()+':'+d.getMinutes(); else this.value=d.getHours()+':0'+d.getMinutes();" onChange="kiir(this.value);" />
    </form>
  </span>
 </td>


A cella, aminek az értékét megváltoztatnám-tom...
A php kód szerzi meg amegváltoztatott és elküldött(!!) értéket
<td>
  <span id="um_MSG">
    <?php
      $egyedi= $_REQUEST['egyedi'];
      isset($egyedi) ? $meres_ideje = $egyedi : $meres_ideje = $most_ora;
    ?>

    <script language="javascript"> kiir(egyedi_m);</script>
  </span>
 </td>


Hogyan tudom megoldani, hogy submit után ne az elso_kiirás() értéke, hanem a megváltozott érték jelenjen meg az u_MSG SPAN-on?
(A cookie-val épp most prószálkozom, de -nekem- nyögvenyelős.)
Ötletelek: hidden inputnak átadni??? de az is törlódik lapfrissítéskor...

Köszi!
 
1

Kulcsszo: AJAX

dragi · 2009. Nov. 9. (H), 12.45
Kulcsszo: AJAX
2

Aham! :)

aeternum · 2009. Nov. 9. (H), 15.17
Csakhogy a JS-t is és a php-t is alig pöntyögöm. És azt sem tudom, hogyan fogjak hozzá meg hogy hogyan illeszthető be a meglevő cuccos?
Túúúdom! Gúúúúúúúgli!
:)

De nekem most kell erre megoldás!
Az jó gondolat, hogy JS-sel cookie-ba kirakom az input értékét, majd php-vel visszatöltöm és változóba fűzve kiíratom?

$a="<script language=js>document.getElementById('um_MSG').innerText='üzenetem :'".$_COOKIE."></script>";
print $a;

Tom, bonyi!
De most nem tudok jobbat!
Van jobb? (Nem Ajax! :)
3

Üdv !

whiteman0524 · 2009. Nov. 9. (H), 16.56
Nem igazán értem mi a problémád...Már többször is elolvastam de se füle se farka :) Ha jól értem van egy input meződ. Amikor valamit beleírnak meg akarod jeleníteni egy SPAN elemben. Ez idáig tiszta és nem nagy szám... De hogy akarod átadni egy PHP változónak ? Jobban mondva mit szeretnél csinálni ? Mi a célod vele azzal hogy átadod az értéket egy változónak ? Így látatlanban nem igen tudunk segíteni, mert nem tudjuk mire kéne. Lehet hogy van sokkal egyszerűbb megoldás is, mint AJAX-ozni ,meg stb. Kérlek írd le hogy pontosan mit szeretnél azzal az értékkel csinálni ? :)
5

minden szónál.. :)

aeternum · 2009. Nov. 9. (H), 18.21
Belépő kép
Ezen megjelenik a mérés ideje : aktuális óra+1!
OKs!


Belép az input mezőbe, mert egyedi mérés eljárását szeretné foganatosításilag megteendeni.
OKs!

Kivitte a fókuszt, és a SPAN('um_MSG') értéke át is íródik egyedi mérésre és időre.
OKs!

De, ha rája csap az entörre, akkor form.submit miatt újratöltődik az oldal, és ugyan a $_REQUEST-ből kiolvasandó leend az múlandott érték, ámde a SPAN-on a init érték látszandik.
(!OKs)!

Azt szeretném- valahogy- elérni, hogy a SPAN is íródjék át a csereértékre!

Ennél jobban már nem tudom elmondani!
:)
4

mit is?

aeternum · 2009. Nov. 9. (H), 17.27
Természetesen majd adatbázisban tárolni.

A SPAN-ban való megjelenítés valóban nem nagy szám. Erre jó a kiir()fv. onBlur eseménynél gyönyörűen múkodik, onChange-nél, ha nem ütök entert a változtatás után, hanem csak elveszem a fókuszt, akkor is szépen vált értéket a SPAN területen.

Ámde átadni php-nak úgy, hogy az oldal már ne töltődjön újra, az már nagyobb szám!
:)
Legalábbis nekem.
Onnantól, hogy nyugtázom a változtatást, a form metódusa lép életbe(get-post), újratöltve az oldalt, így el is veszik a megváltoztatott érték. Igaz, bekerül a $_REQUEST-be, de .. ezt már írtam..
:)

Ezzel az input mezővel szeretném megtudakolni a kedves felhasnyalótól, hogy rendes, normális adatsor input lészen-e majd, vagy csak egy ad-hoch mérés? Ha rendes, akkor az oldal elején definiált $most_ora lesz a mérés idejének alapértéke, ha meg belefirkál az ido-input mezőbe, akkor egyedi mérés lesz.

Merthogy rögzítenem kell nem csak a mért adatokat, hanem a mérés időpontját is- ezért kéne átadni php-nak az adatot. (Meg azt is, hogy ténylegesen mikor tette, meg azt, hogy ki, meg azt, hogy felvitt vagy javított-e, meg... Ezek a következő napok porblémái [a'la Besenyő család:].)
6

Rendben...

whiteman0524 · 2009. Nov. 9. (H), 21.15
Nos így van korrektül megfogalmazva egy probléma :) Most már érthető. Nagyon egyszerű a megoldás nem kell ide AJAX, majd belinkelem ide csak annyit nem értek hogy a képeken, ott bal oldalt azok input mezők ? Tehát a felhasználó tölti ki őket ? Amikbe az van írva hogy : Tanmedence, Tangyógy, Szabadtéri Élmény stb....
7

közben megtaláltam a megoldást! :)

aeternum · 2009. Nov. 11. (Sze), 22.05
Először is válaszolova a kérdésedre:
Nem input mezők, hanem menüpontok. sql-lel generálódnak a medence táblából.
Így, ha űj medence épül, áll rendszerbe, akkor nem kell megírnom, bővítenem újra az oldalt, hanem a felhasnyaló "teszi" meg helyettem. Ez a filozófia végig benne lesz a programban. (A gépészeti modulnál vízórák, hőmérők, elektromos mérők tömkelege fog előjönni és változni is. Oda, pölö, vonalkód technológiát is be kell majd vinnem.)

A megoldásom. Mivel az egyedi mérés adata űrlapon keresztül jön, ezért az bekerül a $_REQUEST változóba.
A JS értékadás pedig így történik:
function elso_kiiras()
 { var mikor= d.getHours()+1+':00';
   var egyedi_m="<?=$_REQUEST['egyedi']?>";

   if (egyedi_m=="")
     {document.getElementById('um_MSG').innerText='Mérés ideje: '+ mikor;}
    else
     {document.getElementById('um_MSG').innerText='Egyedi mérés: '+ egyedi_m;}
 }


A <body onload="elso_kiiras()"> meg is teszi, amit akartam!
:)
(Meglehet, nem elegáncsos! :))))

Ez az értékadás (<?=$_REQUEST['...']?>) miként van definiálva php-ben???
8

Értékadás?

Poetro · 2009. Nov. 11. (Sze), 22.16
Ez az értékadás (<?=$_REQUEST['...']?>) miként van definiálva php-ben???

A
<?=$_REQUEST['...']?>
megegyezik a
<?php print $_REQUEST['...']?>
-tel, és nincsen benne értékadás sehol.
9

metodikai probléma felület kialakítással kapcsolatban

aeternum · 2009. Nov. 11. (Sze), 23.50
Mi legyen a helyes eljárás?
Ha..
Adott egy adattömeg, amit táblázatos formában kell megjeleníteni. Az adatok közt lehetnek ún. szélsőértékek, vagyis határértéken aluli vagy határértéken túli mennyiségek.
Azt szeretném, hogy ezek a szélsőérékek a megjelenés során a többitől eltérő hátterű cellákban jelenjenek meg.

Hogyan lehet azt elérni, hogy miközben kidobja a képernyőre a táblázatot, ezek az értékek egyből szembetűnőek legyenek?

Stíluslapban nem tudok feltételt használni.
A generálás során kell feltételvizsgálatot végezni és előre definiált stíluslap osztályt rendelni a feltételtől függően?
(Nem lassítja ez a feldolgozást?)

pölö:

Ha $ertek > $felso_ertek akkor print "td.class:felso_ertek" ha < akkor td.class:also_ertek különben td.class:normal
(szintaktikára ne figyelj! :)

Melyik erre a megfelelőbb, gyorsabb, kezelhetőbb eljárás? if? switch? egyéb?
10

egyszerű css

gex · 2009. Nov. 12. (Cs), 14.12
Azt szeretném, hogy ezek a szélsőérékek a megjelenés során a többitől eltérő hátterű cellákban jelenjenek meg.
vagy te nem érted a stíluslapok lényegét vagy én nem értem a kérdésed.

cssben csinálsz két osztályt: td.high { background: red; }, td.low { backgrund: black; } és ahol a határértékeken kívül esik a cellákba írandó érték, ott adsz a td elemnek egy class tulajdonságot high vagy low értékkel.
11

CSS feltétel megadás

aeternum · 2009. Nov. 14. (Szo), 19.17
Gex-nek válasz
Mindkettő lehetséges! (Alant kiderül: előbbire nagyobb az esély :)
:)))

Azért kérdés a kérdés számomra, mert nem statikus oldalról van szó, hanem dinamikus, óráról órára változó adatsorokkal.

Az valóban eccerű lenne, ha statikus oldalon két-három-négy osztályt definiálnék, oszt előre megadnám a cellák tulajdonságát.
Csakhogy nem tudom, hogy a következő órában a következő mérés eredménye high vagy low lesz-e. Tehát dinamikusan kell előállítani a megjelenítő oldalt.
:)

****************************

Mögen kiderült, hogy hiátusok vagynak az fejemben és tudásomban!
:)

A CSS-nek igenis lehet feltételt szabni- bár, nálam nem működik! :)
De nadon jó vóna! :)

Szóval, a CSS alapjai I-ben rátaláltam egy megoldásra.

<style type="text/css">
 input[type="password"] { color: #0000a0; } 
</style> 
illetve a feltétel megadás/keresés CSS-ül:

input[type~="pass"] { ... }
Ez teljesen korrekt lenne, ha táblázatra is alkalmazható lenne.. de hogyan?
Így?

table[td~="1."] { color:yellow }
table[td~="2."] { color:red }
Mi a helyes szintaktika táblázat esetében?
12

káosz

gex · 2009. Nov. 14. (Szo), 19.32
először is tisztázzuk hogy honnan jönnek azok az adatok. statikus html fájlról van szó vagy php-ból generálod a táblázatod?
13

honnét jönnek

aeternum · 2009. Nov. 15. (V), 21.29
Egy űrlapból töltöm föl az adatbázist. És az adatbázisból raknám ki a képernyőre.

Vagyis, php fogja generálni a táblázatot: a már meglévő és az újonnan fölvett adatsorokkal.

Látványban valami ilyesminek kéne kinéznie a végén:

<table width="371" border="1" align="center" cellpadding="0" cellspacing="0">
  <caption>
    valami mérés
  </caption>
  <tr>
    <td style="background-color:#99CC66">&nbsp;</td>
    <td style="background-color:#99CC66">8:00</td>
    <td style="background-color:#99CC66">11:00</td>
    <td style="background-color:#CC6600">11:30</td>
    <td style="background-color:#CC6600">12:00</td>
    <td style="background-color:#99CC66">14:00</td>
    <td style="background-color:#99CC66">17:00</td>
    <td style="background-color:#99CC66">19:00</td>
  </tr>
  <tr>
    <td style="background-color:#99CC66">pH</td>
    <td>7.20</td>
    <td style="background-color:#FF99CC">7.95</td>
    <td style="background-color:#FF66CC">8.02</td>
    <td style="background-color:#FF33CC">8.65</td>
    <td style="background-color:#FF33CC">8.52</td>
    <td></td>
    <td></td>
  </tr>
</table>
A 11:30-as és a 12:00-ás mérések egyedi időpontok, ezért vannak kiemelve.

A "pH" sor 7.80-as értéke már magasnak, az annál nagyobb pedig TÚLmagasnak számít. Illetve, a 7.00 alacsonynak, a 6.50-nél kisebb meg már TÚLalacsonynak.

A 17:00 és a 19:00-ás mérések fognak következendeni 'ezután', hacsak a főnök nem utasít gyakoribb mérésre.

A "style="background-color:#xxxxxx"-et szeretném kiváltani olymódon, hogy ne a php értékelje ki az értékeket és ne elágazások útvesztőiban barangoljon az adat (ha ennyi, akkor fűzze hozzá a td definicióhoz azt hogy..., ha meg annyi, akkor meg azt hogy ..., ha meg mégannyi, akkor így, és ha más, akkor meg amúgy.., vagy ha az sem, akkor meg emígy), hanem a CSS döntse el a hátteret.
Erre lenne jó, ha táblázatra is működne az, ami input esetében példának fel vagyon hozva.

Vagy ez nagyon kacifántos megoldása lenne a poooorblémának?
:)
14

tulajdonság alapú kiválasztók

gex · 2009. Nov. 15. (V), 21.39
css-ből nem tudod megoldani ezt a problémát, az általad felhozott inputos példa teljesen másról szól. css-ben tudsz tulajdonság alapú kiválasztót definiálni, de a td elem tartalma az nem tulajdonsága magának az elemnek.

<td tulajdonsag1="ertek1" tulajdonsag2="ertek2">tartalom</td>
itt a tulajdonsag1 és tulajdonsag2 alapján tudnál css szabályokat létrehozni, de nem a tartalom alapján.
15

Bocsánat, hogy ilyen láma kéréssel fordulok hozzátok!!!

aeternum · 2009. Nov. 20. (P), 22.26
A szemem kifolyik, akkor se jövök rá, hogy hol maradt el vagy hol van több zárójel, idézőjel, akármi.

var ho_adat = ph_adat = sz_adat = kk_adat = false;
		
function adat_ellenorzes(honnan, adat) 
  { // hova irjon hibauzenetet
   reteg = honnan.substring(0,3);
   reteg += 'mero_hiba';

   /*/ szam-e?
   if isNaN(adat)
     { kiir(reteg, 'Számot kérek!:', adat); 
     }
    else //else_1
     { switch (honnan) 
        { case "ph_ho" :
            ho_adat = true;
            kiir(reteg, '', '');
           break;

          case "ph_ph" :
            ph_adat = true;
            kiir(reteg, '', '');
           break;

          case "cl_sz" :
            sz_adat = true;
            kiir(reteg, '', '');
           break;

          case "cl_kk" :
            kk_adat = true;
            kiir(reteg, '', '');
           break;
         } // end switch

       // urlap elkuldesenek engedélyezese, medence adatanak bevitele a rejtett mezobe
      var mit_mer  = document.getElementById('um_MSG').innerText;

      if ((ho_adat)&&(ph_adat)) 
       { document.ph_meres_form.medence.value = mit_mer;
         document.getElementById('ph_OK').disabled = false;
       }

      if ((sz_adat)&&(kk_adat))
       { document.cl_meres_form.medence.value = mit_mer;
         document.getElementById('cl_OK').disabled = false;
       }

    } // end else_1
} // end function adatellenorzes


Szerintem korrekt a kód és mégis azt sugallja a 'Hiba az oldalon', hogy valami nem kerek. És nem csak sugallja, hanem az előzó kódrészletek sem hajtódnak végre.
Ha kikommentezem a teljes fv-t, akkor minden rendben...
:(

Köszi a segedelmet, és még egyszer BOCS!
16

több sebből vérzik

Poetro · 2009. Nov. 20. (P), 22.42
  1. Nem tudom, hogyan kapcsolódik ez a témához? Új kérdés, újt téma.
  2. Milyen nyelven van ez írva? Mert erről elfelejtetted az embereket felvilágosítani, de feltételezem, JavaScript.
  3. A /*/ szam-e? milyen megjegyzés akart lenni? // megjegyzés vagy /* megjegyzés */ stílusú?
  4. Az if után a feltételt zárójelbe kell tenni minden esetben.

És következzen végezetül egy vmivel pofásabban formázott kód az előbbi mintájára, szintaktikai hibáinak javításával:
var ho_adat = ph_adat = sz_adat = kk_adat = false;

function adat_ellenorzes(honnan, adat) { // hova irjon hibauzenetet  
  reteg = honnan.substring(0, 3);
  reteg += 'mero_hiba';

  // szam-e?  
  if (isNaN(adat)) {
    kiir(reteg, 'Számot kérek!:', adat);
  }
  else { //else_1 
    switch (honnan) {
      case "ph_ho":
        ho_adat = true;
        kiir(reteg, '', '');
        break;
  
      case "ph_ph":
        ph_adat = true;
        kiir(reteg, '', '');
        break;
  
      case "cl_sz":
        sz_adat = true;
        kiir(reteg, '', '');
        break;
  
      case "cl_kk":
        kk_adat = true;
        kiir(reteg, '', '');
        break;
    } // end switch  
    // urlap elkuldesenek engedélyezese, medence adatanak bevitele a rejtett mezobe  
    var mit_mer = document.getElementById('um_MSG').innerText;

    if ((ho_adat) && (ph_adat)) {
      document.ph_meres_form.medence.value = mit_mer;
      document.getElementById('ph_OK').disabled = false;
    }

    if ((sz_adat) && (kk_adat)) {
      document.cl_meres_form.medence.value = mit_mer;
      document.getElementById('cl_OK').disabled = false;
    }

  } // end else_1  
} // end function adatellenorze
17

Köszönöm és bocsánat! :)

aeternum · 2009. Nov. 21. (Szo), 21.14
1. Nem akartam a szálakat szaporítani...
Belátom, lehet, hogy rosszul tettem!
Báááár! Annyiban kapcsolódik, hogy ez egy megoldás arra, hogy JS-ben lezajlott eseményt (um_MSG tartalma kattintástól függ) php-nak adok át azzal, hogy egy, az xxx_form-on szereplő rejtett mezőnek adok értéket.

2. Igen, JavaScript.
Azt gondoltam, hogy a kifejezések, értékadások egyértelműen megmutatják, hogy nem más. Még tanulnom kell ezt a fórumozós stílust!

3. Az a megjegyzés lehet a hiba! Amikor kommentezgettem, külön a fv-t, külön a részeit, akkor bennt maradhatott és, mivel úgy gondoltam, hogy az úgyis kommentnek számít, alapból föl se figyeltem rá..

4. Akkor ez volt a másik hiba, amit lentebb már nem követtem el...
Figyelmetlenség!!! :(


5. Én kétszer is átjavítgattam a bejegyzés írásakor a kódot, de sehogy se akarta olyan formában megjeleníteni, mint a tied!
Minden sor után kitöröltem az esetlegesen bennmaradt szóközöket, entört nyomtam, oszt léptem a következő sorra. Mégis egybefolyt. Miután előzőleg egy "Mentés"-i kísérletem eredményeképp üres fórum-űrlapot adott vissza a böngésző, negyedszerre mr nem volt lelkierőm (12 órai fizikai munka után) még egyszer végig futni minden soron.