Avatar billede yezbarh Nybegynder
06. oktober 2005 - 20:05 Der er 13 kommentarer og
1 løsning

Lave et array i Javascript

Hejsa.
Hvordan henter jeg alt fra en database og probber i en array?
fx.
<script>
enArray = array('noget','noget');
</script>

Man kan jo ikke bare lave en while, fordi så vil den ikke slutte med ' og ', eller lave ",".

Men en der kan hjælpe? :)

- På forhånd tak.
---yezbarh
Avatar billede pidgeot Nybegynder
06. oktober 2005 - 20:13 #1
Det kan du da få den til:

<script>
enArray = array( <?PHP
while ($row=mysql_fetch_array($query))
{
  echo("'" . $row[0] . "', '" . $row[1] . "'");
}
?>);
</script>

Naturligvis skal du selv sørge for at rette det nødvendige til, same at huske at foretage din query.
Avatar billede pidgeot Nybegynder
06. oktober 2005 - 20:17 #2
Følgende ville egentlig nok være bedre:

$firstrun=true;
while ($row=mysql_fetch_array($query))
{
  if ($firstrun==false)
    echo(',');
  else
    $firstrun=false;
  for ($i=0;$i<count($row);$i++)
  {
    echo("'" . $row[$i] . "');
    if ($i!=count($row)-1)
      echo(',');
  }
}

Du skal i øvrigt måske tage højde for evt. apostroffer i din database, kan ikke lige huske hvordan JavaScript kræver den slags...
Avatar billede yezbarh Nybegynder
06. oktober 2005 - 20:31 #3
Hos mig udskriver den intet, selvom jeg har rettet databaserne osv til.
Tror altså der ligger en fejl.
Og hvorfor har du lavet $row[$i] ? - og hvad gør den? :)

På forhånd tak.
---yezbarh.
Avatar billede yezbarh Nybegynder
06. oktober 2005 - 20:32 #4
Mener, hvad gør:
for ($i=0;$i<count($row);$i++)
Avatar billede pidgeot Nybegynder
06. oktober 2005 - 20:40 #5
Den itererer ganske enkelt over felterne i den enkelte række. Jeg har valgt at bruge en for i stedet for en foreach, da jeg så kan være sikker på jeg får mine kommaer til at passe.

Hvis dine feltnavne altid er kendt på forhånd, kan du naturligvis blot skrive dem direkte med et tilsvarende princip.

Må dog nok pointere at min kode nok ikke er det du i realiteten vil have - det der sker her er at hele databasen lægges over i et stort et-dimensionelt array, hvilket var sådan jeg tolkede dit spørgsmål. Præcis hvordan du bør gøre dette afhænger af hvad du helt præcist vil have.
Avatar billede yezbarh Nybegynder
06. oktober 2005 - 20:47 #6
Har lavet noget helt andet, og tror måske det virker godt nok.
<?php

print "<script>\n";
print "admins = new Array(); \n";
$q = mysql_query("SELECT * FROM users WHERE navn = 'Hej' AND TYPE = 'coAdmins'");
while ($row = mysql_fetch_array($q))
{
print "admins[$row[username]] = $row[username]; \n ";
}
print "</script>";

?>

-- ser der ikke rigtigt ud?
får et godt nok udtræk!

Smid lige svar, så kan du få dine point for din fine indsats !-)
Avatar billede pidgeot Nybegynder
06. oktober 2005 - 20:51 #7
Har selv den holdning at hvis man får det rigtige resultat, så må det jo være rigtigt ^_~
Avatar billede fixxxer Nybegynder
06. oktober 2005 - 22:20 #8
while ($row=mysql_fetch_array($query))
{
  $noget[]  = "'".$row['data']."'";
}

$js = 'array('.implode(',', $noget).');';

Det er bare såårh meget nemmere ;)
Avatar billede yezbarh Nybegynder
07. oktober 2005 - 10:05 #9
Tjaah, fixxxer. Men mit virkede fint nok selv !o]
Ellers tak :-)
Avatar billede fixxxer Nybegynder
07. oktober 2005 - 17:22 #10
Det var nu mest henvendt til pidgeot's kommentar d. 06/10-2005 20:51:15
Avatar billede olebole Juniormester
07. oktober 2005 - 21:04 #11
<ole>

fixxxer >> kan vi herudaf så konkludere, at da dit ikke fungerer, må det være derfor være forkert?  ;o)

/mvh
</bole>
Avatar billede olebole Juniormester
07. oktober 2005 - 21:09 #12
$noget = array();
while ($row=mysql_fetch_assoc($query)) {
  $noget[]  = "'".$row['data']."'";
}

$js = 'new Array('.implode(',', $noget).');';

Fejlen lå i første og sidste linje - og så er der i øvrigt ingen grund til at hente et arry fra MySQL, der både er tal-indekseret og associativt, når vi kun bruger det associative  :)

- men _så_ er det til gengæld meget nemmere  :)
Avatar billede fixxxer Nybegynder
07. oktober 2005 - 21:50 #13
Det er korrekt olebole..
Avatar billede olebole Juniormester
08. oktober 2005 - 01:42 #14
- at pushe til et array, der ikke er erklæret - og at erklære et array i det forkerte sprogs korrekte syntaks, når man hopper mellem PHP og JS ... *gaaaaab* hvor er jeg dog træt af at begå de fejl  ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester