NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Prevod z vystupu php do javascriptu

V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Filip
Člen
Avatar
Filip:22.4.2016 14:39

Zdravim, potreboval bych poradit. Mam php skript, ktera mi po zpracovani n promennych $x a $y (desetinna cisla). Jsou to souradnice do mapy, ktere se generuji podle mista, ktere je zrovna vyhledavano v databazi. Jak mam tyto promenne pouzit v javascriptu (predpokladam, ze pomoci poli, ale nevim si s tim rady). Kod v javascriptu mam nasledujici:

var x=<?php echo $x; ?>;
var y=<?php echo $y; ?>;
document.write(x);

document.write(y);

Kdyz je vysledek pouze jeden, v poradku se zde promenne vypisou, kdyz je vysledku vic, vypise 0. Mockrat diky za rady

 
Odpovědět
22.4.2016 14:39
Avatar
Odpovídá na Filip
Neaktivní uživatel:22.4.2016 18:09

Počkej počkej... Co s nima v javascriptu míníš dělat? Poslat je třeba jako parametr nějaký mapový knihovně? Něco jiného? Z tvého nejasného zadání nechápu ani ň. Zkus to upřesnit.

Nahoru Odpovědět
22.4.2016 18:09
Neaktivní uživatelský účet
Avatar
Filip
Člen
Avatar
Odpovídá na Neaktivní uživatel
Filip:22.4.2016 19:24

Kdyz to trochu rozvedu...
Mam databazi, kde mam mimo jine sloupec ulice. V php mam kod, ktery vyhledava dle zadanych parametru a pomoci foreach nacita data:

foreach($dotaz as $n)
{...
$ulice=$n['ulice']
...}

