| 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 javascriptuOpraven 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: 10 let
|
|||
0