Autor Zpráva
Peet
Profil
Dobrý den jak se dá vyřešit toto ?

<script>
function vrat(neco){
.
.
. 
return vysledek;
}
</script>

<?php
$test;
$prom='<script>vrat("'.$test.'")</script>';
?>

díky za rady
Str4wberry
Profil
A co na tom chcete řešit?
Peet
Profil
toto nefunguje

když jsem zkoušel toto

$prom="<script>return 1</script>";

tak proměnná obsahovala přesně to co jsem do ní dal tudíž skript to vubec nevnímá.
Str4wberry
Profil
Nejčastější potíže s PHP (FAQ) » Jak přenést proměnnou z javascriptu do PHP
Tomkinss
Profil
Spôsobom ako to chceš riešiť to nevyriešiš. Vysledok js funkcie si do php premennej nemozes priradit, pretoze php sa vykonava na servery a js az neskor u teba v prehliadači.
Peet
Profil
jojo už jsem to četl.. snažím se vyřešit převedení adresy na Latitude,longtitude...

vim ze funkce od google maps api to umí jenže umím převést jen jednu adresu takhle

    var geocoder = new google.maps.Geocoder(); // creating a new geocode object
    
      geocoder.geocode( { 'address': nejakaadresa1, function(results, status){
        var location1 = results[0].geometry.location;
        var latlng=new google.maps.LatLng(location1.lat(),location1.lng());       
      });


jenze v tuhle chvily je proměnná která drží ty parametry ve funkci tudíž ji nedostanu ven takhle

    var geocoder = new google.maps.Geocoder(); // creating a new geocode object
    
      geocoder.geocode( { 'address': nejakaadresa1, function(results, status){
        var location1 = results[0].geometry.location;
        var latlng=new google.maps.LatLng(location1.lat(),location1.lng());        
      });

document.write(latlng); //nelze !

a zkrátka nevím jak to mám udělat.. tak mě napadlo převést si všechny adresy z db a uložit do db pouze latlng souradnice ale zjistil jsem ze to tedy take nejde :D..
Virtus
Profil
Nejsem odborník na JS ale pokud bys tohle:
 var latlng=new google.maps.LatLng(location1.lat(),location1.lng()); 
změnil na tohle:
 latlng=new google.maps.LatLng(location1.lat(),location1.lng()); 
tak by to pak snad šlo vypsat pomocí:
document.write(latlng);
Peet
Profil
ne ale vím že kdysi dávno mi to šlo podle vašeho předpokladu. jen se zeptám dle čeho soudíte že by to mohlo takto fungovat ? jakej je rozdíl mezi tím zda tam mám var nebo ne ?

jinak funguje mi to pouze takhle.

function initialize(address) {
var location1;
var latlng;

    var geocoder = new google.maps.Geocoder(); // creating a new geocode object
    
      geocoder.geocode( { 'address': address}, function(results, status){
      
        location1 = results[0].geometry.location;
        latlng=new google.maps.LatLng(location1.lat(),location1.lng());
        
        showMap(latlng);
               
      }); 
    
 
}
function showMap(latlng){
    var myOptions = {
      zoom: 18,
      center: latlng,
      mapTypeId: 'satellite'
    };

.
.
.
.
}

jen takhle to funguje protoze on preda tu promenou latlng.. jinak ji predat nelze.. asi.


jeste jsem zkousel pomocí funkce, coz by pro me bylo nejprijemnejsi.. ale take nejde

function createLatLng(address){
    var geocoder = new google.maps.Geocoder(); // creating a new geocode object
    
      geocoder.geocode( { 'address': address}, function(results, status){
      
        var location1 = results[0].geometry.location;
        var latlng=new google.maps.LatLng(location1.lat(),location1.lng());
        
        return latlng;       
      });
}
 
function initialize(address) {  
 
    var latlng=createLatLng(address); 
    
    var myOptions = {
      zoom: 18,
      center: latlng,
      mapTypeId: 'satellite'
    };
.
.
.
}
Alphard
Profil
Peet:
Myslím, že to šlo zjistit i bez js přes jejich API, zkoušel jste hledat?
Peet
Profil
ano hledal jsem... a nasel jsem navod jak prevest jednu adresu na latlng tedko už neřeším jak to uložit do db ale jaktože mi nefunguje ta js funkce.. v tom návodu převedli jednu adresu a tu zobrazily na mapě. viz kód #8. a zajímá mě jaký je rozdíl mezi kódem #8 ta první část a tou druhou částí mělo by to přeci fungovat stejně. a ještě mě zajímá jaký je tedy rozdíl mezi tím jestli použiju var nebo ne. Děkuji
Virtus
Profil
No protože když je před proměnou var v JS, tak je proměnná označena jako lokální, tedy pokud budu mít proměnou ve funkci uznačenou jako var, budu tuto proměnnou vidět pouze v dané funkci, kdyžto bez var, je proměnná globální, tudíž jí můžu použít všude
Peet
Profil
ok děkuji ještě to nějak zkusím..


ne prostě to nefunguje.. i bez var to prostě píše že location1 is undefined.. nevíte kde může být problém ?
Peet
Profil
Ta už jsem to jakš takš vyřešil, ale co se děje teď tak to už absolutně nechápu.. jakoby si to dělalo co chce. je to delší kód kdyby se na to někdo podíval a zjistil chybu budu moc rád.

JAVASCRIPT
//MAPS
       
//funkce která převede adresu na latlng a nastaví ji na center mapy
function initialize(address,typ,zoom) {  
 
    geocoder = new google.maps.Geocoder(); // creating a new geocode object
    
      geocoder.geocode( { 'address': address}, function(results, status){    
          lokace = results[0].geometry.location;
          centerLatLng=new google.maps.LatLng(lokace.lat(),lokace.lng());
           
          showMap(typ,zoom);
      
      });    
}

function showMap(typ,zoom){

//Vykreslení mapy    
    var myOptions = {
      zoom: zoom,
      center: centerLatLng,
      mapTypeId: typ
    };
    
    map = new google.maps.Map(document.getElementById('map'), myOptions);
    
    map.setTilt(45);
}
    

//funkce která vytvoří marker pro danou adresu a vrátí latlng
function createMarker(address,popis,animace=""){
    geocoder = new google.maps.Geocoder(); // creating a new geocode object
    
      geocoder.geocode( { 'address': address}, function(results, status){
      
      if (status == google.maps.GeocoderStatus.OK){
          
          lokace = results[0].geometry.location;
          latlng=new google.maps.LatLng(lokace.lat(),lokace.lng()); 
          
          var marker_options={
          position: latlng,
          icon: "http://neco.cz/icon.jpg",
          title: popis
          }
    
        var marker=new google.maps.Marker(marker_options);         
        marker.setMap(map);    
          if(animace=="BOUNCE")
            marker.setAnimation(google.maps.Animation.BOUNCE);
            
        return latlng;
            
      }
      });
}

//funkce která vytvoří marker z mé polohy a vrátí latlng
function myPosition(){
  if(navigator.geolocation) {
    browserSupportFlag = true;
    navigator.geolocation.getCurrentPosition(function(position) {
      latlng = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
      
          var marker_options={
          position: latlng,
          icon: "http://neco.cz/icon.jpg",
          title: "Zde se nacházím"
          }
    
        var marker=new google.maps.Marker(marker_options);         
        marker.setMap(map);
        
        return latlng;    
      
    });
  }
  // Browser doesn't support Geolocation
  else {
    alert("Zjištění polohy selhalo, zkuste obnovit stránku");
  }
}

//vykreslení čáry mezi dvěma body
function createPolyline(address1,address2){
        
    points=[
      new google.maps.LatLng(address1),
      new google.maps.LatLng(address2)      
    ];
  
      var polyline = new google.maps.Polyline({
      path: points,
      strokeColor: "#ea991b",
      strokeWeight: 2
    });
    polyline.setMap(map);
      
}

SPOUŠTĚCÍ SOUBOR
<script>
initialize("Praha","roadmap",11);

var my=myPosition();
var secondPosition=createMarker("Brno","Popis","BOUNCE");

createPolyline(my,secondPosition);
 
</script>


Co mi nejde do hlavy !
když vytvářím funcemi nějaké markery ať už mé pozice nebo nějaké adresy tak vždy zná objekt "map" ale jakmile chci vykreslit čáru tak mi firebug napíše že "map is undefined" ale když do té samé funkce dám funkci která by měla vytvořit třeba ten marker tak najednou zase objekt map zná. Už opravdu nevím.
W4C
Profil
Ohledně toho JS do PHP:
Dnes jsem potřeboval dostat výsledek js kodu do php proměnné a tohle funguje, takže se to dá případně použít:

<script type="text/javascript">
var jsprom = 'funguje to';
<?php $test = "<script>document.write(jsprom)</script>"?>
</script>
<?php echo 'Vysledek: '.$test;?>
Virtus
Profil
No tak tohle ale funguje trochu jinak než si myslíš:
do proměnné test se ti uloží celý ten řetězec: <script>document.write(jsprom)</script>, ale neprovede se
na stránku (do prohlížeče) se ti tedy poté odešle tohle:
<script type="text/javascript">
var jsprom = 'funguje to';
</script>
Vysledek: <script>document.write(jsprom)</script>
No a prohlížeč potom vykoná JS:
Nastaví proměnnou jsprom a uloží do ní řetězec "funguje to"
A nasledně o pár řákdů níž vypíše: Vysledek: a opět vykoná druhý JS, který vypíše obsah proměnné jsprom
Schválně si v prohlížeči otevři zdrojový kód stránky a podívej se nato.
W4C
Profil
Jasně, script se provede ve dvou částech na jedné stránce - odešle se ven, vrátí se výsledek, ten se odešle ke zpracování PHP, script se dokončí a PHP výsledek s použitím vnořeného obslužného javascriptu vytiskne - to je přece účel, ne?
Virtus
Profil
W4C:
Jasně, script se provede ve dvou částech na jedné stránce - odešle se ven, vrátí se výsledek, ten se odešle ke zpracování PHP, script se dokončí a PHP výsledek s použitím vnořeného obslužného javascriptu vytiskne - to je přece účel, ne?
A kde máš v tomhle to odeslání do PHP?
<script type="text/javascript">
var jsprom = 'funguje to';
<?php $test = "<script>document.write(jsprom)</script>"?>
</script>
<?php echo 'Vysledek: '.$test;?>
Tohle nikam nic neodesílá do PHP. Na serveru se vykoná PHP, výstup PHP se odešle prohlížeči, prohlížeč spracuje JS a tím to končí, nikam se nic neodesílá.
W4C
Profil
Virtus:
do proměnné se uloží(přiřadí/odešle) jsprom, včetně JS, protože bez jsprom by druhý script byl k ničemu a nebylo by proto nic, co by se dalo prohlížeči odesílat.
Virtus
Profil
W4C:
[#14]
Dnes jsem potřeboval dostat výsledek js kodu do php proměnné a tohle funguje
[#18]
do proměnné se uloží(přiřadí/odešle) jsprom, včetně JS

se trochu vylučuje, nemyslíš, prvně napíšeš výsledek JS, jenže výsledek tohohle: <script>document.write(jsprom)</script> je vypsaní textu funguje to, tudíš v PHP proměnné $test, bych měl podle tvého prvního výroku mít uloženo funguje to a pak tvrzení v [#18], kde sám napíšeš že do proměnné přiřadíš celý JS, tudíš v PHP najednou výsledek JS nemáš, protože máš v PHP celej JS kód.
Tohle:
<script type="text/javascript">
var jsprom = 'funguje to';
<?php $test = "<script>document.write(jsprom)</script>"?>
</script>
<?php echo 'Vysledek: '.$test;?>
je úplně to samé co tohle:
<script type="text/javascript">
var jsprom = 'funguje to';
</script>
Vysledek: <script>document.write(jsprom)</script>

Podle toho co si napsal v [#14] by to mělo ale vypadat takhle:
<script type="text/javascript">
var jsprom = 'funguje to';
</script>
Vysledek: funguje to
W4C
Profil
Virtus:

Vůbec nic se nevylučuje:
-14 je pravda -výsledek jsem tam dostal
-18 je samozřejmě taky pravda, protože díky "JS(2)" se výsledek "jsprom" zobrazil
Alphard
Profil
Ale je to dobrý argument proč neescapovat, nepotřebujeme ajax ;-)

W4C:
Tak když vám to tak pěkně fungje, mohl byste v první části použít var jsprom = prompt("Zadejte údaj"); a v PHP ten údaj uložit do souboru.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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