Autor | Zpráva | ||
---|---|---|---|
lukame Profil * |
#1 · Zasláno: 26. 2. 2016, 19:03:41
Zdravím,
prosím, potřebuji pomoct se syntaxí. Mám zdroj dat pro autocomplete, kde proměnné beru z php: var src = [{ "label": "<?php echo($e[1]); ?>", "value": "val1", "spz": "spz" }, { "label": "<?php echo($e[2]); ?>", "value": "val12", "spz": "spz2" }, { "label": "<?php echo($e[3]); ?>", "value": "val31", "spz": "spz3" }, { "label": "<?php echo($e[4]); ?>", "value": "val31", "spz": "spz3" }, { "label": "<?php echo($e[5]); ?>", "value": "val31", "spz": "spz3" }, ]; Potřeboval bych src naplnit pomocí cyklu. Něco jako: var src = [ for (i=1; i <= 5; i++) { { "label": "<?php echo($e[i]); ?>", "value": "val31", "spz": "spz3" }, { ]; Díky za radu. |
||
Kcko Profil |
#2 · Zasláno: 26. 2. 2016, 19:07:13
to se takhle nedělá. Strukturu si vytvoř jako zanořené pole a do JS objektu, který takhle ošklivě a hloupě plníš převedeš pomocí
json_encode
|
||
lukame Profil * |
#3 · Zasláno: 26. 2. 2016, 19:13:20
Díky, ale fakt nevím, o čem mluvíš :-). Možná kdybych věděl, tak se ani tak blbě neptám. řeším jen jednu jednoduchou, dílčí věc a nechce se mi do toho moc zabředávat. Je nějaké řešení, jak to podle mého ošklivě a hloupě naplnit? Nebo pisneš mi kód podle tvého? Díky
|
||
Kcko Profil |
<?php $src = array( array("label" => "AAA", "value" => "BBB", "spz" => "CCC"), array("label" => "XXX", "value" => "ZZZ", "spz" => "YYY"), ); print_r(json_encode($src)); Ten cyklus, resp naplnění pole v PHPku jak potřebuješ už zvládneš ne? |
||
lukame Profil * |
#5 · Zasláno: 26. 2. 2016, 19:33:59
Jo, to zvládnu. Vyzkouším.
|
||
lukame Profil * |
#6 · Zasláno: 28. 2. 2016, 10:02:41
Hm... tak se mi to nepodařilo. Jak mám to vnořené pole vytvořit cyklem? Pořád se mi nedaří poskládat správně tu syntaxi.
|
||
Alphard Profil |
Tohle vlákno později zřejmě přesunu do PHP, ten cyklus musí být napsaný v něm, ten návrh v [#1] lukame nemůže fungovat ani přibližně.
$data = []; // definice nového prázdného pole for ($i = 1; $i <= 5; $i++) { // váš cyklus, ale v PHP $data[] = [ // přidání nového zanořeného pole na konec pole $data 'label' => $e[$i], 'value' => 'val'.$i, 'spz' => 'spz', ]; } echo json_encode($data); // vyexportování připravené datové struktury do JSON, který lze snadno použít v javascriptu Opraven překlep, chyběl $ v názvu proměnné.
|
||
lukame Profil * |
#8 · Zasláno: 28. 2. 2016, 10:59:43
Díky, ale nechápu, co mi to dělá. Např. do label: se mi nedaří načíst proměnnou z pole. KOnkrétně tedy
'label' => $e[i], nefunguje vůbec. K "i" jsem přidal $: 'label' => $e[$ii], , také to nefunguje. Přitom, když zadám přímo třeba 2, tak mi to druhý prvek pole normálně do label zapíše. Nechápu to.
|
||
Alphard Profil |
#9 · Zasláno: 28. 2. 2016, 11:16:12
Má tam být
$i , to byl překlep. Dám sem ještě verzi doplněnou o zdrojové pole, tohle si můžete spustit a mělo by to fungovat, ale zbytek už nechám na vás. Upozorňuji ještě na změnu $i = 0 , PHP indexuje od 0 .
$letters = range('A', 'E'); // jen pro testování, vytvoří pole ['A', 'B', 'C', 'D', 'E'] $data = []; // definice nového prázdného pole for ($i = 0; $i < 5; $i++) { // váš cyklus, ale v PHP $data[] = [ // přidání nového zanořeného pole na konec pole $data 'label' => $letters[$i], 'value' => 'val'.$i, 'spz' => 'spz', ]; } echo json_encode($data); // vyexportování připravené datové struktury do JSON, který lze snadno použít v javascriptu |
||
lukame Profil * |
OK, příklad funguje. U mě je to však pořád nulové. Asi to bude tím, jak vytvářím pole.
$t=1; $sql_t = dibi::query('SELECT * FROM [tabulka]'); while ($zaznam_=$sql_t->fetch(TRUE)) { $sql_prijmeni[$t]=$zaznam_["prijmeni"]; $t++; } endif; A toto: 'label' => $sql_prijmeni[$i] mi už nefunguje.Takže ještě jinak. Pole se normálně naplní v pořádku Ale pak mi: print_r($data); vypíše pole, ale
print_r(json_encode($data)); nevypíše nic. A proto mi nefunguje :
$("#name").autocomplete({ source: <?php print_r(json_encode($data)); ?> , select: function (event, ui) { event.preventDefault(); /*this.value = ui.item.label;*/ $("#name").val(ui.item.label); $("#value").val(ui.item.value); $("#spz").val(ui.item.spz); }, minLength: 2 }); 8Aha.... json_encode funguje jen s utf8. Takže pomohlo mysql_query('SET NAMES utf8'); |
||
Časová prodleva: 9 let
|
0