Avatar billede kwanstudios Nybegynder
28. juni 2003 - 00:10 Der er 24 kommentarer og
1 løsning

Javascript undermenu i PHP og MySQL

Jeg fik af venlige "ahv" hjælp til at udbygge min menu ved hans svar i http://www.eksperten.dk/spm/370071

Jeg ønsker nu at få den integreret i mit site;

Den skal jo af PHP fodres med nogle tal og lidt data.. min menu er indtil videre opbygget således:

"Over"menuen hentes i en tabel ved navn "cms" og fremvises sådan:

<?php
$i = 1;
$query = mysql_query("SELECT id, navn FROM cms") or die(mysql_error());
$antal = mysql_num_rows($query);   
while ($row = mysql_fetch_array($query)) {
    if (isset($_GET['id']) && $_GET['id'] == $row['id']) {
        echo " <a href='".$_SERVER['PHP_SELF']."?id=$row[id]' class='menu' style='color: #DE3806;'>".stripslashes(htmlentities($row['navn']))."</a>";
    } else {
        echo " <a href='".$_SERVER['PHP_SELF']."?id=$row[id]' class='menu'>".stripslashes(htmlentities($row['navn']))."</a>";
    }
    if ($i < $antal) {
        echo '<span style="font-weight: normal"> &nbsp;|&nbsp;</span>';
    }
    $i++;
}
?>

ligeledes hentes undermenuerne i cmsSub, men nu skal den jo hente alle for at kunne vise dem alle..

Undermenuen vises sådan:

<?php
$i = 1;
$query = mysql_query("SELECT id, navn FROM cmsSub WHERE refID = $id") or die(mysql_error());
$antal = mysql_num_rows($query);   
while ($rowSub = mysql_fetch_array($query)) {
    if (isset($_GET['sub']) && $_GET['sub'] == $rowSub['id']) {
        echo " <a href='".$_SERVER['PHP_SELF']."?id=".$id."&sub=".$rowSub[id]."' class='menuSub' style='color: #566164;'>".stripslashes(htmlentities($rowSub['navn']))."</a>";
    } else {
        echo " <a href='".$_SERVER['PHP_SELF']."?id=".$id."&sub=".$rowSub[id]."' class='menuSub'>".stripslashes(htmlentities($rowSub['navn']))."</a>";
    }
    if ($i < $antal) {
        echo '<span style="font-weight: normal"> &nbsp;|&nbsp;</span>';
    }
    $i++;
}
?>

Jeg ønsker at en af jer friske fyre lige smider hans script ind i mit php, så det kan virke.. nu har jeg også brugt mine sidste point herinde :)
Avatar billede tipsen Nybegynder
28. juni 2003 - 00:57 #1
Var det ikke nemmere bare at lære lidt af det dér PHP - når du nu alligevel bruger det så meget ;-)
Avatar billede kwanstudios Nybegynder
28. juni 2003 - 01:02 #2
heh.. bruger det ikke i hverdagen som kreativ chef, så nej tak.. sidder og arbejder på bureauets eget website, så det er et one-time job der bare skal laves så det virker :)
Avatar billede kwanstudios Nybegynder
28. juni 2003 - 01:03 #3
..og havde håbet der var et bare friske (og flinke) natteravne herinde til at hjælpe :)
Avatar billede roenving Novice
28. juni 2003 - 03:15 #4
-- hov det ser ud til at du mangler en medarbejder, som kan programmere ?-)

-- jeg kan nada php, men kan sagtens klare f.eks. dette problem !-)
Avatar billede kwanstudios Nybegynder
28. juni 2003 - 11:17 #5
Vi har diskuteret hvorvidt vi skulle ansætte en programmør, men vores opgaver er ikke kun webbaserede (da vi er et reklamebureau) så den ide blev erstattet af at vi nu har et par freelancere vi kan trække på.. men løs dette problem og så skal jeg overveje dig på vores freelance liste? :)
Avatar billede kwanstudios Nybegynder
28. juni 2003 - 14:17 #6
Helt ærligt, det er da en nem og hurtig lille ting at fikse, det må der da være nogle af jer der kan hjælpe mig med?
Avatar billede ahv Nybegynder
28. juni 2003 - 21:19 #7
<?php
$con = mysql_connect("host", "user", "pass");
mysql_select_db("db");
$query = mysql_query("SELECT id, navn FROM cms") or die(mysql_error());
$antal = mysql_num_rows($query);
?>