dale pak priradim ulici souradnice (napr. if($ulice=="vo­dickova"){$x=1; $y=1;}
v javascriptu pouzivam funkci google map

var x=<?php echo $x; ?>;
var y=<?php echo $y; ?>;
var citymap = {
    mista: {
    center: {lat: x, lng: y}
  },

}

ale jak mam teda vysledek ulozit do poli a nasledne prenest do javascriptu, aby to fungovalo, pripadne jak ve skriptu docilit, aby se v pripade vice vysledku pripocitavaly a jmenovaly napr. mista1, mista2... ?
Dostal jsem radu pouzit json_encode ale tomu bohuzel nerozumim vubec a jsem bezradnej :/

Editováno 22.4.2016 19:27
 
Nahoru Odpovědět
22.4.2016 19:24
Avatar
Filip
Člen
Avatar
Odpovídá na Filip
Filip:22.4.2016 20:28

Jeste zjednodusim dotaz... Potreboval bych, aby se mi ulice nactene z databaze, kterym v php pridelim souradnice, zobrazovaly na strance s mapou jako body (nebo kruznice) v teto mape.

Editováno 22.4.2016 20:29
 
Nahoru Odpovědět
22.4.2016 20:28
Avatar
Neaktivní uživatel:22.4.2016 22:28

Dobre tedy, myslim, ze mam predstavu - po jednom to tam prece pridavat nebudes zejo, takze bych doporucil v phpcku nejdriv udelat asociativni pole, do ktereho nasekas vsechny adresy, polohy, nebo jak tomu rikas ... rozumis mi ... proste si udelas v nejakem tom svem cyklu zapis do phpckoveho pole. Neco jako:

$array = array(
  0 => array($ulice1, $x, $y),
  1 => array($ulice2, $x, $y)
);

Jde o to, ze tohle pole projedes json_encode

$out = json_encode($array);

a takhle to vyprintis do javascriptovyho zdrojaku do nejakyho svyho pole

var poleAdres=<?php echo $out; ?>;

Ted bys mel mit v poleAdres klasicky javascriptovy pole poli, muzes ho projet po indexu v cyklu atd ... prvni polozka vnitrniho pole bude treba nazev ulice, druha a treti souradnice ... ted uz by nemel byt problem pouzit cyklus a pracovat s datama... zkus to a rekni mi, nakolik nejsem phpckar a tohle jsem bastlil pomoci phpfidlu a jsfidlu tak si nejsem 100% jistej... ale rozhodne me zajima jestli to pobezi, pripadne co to bude kricet za chyby..

Nahoru Odpovědět
22.4.2016 22:28
Neaktivní uživatelský účet
Avatar
Filip
Člen
Avatar
Odpovídá na Neaktivní uživatel
Filip:23.4.2016 9:52

Jo super, diky. Pole v php jsem vytvoril

$pole=array('ulice' => $ulice, 'x' =>$x, 'y'=>$y);

pro kontrolu (stale v cyklu foreach)

$ar=$pole['ulice'];
$x=$pole['x'];
$y=$pole['y'];
echo $ar." ".$x." ".$y."<br>";

Vsechno se v poradku vypsalo, takze v php funguje! A uz jenom

$out = json_encode($pole);

Tady moje mysleni opet vynechava... Nevim, jak javascriptu vysvetlit, ze z prenesenym polem (nebo je to objekt?) chci pracovat. Kdyz pouziju tvoje

var poleAdres=<?php echo $out; ?>;

, a pak se snazim vyvolat hodnotu nejakeho pole, nefunguje... Zkousel jsem i

for (var vypis in poleAdres) ...

, to jsem to nedal dohromady. Nevim, jak k datum prenesenym z php pristoupit a nasledne s nema pracovat :(

 
Nahoru Odpovědět
23.4.2016 9:52
Avatar
Filip
Člen
Avatar
Odpovídá na Filip
Filip:23.4.2016 10:10

a jenom jeste... v javascriptu by asi melo bejt taky json_encode($out)?

var poloha=<?php echo  json_encode($out); ?>;
 
Nahoru Odpovědět
23.4.2016 10:10
Avatar
Odpovídá na Filip
Neaktivní uživatel:23.4.2016 11:51

Postupně, Filipe myslím, že jsi neudělal přesně to co jsem psal, důležité je to pole v phpcku dělat na indexy, koukni jak jsem to psal já a jak jsi ho postavil ty, tvarem se zásadně liší, proto se pak převádí na objekt, který není iterovatelný. Porovnej si tohle:

<?php
$one = 0;
$array = array(
  0 => array("ulice1", 43, 12),
  1 => array("ulice2", 23, 42)
);

$pole=array('ulice' => "Konvarkova", 'x' =>23, 'y'=>43);
$pole=array('ulice' => "Vesela", 'x' =>12, 'y'=>42);
echo json_encode($pole);
echo json_encode($array);
?>

tady: http://phpfiddle.org/ a uvidis ze tobe z toho vznikne objekt, kdezto me pole poli...na snadnou iteraci, na vyvolavani obsahu bez znalosti konkretnich nazvu ulic chces pole.

Editováno 23.4.2016 11:53
Nahoru Odpovědět
23.4.2016 11:51
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:23.4.2016 11:59

EDIT: (protoze limit na editaci je az prilis kratkej)
Dodatek ->

Ohledne JS, ty mu nemusis rikat vubec nic, on samozrejme chape, ze kdyz si neco ukladas do pole/objektu/pro­menne budes s tim pak chtit pracovat, jak pracovat, zalezi podle toho co si vyberes, zvol si pole poli, bude to bolet nejmin.

K tvemu druhemu dotazu, ne zadny json_encode znova, musis se poradne podivat, a uvidis ze $out je vystupem json_encode($array) ... znova to neencoduj, to pokazis ... nejsem machr na php, takze ti nepovim, jak do pole o tvaru, ktery jsem uvedl pridavat obsah ve foru, ale mam podezreni, ze kdyz se to asociuje na indexy, tak je to v podstate klasicky pole, takze pokud si nejsi jistej tim, jak na to, proste udelej pole, v for cyklu na tvejch datech do nej proste pridavej dalsi pole, ktery budou obsahovat jen tri hodnoty, nevaz nic na ulici jako jsi to udelal ted. Kdyztak se ozvi.

Nahoru Odpovědět
23.4.2016 11:59
Neaktivní uživatelský účet
Avatar
Filip
Člen
Avatar
Odpovídá na Neaktivní uživatel
Filip:23.4.2016 12:24

Myslim ze ted uz jsem pochopil co si mi chtel rict... Vyzkousim a pak dam vedet zatim diky

 
Nahoru Odpovědět
23.4.2016 12:24
Avatar
Filip
Člen
Avatar
Odpovídá na Neaktivní uživatel
Filip:23.4.2016 15:46

Tak jsem s tim stravil hromadu casu a nedam to dohromady... Jednak nevim, jak porovnat hodnoty, ktery se mi vratej z databaze s tim, co si ulozim v poli.A neumim pracovat v javascriptu s tema polema a uz jsem z toho tak zblblej ze tomu vubec nerozumim :D pouziju

$array=array(
0=>array("na padesatem",50.068385,14.507787),
1=>array("mezibranska",50.079519,14.430214),
2=>array("krizikova",50.09093,14.439565)
);
echo json_encode($array);
$out = json_encode($array);

php mi vypise
[["na padesatem",50­.068385,14.507787],["m­ezibranska",50­.079519,14.430214],["k­rizikova",50.09093,14­.439565]]
coz jsem pochopil jako ze v poli $array jsou ulozeny 3 dalsi pole (ulice,souradnice x, souradnice y)
ale co s tim dal vubec netusim.
Priklad v google mapach, jak se vkladaji nove pozice, je nasledujici:

var citymap = {
  chicago: {
    center: {lat: 41.878, lng: -87.629},
  },
  newyork: {
    center: {lat: 40.714, lng: -74.005},
  }

Ale jak dat misto pevnych hodnot promenne? Zkousel jsem to pres cyklus for ale bud jsem to nastavil spatne nebo je to spatne cely:

var poleAdres=<?php echo $out; ?>
for(i=0;i<poleAdres.length;i++)
{
misto:
{ center: {lat: poleAdres[i][1], lng: poleAdres[i][2] }
}
}
 
Nahoru Odpovědět
23.4.2016 15:46
Avatar
Odpovídá na Filip
Neaktivní uživatel:23.4.2016 16:00

Neee .. je to super ... dostal jsi se sam opravdu daleko ... jen ten zaver nebyl uplne jistej, ale to nevadi

var poleAdres=<?php echo $out; ?>
var cityMap = {};
for(i = 0; i < poleAdres.length; i++) {
        cityMap.poleAdres[i][0] : {center: {flat: poleAdres[i][1], lng: poleAdres[i][2]}}
}

Zkus tohle. Pokusil jsem se napodobit to cos ukazal v tom google map api... mas objekt cityMap a v nem jsou jendotlive property podle nazvu ulice, kazda ulice je tedy take objektem, obsahuje property center i to je objektem, obsahuje souradnice... dej vedet jak to nebezi/bezi

Nahoru Odpovědět
23.4.2016 16:00
Neaktivní uživatelský účet
Avatar
Odpovídá na Filip
Neaktivní uživatel:23.4.2016 16:08

Omlouvam se vloudila se mi tam chybka, takhle

var poleAdres=<?php echo $out; ?>
var cityMap = {};
for(i = 0; i < poleAdres.length; i++) {
        cityMap.poleAdres[i][0] = {center: {flat: poleAdres[i][1], lng: poleAdres[i][2]}}
}
Nahoru Odpovědět
23.4.2016 16:08
Neaktivní uživatelský účet
Avatar
Filip
Člen
Avatar
Odpovídá na Neaktivní uživatel
Filip:23.4.2016 19:05

napsal jsem to jak si radil, trochu upravil

var cityMap = {
for(i = 0; i < poleAdres.length; i++) {
        cityMap.poleAdres[i][0] = {center: {lat: poleAdres[i][1], lng: poleAdres[i][2]}, }
}

Nastal horsi problem... Hlasi mi to chybu:
Chyba: InvalidValueError: initMap is not a function
Pro inicializaci mapy mam kod hned pod timhle a kdyz mam pevne souradnice, vse funguje, jak ma, kdyz vlozim cyklus tak je to v haji.

function initMap() {
  // Create the map.
  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 4,
    center: {lat: 37.090, lng: -95.712},
    mapTypeId: google.maps.MapTypeId.TERRAIN
  });

Tomuhle vubec nerozumim

 
Nahoru Odpovědět
23.4.2016 19:05
Avatar
Odpovídá na Filip
Neaktivní uživatel:23.4.2016 19:20

Tak tohle ti snadno vysvetlim, tou tvou "upravou" jsi umistil cyklus do objektu, coz je jednak velkej nesmysl, druhak jsi ten objekt neuzavrel, takze pouzij presne to co jsem ti napsal v opravenem komentari. Jednak ti taky poradim jeden dulezitej krok -> kdyz mas nekde kod, ktery ti nekdo poradi, nebo ho najdes, nejdriv vyzkousej ten kos, kdyz bude fungovat upravuj si ho podle libosti, ale kdyz nebude budes mit aspon jistotu, ze ti to dotycnej poradil spatne. Pomohlo by to i me, vedel bych ted, jeslti je to v poradku, nebo ne. Zkus ten neupravenej ode me a napis.

BTW: chyba teda vzynikla proto, ze mas ve scriptu syntaktickou chybu... neuzavrenej objekt distribuuje svuj rozsah az do funkce atd...nemuzes ji pak zavolat, protoze se to zkratka cely zhroutilo. A jeste neco

cityMap.poleAdres[i][0] = {center: {lat: poleAdres[i][1], lng: poleAdres[i][2]}, }

ta carka mezi poslednima dvema zavorkama tam nema co delat... pravdepodobne ti to nic neudela ale strict mode te za to poradne zerve a nespusti ti to

Nahoru Odpovědět
23.4.2016 19:20
Neaktivní uživatelský účet
Avatar
Odpovídá na Filip
Neaktivní uživatel:23.4.2016 19:33

Tak jsem to trochu rozebiral a nasel jsem si jeste jeden nesmysl, ktery jsem ti poradil, doufam, ze me omluvis, pracuju pri tom na domacim ukolu a spatne se soustredim... takze takhle:

var poleAdres=<?php echo $out; ?>
var cityMap = {};
for(i = 0; i < poleAdres.length; i++) {
        cityMap[poleAdres[i][0]] = {center: {flat: poleAdres[i][1], lng: poleAdres[i][2]}}
}
Editováno 23.4.2016 19:34
Nahoru Odpovědět
23.4.2016 19:33
Neaktivní uživatelský účet
Avatar
Filip
Člen
Avatar
Odpovídá na Neaktivní uživatel
Filip:24.4.2016 8:29

Ja samozrejme zkusil nejdriv to, co si mi napsal, ale to nefungovalo, tak jsem zkousel ruzny dalsi varianty, jen jsem to tu zapomnel napsat. To se omlouvam. Nicmene ani ten kod, co si ted mi poradil, nechce fungovat, hlasi to zase tu stejnou chybu.
Kdyz smazu cely var cityMap (var cityMap+cyklus nebo pevne definovana mista primo ve skriptu), zahlasi mi to chybu, ze obekt cityMap neni definovan, ale mapa samotna se do stranky nacte. A po pridani cyklu to zahlasi Chyba: InvalidValueError: initMap is not a function a mapa se ani nenacte.

 
Nahoru Odpovědět
24.4.2016 8:29
Avatar
Filip
Člen
Avatar
Odpovídá na Filip
Filip:24.4.2016 10:15

zkousel jsem ten kod jeste projet na jslint.com a hlasi mi to unecpected "<" u var poleAdres. Nemuze to bejt treba jinej zapis, jak se to vklada? Jen me to napadlo...

Editováno 24.4.2016 10:16
 
Nahoru Odpovědět
24.4.2016 10:15
Avatar
Odpovídá na Filip
Neaktivní uživatel:24.4.2016 10:59

To je to phpcko co mu vadí, to neotestuješ. Podle mě pokud to říká že funkce pod tím není funkce, měl bys otestovat jestli všechno nad tím v pořádku funguje, takže pod ten for cyklus dej řádky

console.log(poleAdres);
console.log(cityMap);

Otestuj to v prohlížeči, otevření nástrojů pro debuging se provede F12 a pak klikni na console, konzole nebo tak... Po kliknuti na slovo object v konzoli, bys mel mít možnost si prohlídnout jestli to pole a ten objekt mají správný obsah a tvar, pokud je to tam ani nezobrazí a vypíše to třeba chybu, nebo ani tu ne ... Bude tam syntaktická chyba .... Pak kliknes místo na konzole v tom panelu na debuger, najdeš script a místo v něm, o kterém mluvíme a kouknes se jestli vypadá tak jak má, pokud si nebudeš jistej, zkopirujes celou tu část i s initmap funkcí (aspoň začátek) a pošleš mi to sem.

PS: za to, že to ti nefungovalo můžu já, nebyla to vůbec tvoje chyba, mě šlo jen o to, že jsem si nebyl jistý, jestli jsi to upravoval až po tom co to nefungovalo, nebo hned, teď je mi to jasný, tak v pohodě.

Editováno 24.4.2016 11:01
Nahoru Odpovědět
24.4.2016 10:59
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:24.4.2016 11:05

Jo ještě mě napadlo, ten první řádek console.log vlož ještě před ten for cyklus ten druhý dej pod for cyklus ...tak to bude vidět líp... Kdybys to třeba měl někde online tak bych se podíval, ale to asi nemáš co ?

Nahoru Odpovědět
24.4.2016 11:05
Neaktivní uživatelský účet
Avatar
Filip
Člen
Avatar
Filip:24.4.2016 11:41

Pridal jsem radky console a hodil to na starej web, adresa: top11.wz.cz
Vypsal jsem i zdrojaky do txt: /index.txt a /mapa_funkce.txt
index.php je stranka se skiptem, mapa_funkce.php jsou promenne v php.

 
Nahoru Odpovědět
24.4.2016 11:41
Avatar
Odpovídá na Filip
Neaktivní uživatel:24.4.2016 12:03

hele tak vypisy z chyb rikaji jasne :

var poleAdres=<?php echo $out; ?>

sem pridej strednik za to php inline

var poleAdres=<?php echo $out; ?>;

javascript potrebuje za prikazama strednik, pokud za nim nedas enter

pridej mi to i do toho webu abych se mohl dal divat

Editováno 24.4.2016 12:03
Nahoru Odpovědět
24.4.2016 12:03
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:24.4.2016 12:11

a rovnou zmen vsechny promenny cityMap, ktery mas takhle pojmenovany v souvislosti se mnou na citymap ... ta init funkce pocita s timhle nazvem, to mi asi nejak uniklo... informacni sum nebo co

Nahoru Odpovědět
24.4.2016 12:11
Neaktivní uživatelský účet
Avatar
Filip
Člen
Avatar
Odpovídá na Neaktivní uživatel
Filip:24.4.2016 12:31

tak jsem vse provedl a mapa se nacetla, mista se mi tam nezobrazujou. Hlasi to nejakou chybu* setCenter: not a LatLng or LatLngLiteral: in property lat: not a number*
je to tam aktualizovany vcetne zdr. kodu tak se muzes podivat, tohle jde opravdu mimo me :/

Editováno 24.4.2016 12:31
 
Nahoru Odpovědět
24.4.2016 12:31
Avatar
Odpovídá na Filip
Neaktivní uživatel:24.4.2016 12:32

rovnou mi tu zustan ...

Nahoru Odpovědět
24.4.2016 12:32
Neaktivní uživatelský účet
Avatar
Odpovídá na Filip
Neaktivní uživatel:24.4.2016 12:33

ode me tam mas misto lat napsano flat... nevim proc jsem to tak prepsal... vcera jsem byl hlavou nekde jinde..takze oprav to v tom cyklu... flat -> lat

ja to zkousim u sebe na kompu a cela mapa je cervena..

Editováno 24.4.2016 12:33
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
24.4.2016 12:33
Neaktivní uživatelský účet
Avatar
Filip
Člen
Avatar
Filip:24.4.2016 12:38

Joo byl tam nastavenej velkej radius... A opravdu to funguje! Mockrat diky ja bych tohle nikdy dohromady nedal ses genius 8-)

 
Nahoru Odpovědět
24.4.2016 12:38
Avatar
Odpovídá na Filip
Neaktivní uživatel:24.4.2016 12:57

:D ale jdi.... mel jsi nekolik velmi dobrejch tahu na branku a ja genialni jiste nejsem (ne ze bych nechtel :) ) nicmene me tesi, ze jsme se k vysledku zdarne dopracovali.

Nahoru Odpovědět
24.4.2016 12:57
Neaktivní uživatelský účet
Avatar
Filip
Člen
Avatar
Filip:24.4.2016 13:16

Za ten vysledek jsem taky rad. A Pro me si genius :D

 
Nahoru Odpovědět
24.4.2016 13:16
Avatar
Odpovídá na Filip
Neaktivní uživatel:24.4.2016 13:30

Dej tomu dva roky a budes i lepsi ;)

