Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][js] - Przekazania tablicy z php do JS
Forum PHP.pl > Forum > Przedszkole
ferrero2
Witam, mam pewien problem z przekazaniem tablicy, pobranej z bazy MySQL do zmiennej PHP, do zmiennej JS.
Próbowałem już naprawdę mnóstwa eksperymentów, różnych głupich nawet, testowałem co mi przyszło do głowy nie patrząc nawet na to, że to działa po stronie serwera a to po stronie przeglądarki.
Od razu zaznaczam że nie chce korzystać z json lub XML.
O co mi chodzi.
1. Ładuje się strona (wykonuje się kwerenda która pobiera sobie dane do zmiennej $result)
2. Jako że jest to Tabela Asocjacyjna to chyba dużym problemem będzie przepisanie jej do JS więc zrobiłem coś takiego :
  1. $sql="SELECT raport FROM spis.raporty";
  2. $result=mssql_query($sql,$conn);
  3. $numrows=mssql_num_rows($result);
  4. while($result and $row=mssql_fetch_array($result))
  5. {
  6. $tablica[] = $row[0];
  7. }

Przepisałem sobie nazwy raportów do zwykłej tabeli jednowymiarowej.
3. Teraz mam funkcję w JS która podmienia mi wartości w selectach bez przeładowania strony, ale działa ona na tablicach JS a nie na danych pobieranych z bazy.
Kod
function zamiana(wybor)
{
var jeden = new Array;
if (wybor == "Programowanie") {
var dlugosc = jeden.length-1;
document.szukajka.elements.drugi.options.length = jeden.length;
for (var i=0; i<= dlugosc; i++) {
document.szukajka.drugi.options[i] = new Option(jeden[i]);
document.szukajka.drugi.options[i].value = jeden[i];
}


Nie używając ajaxa do łączenia się z bazą, chcę te dane które mam w $tablica[] przypisać do tabeli
"jeden"

Próbowałem już tak :
Kod
var jeden = new Array(<?php echo $tablica; ?>);


lub
Kod
var jeden = new Array($tablica);


lub

Kod
<?php echo 'var jeden = new Array('.$tablica.')';


Narazie najlepsze co udało mi się osiągnąć to zrobienie czegoś takiego co powoduje wyświetlenie pierwszej wartości w tabeli 16 razy.

Kod
$sql="SELECT raport FROM spis.raporty";
$result=mssql_query($sql,$conn);
$numrows=mssql_num_rows($result);
$i = 0;
while($result and $row=mssql_fetch_array($result))
{
$tablica[] = $row[0];
}
?>
<script language = "javascript">
<!--
function zamiana(wybor)
{
var jeden = new Array;
var  dwa = new Array;
for (var i=0; i<= <?php echo $numrows; ?>; i++) {
<?php $i++;?>   ( TUTAJ NIE CHCE ZWIĘKSZAĆ WARTOŚCI questionmark.gif)
jeden[i] = "<?php echo $tablica[$i]; ?>";
}
if (wybor == "Programowanie") {
var dlugosc = jeden.length-1;
document.szukajka.elements.drugi.options.length = jeden.length;
for (var i=0; i<= dlugosc; i++) {
document.szukajka.drugi.options[i] = new Option(jeden[i]);
document.szukajka.drugi.options[i].value = jeden[i];
}
}
}
-->
</script>


Proszę o pomoc, zwykłe przepisanie jednej kolumny z bazy z php do tabeli w JS questionmark.gif Czy to naprawdę wymaga takiego główkowania, może jest coś prostego questionmark.gif

Pozdrawiam






Podbijam temat, bo zniknął z pierwszej strony (pewnie nie chciało się Wam czytać moich wypocin)
Pytanie krótkie :
Tak mogę przypisać sobie zmienną
  1. <script type="text/javascript">
  2. var zmienna= <?php echo $zmienna; ?>
  3. </script>


a jak analogicznie mogę przypisać tablicę questionmark.gif
Robiąc tak :
var jeden New Array ("<?php echo $tablica; ?>");
Dostaje informację "Array", odwołując się do indeksu (nie mogę podstawić zmiennej sterującej z JS questionmark.gif
Fifi209
Nie chcę używać JSON lub XML, gdyż?

Możesz spróbować zserializować tablicę w php i wykonać coś odwrotnego w JS. (z tym, że nie wiem czy coś takiego jest w JS)
ew. napiszesz funkcję w PHP, która utworzy tablicę w JS - bo to troszkę inna składnia jednak.
ferrero2
Gdyż uważam, że jest to zbyt dużo roboty dla małego fragmentu aplikacji.
Znasz prosty sposób przepisania takiej tablicy za pomocą XML lub JSON questionmark.gif
Jakiś link / skrypt questionmark.gif
Fifi209
Jak zamienić tablicę na JSON?

W PHP:
json_encode

A w Javascript już możesz na tym operować z tego co pamiętam. smile.gif
Scalak
może to Ci pomoże:
  1. <?
  2. $zmienna=Array('ala','ma','kota');
  3. print "<script type=\"text/javascript\">";
  4. print "var zmienna=new Array()\n";
  5. foreach($zmienna as $tym) print "zmienna.push('$tym')\n";
  6.  
  7. print "alert(zmienna)";
  8. print "</script>";
  9. ?>
ferrero2
Zajebiście Scalak, o to mie sie rozchodzi tongue.gif.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.