<html>
<head>
<script language="javascript" type="text/javascript">
<?php
for ($i = 1; $i <= $antal; $i++) {
    echo "function m".$i."() {\n";
    for ($u = 1; $u <= $antal; $u++) {
        echo "document.getElementById('".$u."').style.display='";
        if ($u == $i) {
            echo "inline';\n";
        } else {
            echo "none';\n";
        }
    }
    echo "}\n\n";
}
?>
</script>
</head>
<body>

<?php
$i = 1;
while ($row = mysql_fetch_array($query)) {
    if (isset($_GET['id']) && $_GET['id'] == $row['id']) {
        echo " <a href='".$_SERVER['PHP_SELF']."?id=$row[id]' class='menu' style='color: #DE3806;'>".stripslashes(htmlentities($row['navn']))."</a>";
    } else {
        echo " <a href='".$_SERVER['PHP_SELF']."?id=$row[id]' class='menu' onmouseover='m".$i."();'>".stripslashes(htmlentities($row['navn']))."</a>";
    }
    if ($i < $antal) {
        echo '<span style="font-weight: normal"> &nbsp;|&nbsp;</span>';
    }
    $i++;
}
echo "<br>";
$query = mysql_query("SELECT refID FROM cmsSub ORDER by refID ASC LIMIT 1") or die(mysql_error());
$firstref = mysql_fetch_array($query);
$first = $firstref['refID'];

$u = 1;
$j = 1;
echo "<div id='".$j."' style='display:none;'>\n";
$query = mysql_query("SELECT * FROM cmsSub") or die(mysql_error());
while ($rowSub = mysql_fetch_array($query)) {
    $queryantal = mysql_query("SELECT * FROM cmsSub WHERE refID='$rowSub[refID]'");
    $antal = mysql_num_rows($queryantal);
    if ($first != $rowSub['refID']) {
        echo "</div>\n\n";
        $j++;
        $u = 1;
        echo "<div id='".$j."' style='display:none;'>\n";
        $first = $rowSub['refID'];
    }
    echo " <a href='".$_SERVER['PHP_SELF']."?id=".$id."&sub=".$rowSub['id']."' class='menuSub' style='color: #566164;'>".stripslashes(htmlentities($rowSub['navn']))."</a>";
    if ($u < $antal) {
        echo '<span style="font-weight: normal"> &nbsp;|&nbsp;</span>';
    }
    $u++;
    echo "\n";
}
echo "</div>";
?>

Mail: alexander_hv@hotmail.com
Avatar billede ahv Nybegynder
28. juni 2003 - 21:22 #8
Tabellen jeg fik det til at virker med ->

# phpMyAdmin MySQL-Dump
# version 2.5.0
# http://www.phpmyadmin.net/ (download page)
#
# Vært: localhost
# Genereringstidspunkt: 28/06 2003 kl. 21:21:04
# Server version: 4.0.12
# PHP version: 4.3.0
# Database: : `exp`
# --------------------------------------------------------

#
# Struktur dump for tabellen `cms`
#
# Creation: 28/06 2003 kl. 20:31:09
# Last update: 28/06 2003 kl. 21:19:16
#

CREATE TABLE `cms` (
  `id` int(11) NOT NULL auto_increment,
  `navn` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
# --------------------------------------------------------

#
# Struktur dump for tabellen `cmssub`
#
# Creation: 28/06 2003 kl. 20:47:11
# Last update: 28/06 2003 kl. 21:19:16
#

CREATE TABLE `cmssub` (
  `id` int(11) NOT NULL auto_increment,
  `refID` int(11) NOT NULL default '0',
  `navn` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
Avatar billede roenving Novice
29. juni 2003 - 05:37 #9
alexander klarede den jo lige, så det kan du vel bruge ,-)

men princippet var jo et logisk problem, og der er jeg mester ;O)