Nahoru Odpovědět
24.4.2016 13:30
Neaktivní uživatelský účet
Avatar
Filip
Člen
Avatar
Filip:24.4.2016 13:47

Je pravda, ze mam minimum zkusenosti. Ale chybama se clovek uci :) Jeste bych mozna potreboval radu, jestli budes vedet a mit cas, i kdyz se jedna o php. Potrebuju, aby se mi ty souradnice samy generovaly do toho skriptu. Z databaze pres cyklus foreach ziskam vsechny ulice odpovidajici dotazu, a ty ukladam do promenne $ulice. V cyklu foreach pak vlozim kod:

for ($i=0;$i<$limit;$i++) {
if ($ulice=="masarykovo nadr.") $array=array($i=>array($ulice.$i, 50.087755, 14.433556));
else if ($ulice=="florenc") $array=array($i=>array($ulice.$i, 50.090931, 14.439565));
}

Jeste v cyklu foreach dam

echo json_encode($array);

stranka vypise (obrazek) coz je v poradku. Jen nevim co znamena ta jednicka v uvozovkach a hlavne to do ty mapy nefunguje. Nevedel bys nahodou, co s tim?

 
Nahoru Odpovědět
24.4.2016 13:47
Avatar
Odpovídá na Filip
Neaktivní uživatel:24.4.2016 14:40

