Avatar billede wolstrup Nybegynder
27. januar 2007 - 18:42 Der er 14 kommentarer og
1 løsning

Arrays i arrays

Hvordan laver jeg arrays som disse udfra mysql?

$transports = array(
  'air'=>array('plane','helicopter','air-baloon'),
  'water'=>array('boat','watersky','submarine'),
  'land'=>array('motorcycle','car')
);

Har en tabel med nogle kategorier, ligeledes en tabel med under kategorier, vil så gerne lave en samlet array med kategorier og deres tilhørende underkategorier, har prøvet noget lignende dette:

$kategorier = mysql_query("select * from skabelon_kategori");
while ($kategori = mysql_fetch_array($kategorier)){

$underkategorier = mysql_query("select * from skabelon_underkategori WHERE kategori = '$kategori[id]'");
while ($underkategori = mysql_fetch_array($$underkategorier)){
$underkategorierne[] = $underkategori['navn'];
}
$samletarray[] = $kategori['navn'] => $underkategorierne;
}
Avatar billede Slettet bruger
27. januar 2007 - 19:34 #1
Først så kan du print dem ud med funktionen print_r($samletarray);
men det kommer til at se sjusket ud, men hvis du derimod tilføjer <pre> tagget omkring ser der pænt ud.

print "<pre>";
print_r($samletarray);
print "</pre>";
Avatar billede Slettet bruger
27. januar 2007 - 19:38 #2
jeg er lidt usikker på hvordan du vil have det...
Avatar billede showsource Seniormester
27. januar 2007 - 19:50 #3
Måske

$kategorier = mysql_query("select * from skabelon_kategori");

$start = array();