-- mine fremste egenskaber er ellers at lave javascripting eller andet programmering som tager udgangspunkt i script-sprog ...

Jeg har ikke nået at profilere mig så meget endnu, men prøv: http://www.ebruger.dk/e/profil.asp?bruger=roenving , eller

http://www.eksperten.dk/bruger.phtml?navn=roenving&option=24
Avatar billede chris... Nybegynder
29. juni 2003 - 14:12 #10
Dit eksempel virker fint, men når jeg integrere den i min side loader den ikkke submenuen under den side man er inde på. Vil du have et screenshot, en demo url eller hele koden? Bliver dog over mail, da den er confidential indtil videre ;)

Men ellers et super stykke arbejde :D
Avatar billede ahv Nybegynder
29. juni 2003 - 14:19 #11
chris... -> er du kwanstudios ?
Avatar billede ahv Nybegynder
29. juni 2003 - 14:42 #12
Jeg har rettet lidt i menuen så den gerne skulle vælge den rigtige submenu nu ->
mail -> alexander_hv@hotmail.com

Men det ville være fint hvis der lige kunne komme en forkalring på ->
chris... -> kwanstudios
Avatar billede ahv Nybegynder
29. juni 2003 - 15:39 #13
Jeg er klar til at poste så snart forklaringen er her ;o)
Avatar billede tipsen Nybegynder
29. juni 2003 - 15:51 #14
Den glæder jeg mig også lidt til :-)
Avatar billede fangel Nybegynder
29. juni 2003 - 15:57 #15
ahv/tipsen => er du/i på msn messenger, jeg samler på php venner!... nej spøg til side, men det er bare rart at kunne snakke med nogle med-php-nørder en gang i mellem...

Morten
Avatar billede ahv Nybegynder
29. juni 2003 - 15:58 #16
dea_pg ->

ICQ -> 82550004
MSN -> alexander_hv@hotmail.com
Avatar billede ahv Nybegynder
29. juni 2003 - 16:04 #17
tipsen -> Glæder du dig til forklringen eller til jeg poster? Gætter på du glæder dig til forklaringen?
Avatar billede tipsen Nybegynder
29. juni 2003 - 16:28 #18
ahv: Forklaringen :-)
dea: Check min hjemmeside under kontakt.
Avatar billede ahv Nybegynder
29. juni 2003 - 17:41 #19
chris.../kwanstudios ->
Så vidt jeg forstod, så var det lidt en hastesag da det skulle være færdigt til idag klokken 19:00, klokken er nu 17:40? Og du har stadig ikke sendt nogen mail eller meldt ud om noget.
Avatar billede tipsen Nybegynder
29. juni 2003 - 17:51 #20
ahv: Tror ikke du skal fæste for meget lid til "løfterne" fra kwan ang. freelancer-jobs - det er vist bare en "teaser" som har været brugt et par gange for at få lavet diverse opgaver på Eksperten. Jeg kan selvfølgelig tage fejl, men det er bare synd, hvis det blot er udnyttelse af gratis arbejdskraft...
Avatar billede ahv Nybegynder
29. juni 2003 - 18:57 #21
Ja, desværre.
Så ved jeg hvordan det følses at være taget ved røven :/ Et møde på en søndag klokken 19:00 lyder sgu også underligt.
Avatar billede roenving Novice
30. juni 2003 - 02:16 #22
Var det ikke også kl. 07:00 en søndag *g*
Avatar billede kwanstudios Nybegynder
30. juni 2003 - 12:40 #23
Christian er min partner, som også kan læses på www.effekt2.dk :)

Og ang. teasere, så kan I tro hvad I vil, men jeg vælger freelancere udfra erfaringer og kan jeg huske Alexanders navn som en troværdig programmør, vil jeg selvfølgelig vælge ham til næste opgave der indeholder programeringen indenfor hans kompetencefelt.