tohle je priklad, kterej jsem vydedukoval ... funguje to, tak to snad je spravne :

<?php
$array = array();
for($i = 0; $i < 10; $i++) {
        $array[$i] = array("ulice1".$i, 1+$i, 100+$i);
}
echo json_encode($array)
?>

Priklad ukazuje, ze nejdriv si vytvorim pole, pak vezmu for cyklus ... a podle indexu do polozek v tom poli pridavam vlastne jen dalsi pole (jsou to pole uvnitr velkeho pole) .. dovnitr cyklu si dej tu svoji podminku, netusim presne co ta podminka, kterou jsi ukazal ma delat, tak to necham asi na tobe... json_encode volej az nakonec (mimo cyklus), kdyz je cely pole hotovy, jinak si to rozbijes ... ja jsem jako ulice a souradnice pouzil jen testovaci data, abych videl, ze mi to pekne roste a jsou tam vsechna v poradku vlozena, ty si do toho nacpi co potrebujes, ale drz se systemu, ulice, souradnice, souradnice ... aby ti pak fungoval ten javascript... kdyz tohle pak encodnuty echnes do javascriptu a das si pozor abys za tim mel ten strednik (jak jsem rikal nahore) tak by to melo fungovat...

Nahoru Odpovědět
24.4.2016 14:40
Neaktivní uživatelský účet
Avatar
Filip
Člen
Avatar
Odpovídá na Neaktivní uživatel
Filip:24.4.2016 16:37