while ($kategori = mysql_fetch_array($kategorier)){

$start[$kategori["id"]] = array();

$underkategorier = mysql_query("select * from skabelon_underkategori WHERE kategori = '$kategori[id]'");
    while ($underkategori = mysql_fetch_array($$underkategorier)){

    array_push($start[$kategori["id"], $underkategori["navn"]);

    }
}

echo"<pre>";
print_r($kategori);
echo"</pre>";
Avatar billede showsource Seniormester
27. januar 2007 - 19:54 #4
Well, :O(

echo"<pre>";
print_r($start);
echo"</pre>";
Avatar billede wolstrup Nybegynder
27. januar 2007 - 20:05 #5
Får denne fejl: Parse error: syntax error, unexpected ',', expecting ']'
Avatar billede showsource Seniormester
27. januar 2007 - 20:08 #6
to ting nok:

    while ($underkategori = mysql_fetch_array($$underkategorier)){

skal være

    while ($underkategori = mysql_fetch_array($underkategorier)){

og

array_push($start[$kategori["id"], $underkategori["navn"]);

skal være

array_push($start[$kategori["id"]], $underkategori["navn"]);
Avatar billede wolstrup Nybegynder
27. januar 2007 - 20:30 #7
Det virker, men har et lille problem.. Hvis mine kategorier indeholder æ,ø eller å kommer der en fejl.. Hvis jeg bruger:

Æ = &AElig; æ = &aelig;
Ø = &Oslash; ø = &oslash;
Å = &Aring; å = &aring;

Virker scriptet som det skal, men i selcetboksene laver den ikke f.eks. &aelig om til æ?
Avatar billede showsource Seniormester
28. januar 2007 - 06:18 #8
echo"<option value='". htmlspecialchars($kategorier[0][0]) ."'>". htmlentities($kategorier[0][0]) ."</option>";
Avatar billede wolstrup Nybegynder
29. januar 2007 - 11:19 #9
Skriptet virker 100% nu, men navnene i mine sropdowns vises stadig ikke med æøå:

<?
include '../db/db.php';

require_once('xajax.inc.php');
class myXajaxResponse extends xajaxResponse  {
  function addCreateOptions($sSelectId, $options) {
    $this->addScript("document.getElementById('".$sSelectId."').length=1");
    if (sizeof($options) >0) {
      foreach ($options as $option) {
        $this->addScript("addOption('".$sSelectId."','".$option."','".$option."');");
      }
    }
  }
}
?>
<?
$kategorier = mysql_query("select * from skabelon_kategori");
while ($kategori = mysql_fetch_array($kategorier)){
$kategorierne[] = htmlentities($kategori['navn']);
}

$mode = $kategorierne;



$kategorier2 = mysql_query("select * from skabelon_kategori");

$transports = array();

while ($kategori2 = mysql_fetch_array($kategorier2)){

$start[$kategori2["navn"]] = array();

$underkategorier = mysql_query("select * from skabelon_underkategori WHERE kategori = '$kategori2[id]'");
    while ($underkategori = mysql_fetch_array($underkategorier)){
array_push($start[$kategori2["navn"]], $underkategori["navn"]);

    }
}


$transports = $start;



$kategorier2 = mysql_query("select * from skabelon_underkategori");

$brands = array();

while ($kategori2 = mysql_fetch_array($kategorier2)){

$start2[$kategori2["navn"]] = array();

$underkategorier2 = mysql_query("select * from skabelon_subkategori WHERE kategori = '$kategori2[id]'");
    while ($underkategori2 = mysql_fetch_array($underkategorier2)){
array_push($start2[$kategori2["navn"]], $underkategori2["navn"]);

    }
}

$brands = $start2;


$xajax = new xajax();
//$xajax->debugOn();

// adds an option to the select
function addTransports($selectId, $mode) {
  global $transports;
  $objResponse = new myXajaxResponse();
  $data = $transports[$mode];
  $objResponse->addCreateOptions($selectId, $data);
  return $objResponse->getXML();
}
function addBrands($selectId, $transport) {
  global $brands;
  $objResponse = new myXajaxResponse();
  $data = $brands[$transport];
  $objResponse->addCreateOptions($selectId, $data);
  return $objResponse->getXML();
}
$xajax->registerFunction("addTransports");
$xajax->registerFunction("addBrands");
$xajax->processRequests();
?>
<?
if (isset($_POST['Submit'])) {
  print_r($_POST);
}
?>
<html>
<head>
<title>AJAX Dynamic Drop Down Tutorial</title>
<?
$xajax->printJavascript();
?>
<script type="text/javascript">
  function addOption(selectId, val, txt) {
    var objOption = new Option(txt, val);
    document.getElementById(selectId).options.add(objOption);
  }
</script>
</head>
<body>
<form name="form1" method="POST" action="">
Type :
<select name="type" id="type" onchange="xajax_addTransports('transports', document.form1.type.value)">
  <option value="">--select--</option>
  <? foreach ($mode as $mod) { ?>
  <option value="<?= $mod?>"><?=$mod?></option>
  <? } ?>
</select>
Transportation :
<select name="transports" id="transports" onchange="xajax_addBrands('brands', document.form1.transports.value)"><option value="">--select--</option>
</select>
Brands :
<select name="brands" id="brands"><option value="">--select--</option>
</select>
<input type="submit" value="Submit" name="Submit" id="Submit">
</form>
</body>
</html>
Avatar billede showsource Seniormester
29. januar 2007 - 13:01 #10
Har du en header content type?
Har du prøvet:

<option value="<?=htmlspecialchars($mod)?>"><?=htmlentities($mod)?></option>
Avatar billede windcape Praktikant
29. januar 2007 - 13:07 #11
short_tags are evil!

<?php istedet for <?

<?php echo, istedet for <?= , tak.
Avatar billede wolstrup Nybegynder
29. januar 2007 - 13:30 #12
Det ændre ikke rigtig noget... Mine kategorier ligger i db med &aelig; osv??
Avatar billede wolstrup Nybegynder
31. januar 2007 - 08:27 #13
Fik det ikke til at virke men showsource smid et svar for din indsats.
Avatar billede showsource Seniormester
31. januar 2007 - 08:49 #14
Ingen point her, ellers tak.

Men hvorfor gemme htmlkoden i din DB?
Det er bedre først at bruge html ved udtræk. Fylder mindre i DB.

Ved ikke om det evt. er her "hunden er begravet" ??? ( blandet med det ajax-halløj ) ???
Avatar billede wolstrup Nybegynder
31. januar 2007 - 08:54 #15
Droppede det også, slettede det hele og begyndte forfra med udgangspunkt i et andet ajaxscript som jeg fandt.
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