Grunden til at vi lagde mødet på en søndag var simpelthen at vi skulle gennemgå (renskrive) forretningsplanen så den passede til vores ekspanderinger efter sommer, plus en række formelle sager vi ikke kan tage i hverdagen. Jeg vil med glæde sende dig en mail og fortælle mere om hvordan vi arbejder, men følger ingen grund til at forsvare hvorvidt jeg driver en professionel virksomhed her på exp.dk. En anden grund til at mødet på holdt på en søndag var simpelthen at det var eneste mulige tidspunkt udenfor hverdagene for vores nyansatte salgschef, så.. så mærkeligt er det skam heller ikke, langt de fleste iværksættere arbejder også om søndagen :) Specielt opstartere som os, der har en arbejdsuge på over 100 timer.. Så post du blot din rettelse så snart du føler du har lyst.. snakker vi økonomiske årsager må du tage kontakt til mig telefonisk.

Håber det var fyldestgørende nok for et som altid kritisk og jantelovspræget eksperten.dk :)
Avatar billede kwanstudios Nybegynder
30. juni 2003 - 12:43 #24
..har desuden lige added dig på ICQ, så det er op til dig selv om du ønsker at løse opgaven, men nu ligger der da også en kontaktflade der for fremtidigt samarbejde.
Avatar billede ahv Nybegynder
30. juni 2003 - 12:46 #25
<?php
$con = mysql_connect("host", "user", "pass");
mysql_select_db("db");
$query = mysql_query("SELECT id, navn FROM cms");
$antal = mysql_num_rows($query);
?>

<html>
<head>
<script language="javascript" type="text/javascript">
<?php
for ($i = 1; $i <= $antal; $i++) {
    echo "function m".$i."() {\n";
    for ($u = 1; $u <= $antal; $u++) {
        echo "document.getElementById('".$u."').style.display='";
        if ($u == $i) {
            echo "inline';\n";
        } else {
            echo "none';\n";
        }
    }
    echo "}\n\n";
}
?>
</script>
</head>
<body>

<?php
$i = 1;
while ($row = mysql_fetch_array($query)) {
    if (isset($_GET['id']) && $_GET['id'] == $row['id']) {
        echo " <a href='".$_SERVER['PHP_SELF']."?id=$row[id]' class='menu' style='color: #DE3806;' onmouseover='m".$i."();'>".stripslashes(htmlentities($row['navn']))."</a>";
    } else {
        echo " <a href='".$_SERVER['PHP_SELF']."?id=$row[id]' class='menu' onmouseover='m".$i."();'>".stripslashes(htmlentities($row['navn']))."</a>";
    }
    if ($i < $antal) {
        echo '<span style="font-weight: normal"> &nbsp;|&nbsp;</span>';
    }
    $i++;
}
echo "<br>\n\n";
$query = mysql_query("SELECT refID FROM cmsSub ORDER by refID ASC LIMIT 1");
$firstref = mysql_fetch_array($query);
$first = $firstref['refID'];
if (!isset($_GET['id'])) {
    $id = $first;
} else {
    $id = $_GET['id'];
}

$u = 1;
$j = 1;
if ($first == $id) {
    echo "<div id='".$j."' style='display:inline;'>\n";
} else {
    echo "<div id='".$j."' style='display:none;'>\n";
}
$query = mysql_query("SELECT * FROM cmsSub");
while ($rowSub = mysql_fetch_array($query)) {
    $queryantal = mysql_query("SELECT * FROM cmsSub WHERE refID='$rowSub[refID]'");
    $antal = mysql_num_rows($queryantal);
    if ($first != $rowSub['refID']) {
        echo "</div>\n\n";
        $j++;
        $u = 1;
        $first = $rowSub['refID'];
        if ($first == $id) {
            echo "<div id='".$j."' style='display:inline;'>\n";
        } else {
            echo "<div id='".$j."' style='display:none;'>\n";
        }
    }
    echo " <a href='".$_SERVER['PHP_SELF']."?id=".$rowSub['refID']."&sub=".$rowSub['id']."' class='menuSub' style='color: #566164;'>".stripslashes(htmlentities($rowSub['navn']))."</a>";
    if ($u < $antal) {
        echo '<span style="font-weight: normal"> &nbsp;|&nbsp;</span>';
    }
    $u++;
    echo "\n";
}
echo "</div>";
?>
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