Jasne, tvuj for funguje... Ja jsem se ted dost zamotal, zkusim popsat postupne souvislosti:
Mam promennou $sql, ktera mi vraci vysledky z dotazu do databaze (jmena ulic z databaze). Pouziju

foreach ($sql as $n)
$ulice=$n[ulice] //priradim promennou ulice pro jednotlive polozky

Pro podminku for jsem si vytvoril $limit, coz je pocet vysledku (cislo) vracenych z databaze.
Dale potrebuju priradit jednotlivym promennym $ulice souradnice $x a $y. To resim nasledovne, i kdyz tady uz nevim, kam to soupnout (momentalne to mam v cyklu for, zkousel jsem i pred nej):

if ($ulice=="masarykovo nadr.") {$x=50.087755; $y=14.433556;}
else if ($ulice=="florenc") {$x=50.090931; $y=14.439565;}

a nasledne pouziju cyklus for pro ulozeni do poli:

for($i = 0; $i < $limit; $i++) {
$array[$i] = array($ulice.$i, $x, $y);
}

To vsechno se stale odehrava v cyklu foreach,kdyz cyklus for dam za foreach, vysledek je stejny.
Kdyz dam echo $ulice, vypise se florenc, masarykovo nadr., coz je v poradku (z databaze se vytahly spravne vysledky). Pak dam

