Avatar billede hmm10 Nybegynder
27. april 2003 - 11:21 Der er 18 kommentarer og
1 løsning

dynamisk menu PHP/Javascript

Hej.

Jeg har et problem i min document.write() med noget self.status. Scriptet virker umeldbart, men den viser ingen tegn på at self.status reagere. Hvad gør jeg galt?


- - - -

  $menu2 = mysql_query("SELECT * FROM `menu_1` WHERE `under` = '' AND `type` = 'over' ORDER BY id");
    while($m2 = mysql_fetch_array($menu2)) {
      echo '
    document.write("<DIV id=menu' . $m2[id] .' class=menu>';

          $menu3 = mysql_query("SELECT * FROM `menu_1` WHERE `under` = '$m2[id]' AND `type` = 'under' ORDER BY id");
            while($m3 = mysql_fetch_array($menu3)) {
              echo '<a title=' . $m3[name] . ' href=?id=' . $m3[href] . ' onmouseover=self.status=\'' . $m3[name] . '\';return true; onmouseout=self.status=\'\';return true;>' . $m3[name] . '</a><br />';
          };

      echo '</DIV>");';
  };

- - - -
Avatar billede hmm10 Nybegynder
27. april 2003 - 11:33 #1
Jeg har nok valgt en dum overskrift på mit spørgsmål.

Jeg søger IKKE en dynamisk menu i PHP og Javascript :) - Jeg har problemer med PHP og Javascript i en dynamisk menu..
Avatar billede Slettet bruger
27. april 2003 - 11:49 #2
echo '<a title="' . $m3[name] . '" href="?id=' . $m3[href] . '" onmouseover="self.status=\'' . $m3[name] . '\';return true;" onmouseout="self.status=\'\';return true;">' . $m3[name] . '</a><br />';

Så kommer det endda til at se pænt ud! :)
Avatar billede olebole Juniormester
27. april 2003 - 11:51 #3
<ole>

Du bør i hvert fald sørge for nogle gåseøjne i dit link-tag. Både din href og dine mouse-event-hhandlers skal være udstyret med gåseøjne.

Hvad skriver dit script, hvis du kikker i sidens kildekode (i browseren)?

/mvh
</bole>
Avatar billede olebole Juniormester
27. april 2003 - 11:53 #4
Nej, phoenixv ... ikke hvis det skal stå i en dokument.write()  :)
/mvh
Avatar billede hmm10 Nybegynder
27. april 2003 - 12:05 #5
Broseren skriver dette:

onmouseout=self.status='';return true;>Web-pakker</a><br /><a title=test href=?id= onmouseover=self.status='test';return true; onmouseout=self.status='';return true;>test</a><br /></DIV>");
Avatar billede olebole Juniormester
27. april 2003 - 12:11 #6
.... og hele din document.write(), tak?  :)
Avatar billede hmm10 Nybegynder
27. april 2003 - 12:12 #7
Jeg fik ikke det hele med, så det kommer der her:

document.write("<DIV id=menu2 class=menu><a title=Web-pakker href=?id=8 onmouseover=self.status='Web-pakker';return true; onmouseout=self.status='';return true;>Web-pakker</a><br /><a title=test href=?id= onmouseover=self.status='test';return true;
Avatar billede hmm10 Nybegynder
27. april 2003 - 12:12 #8
HMM!

document.write("<DIV id=menu2 class=menu><a title=Web-pakker href=?id=8 onmouseover=self.status='Web-pakker';return true; onmouseout=self.status='';return true;>Web-pakker</a><br /><a title=test href=?id= onmouseover=self.status='test';return true; onmouseout=self.status='';return true;>test</a><br /></DIV>");
Avatar billede olebole Juniormester
27. april 2003 - 12:20 #9
Denne her indeholder åbenbart intet: $m3[href]
Avatar billede hmm10 Nybegynder
27. april 2003 - 12:21 #10
jo. href=?id=8 for "webpakker". href=?id= for "test".
Avatar billede hmm10 Nybegynder
27. april 2003 - 12:23 #11
Altså:
$m3[href] (for webpakker) = '8'
$m3[href] (for test) = ''
Avatar billede olebole Juniormester
27. april 2003 - 12:28 #12
Prøv:

$menu2 = mysql_query("SELECT * FROM `menu_1` WHERE `under` = '' AND `type` = 'over' ORDER BY id");
while($m2 = mysql_fetch_array($menu2)) {
    $str = 'document.write("<DIV id=\"menu' . $m2[id] .'\" class=\"menu\">';
    $menu3 = mysql_query("SELECT * FROM `menu_1` WHERE `under` = '$m2[id]' AND `type` = 'under' ORDER BY id");
    while($m3 = mysql_fetch_array($menu3)) {
        $str .= '<a title=\"' . $m3[name] . '\" href=\"?id=' . $m3[href] . '\" onmouseover=\"self.status=\'' . $m3[name] . '\';return true;\"';
        $str .= ' onmouseout=\"self.status=\'\';return true;\">' . $m3[name] . '</a><br />';
    }
    $str .= '</DIV>");';
}

echo $str;
Avatar billede olebole Juniormester
27. april 2003 - 12:30 #13
Det er _meget_ vigtigt at sætte gåseøjne om visse attributter. Er man i tvivl om hvilke, bør man _altid_ sætte dem  ;o)
Avatar billede hmm10 Nybegynder
27. april 2003 - 12:34 #14
Den melder mange javascript-fejl. Browseren skriver kun en forkomst:

{document.write("<DIV id=\"menu10\" class=\"menu\"></DIV>");
Avatar billede olebole Juniormester
27. april 2003 - 12:37 #15
Sorry  :)

$menu2 = mysql_query("SELECT * FROM `menu_1` WHERE `under` = '' AND `type` = 'over' ORDER BY id");
while($m2 = mysql_fetch_array($menu2)) {
    $str .= 'document.write("<DIV id=\"menu' . $m2[id] .'\" class=\"menu\">';
    $menu3 = mysql_query("SELECT * FROM `menu_1` WHERE `under` = '$m2[id]' AND `type` = 'under' ORDER BY id");
    while($m3 = mysql_fetch_array($menu3)) {
        $str .= '<a title=\"' . $m3[name] . '\" href=\"?id=' . $m3[href] . '\" onmouseover=\"self.status=\'' . $m3[name] . '\';return true;\"';
        $str .= ' onmouseout=\"self.status=\'\';return true;\">' . $m3[name] . '</a><br />';
    }
    $str .= '</DIV>");';
}

echo $str;
Avatar billede Slettet bruger
27. april 2003 - 12:40 #16
Hov, jeg havde lige overset, det var en document.write! :)(
Avatar billede hmm10 Nybegynder
27. april 2003 - 12:43 #17
jammen dog, dejligt ;) - Det virker jo. Hvad skal jeg evt. skrive, hvis jeg kun ønsker, at den skal vise en $m3 forkomst, hvis den findes? Lige nu får jeg en firkant unden noget.. kunne godt se ud som at den indeholdte en <br>..
Avatar billede hmm10 Nybegynder
27. april 2003 - 12:47 #18
phoenixv >> ja, det er det jo ;)
Det er ligegyldigt olebole. Læg et svar..
Avatar billede olebole Juniormester
27. april 2003 - 14:05 #19
swaaaar  :)
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