echo json_encode($array);

a vyjede mi (obrazek). To znamena, ze zaznam masarykovo nadr. se do pole ulozil 2x a zaznam florenc ani jednou. Oboje prirazene souradnice samozrejme patri masarykove nadr. Vysledek ma byt 1:1.Chapu to, ze se do pole nacita pouze posledni nactena polozka z databaze, coz se opakuje ale neprojede mi to kazdou polozku ziskanou z databaze. Snad jsem to napsal aspon trosku srozumitelne :P

 
Nahoru Odpovědět
24.4.2016 16:37
Avatar
Odpovídá na Filip
Neaktivní uživatel:24.4.2016 16:53

myslim ze rozumim...takze jen pseudokodem:

poleProJavascript = new array();
iterovaciPromenna = 0;
foreach na sql { // tahle zavorka je dulezita, jestli ji tam nemas, asi by tam mela byt
$ulice=$n[ulice] //priradim promennou ulice pro jednotlive polozky // to je myslim v poradku
... // dalsi nejakej tvuj kod, predpokladam, ze limit musis spocitat uz pred foreachem
... // tvoje podminky
poleProJavascrip­t[iterovaciPro­menna] = array($ulice, $x, $y); // tady to .$i nemelo co delat, to bylo jen pro nas
} // konec foreache

tady json_encode pole

preved to peclive z tehle uvahy do kodu, kdyz to stale nebude delat co bys chtel tak sem hod kod v kompletni podobe (vsechno co muzes, presneji receno co je pro nas dulezite... stacita cast o ktere se bavime)

Nahoru Odpovědět
24.4.2016 16:53
Neaktivní uživatelský účet
Avatar
Filip
Člen
Avatar
Filip:24.4.2016 17:21

asi jsem te ted spravne nepochopil... Udelal jsem:

$array = array();
$i=0;
foreach ($sql as $n)
{
$ulice=$n[ulice]

if ($ulice=="masarykovo nadr.") {$x=50.087755; $y=14.433556;}
else if ($ulice=="florenc") {$x=50.090931; $y=14.439565;}

 $array[$i] = array($ulice, $x, $y);
}
echo json_encode($array); // vypise opet pouze [[masarykovo nadr., 50.087755, 14.433556]] - posledni nactenou polozku

$out = json_encode($array);

¨
takze v poli mam jen jeden udaj

 
Nahoru Odpovědět
24.4.2016 17:21
Avatar
Odpovídá na Filip
Neaktivní uživatel:24.4.2016 17:28

:) na konci cyklu, pred vlasatou zavorkou co ho uzavira musis icko inkrementovat $i++

Nahoru Odpovědět
24.4.2016 17:28
Neaktivní uživatelský účet
Avatar
Filip
Člen
Avatar
Filip:24.4.2016 17:35

joo to bylo ono super funguje to. Mockrat ti diky!

 
Nahoru Odpovědět
24.4.2016 17:35
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 37 zpráv z 37.