Avatar billede jammerlab Nybegynder
11. august 2003 - 20:24 Der er 20 kommentarer og
1 løsning

Hjælp med opbygning af MySQL

Tag et kig på http://87836.buildyourownshop.com/

Klik på "Vælg kategori:" ... jeg skal lave noget lignende .. det er let nok hvis det bare var HTML men sagen er at en admin skal kunne tilføje hoved punkter... og punkter under osv :P og jeg kan simpelthen ikke visualisere hvordan det skal stilles op i MySQL'en. Gir 50 point for opgaven da jeg selv syntes den er besværlig ;)
Avatar billede avminarm Juniormester
11. august 2003 - 22:23 #1
Struktur

Katagoritabel:
kat_id | tekst

Varetabel:
id | kategori_id | niveau | tekst

id er hver vares id (unikt)

kategori_id henviser til hviken kategori varen hører til

Niveau er hvur i herakiet varen er placeret

tekst = varens tekst

Var det det du søgte?
Avatar billede jammerlab Nybegynder
11. august 2003 - 23:00 #2
Kan stadig ikke se hvordan man i en while loop sikkre at de rigtige menu'er kommer under det rigtige hoved punkt. :| PHP eksempler ville være nice.
Avatar billede Slettet bruger
12. august 2003 - 12:12 #3
Du kan lave følgende:

I din selectbox har du dine forskellige navne. Som du kan hive frem fra en tabel. Når man vælger noget fra en selectbox, kan du hive det frem med $_POST

lad os sige man har valgt legetøj fra selectboxen.

så har du en struktur der er følgende:
id | kategori | tekst

så kan du bede den om at hive alt frem ved den enkelte kategori med:
select * from tabel WHERE kategori = '$_POST[selectname]'

Håber du kan følge tankegangen.
Avatar billede Slettet bruger
12. august 2003 - 12:18 #4
et helt eksempel kunne være:

Du har to tabeller i din database

En der hedder kategori, og en anden der hedder vare

kategori tabellen består kun af: id | kategori
vare tabellen består af: id | kategori | tekst | pris osv osv

Man vælger i selectboxen:

<select name="kategori">
<option value="legetøj">Legetøj</option>
<option value="heste">heste</option>

Du hiver data frem fra den enkelte kategori:

$get = mysql_query("select * from tabel WHERE kategori = '$_POST[kategori]");
while($row = mysql_fetch_array($get)) {
echo "Jeg har valgt kategori $row[kategori] og den koster $row[pris] ";
}
Avatar billede jammerlab Nybegynder
12. august 2003 - 13:24 #5
jaja det er jeg skam med på ikke det jeg mente :P Jeg mente hvordan jeg for menuen frem altså

<select name="kategori">
<option value="legetøj">Legetøj</option>
<option value="heste">heste</option>

ved hjælp af PHP :) en while loop ja men hvordan sørger jeg for at de rigtige kategorier kommer først og underkategorier. For administratoren skal kunne tilføje nye punkter under nogle andre og nye hovedpunkter.
Avatar billede Slettet bruger
12. august 2003 - 13:44 #6
AHA :) du kan gøre noget ala:

<select name="kategori">
<?
$query = "SELECT * FROM tabel";
$query = mysql_query($query);
while($row = mysql_fetch_array($query)) {
$kategori $row["kategori"];
         
        echo "
        <option>$kategori
        ";
      }
      ?>
    </select>
Avatar billede jammerlab Nybegynder
12. august 2003 - 13:45 #7
nej da... der henter den jo bare alt i en smøre! Det skal jo være struktureret.
Avatar billede Slettet bruger
12. august 2003 - 14:06 #8
aha det du vil have er noget ala:

1
1.1
1.2
2
2.1
2.2

Så kan du kigge her: http://www.eksperten.dk/spm/378859
Der er en med samme problem, og en ganske smart måde at løse problemet på :)
Avatar billede jammerlab Nybegynder
12. august 2003 - 14:44 #9
Kan slet ikke få noget af det til at virke :|
Avatar billede Slettet bruger
12. august 2003 - 15:31 #10
prøv noget ala dette, hjemmestrikket. Men du burde kunne se meningen i det

MySQL struktur:
overpunkter: id | overskrift
underpunkter: id | navn | punkt


$menuover = mysql_query("SELECT id,overskrift FROM overpunkter");
while($row1 = mysql_fetch_array($menuover)) {
$menuid = $row1[id];
  echo "$menuid<BR>";
  $menuunder = mysql_query("SELECT * FROM underpunkter WHERE punkt ='$menuid'");
  while($row2 = mysql_fetch_array($menuunder)) {
  echo "$row2[navn]<BR>";
  }
  }
Avatar billede Slettet bruger
12. august 2003 - 15:39 #11
Det færdige script kunne se således ud:

MySQL struktur:
overpunkter: id | overskrift

I overpunkt har vi id, og navnet på menupunktet.

underpunkter: id | navn | punkt

I underpunkt har du så navnet, som er punktet man skal kunne vælge.
Og punkt, skal så have samme tal som idét har i overpunkt

----------------------

kode :

<?
// connect til din database her.

echo " <select name=\"kategori\"> ";
$menuover = mysql_query("SELECT id,overskrift FROM overpunkt");
while($row1 = mysql_fetch_array($menuover)) {
$menuoverskrift = $row1[overskrift];
  echo "<option> - $menuoverskrift -";
  $menuunder = mysql_query("SELECT * FROM forum_msg WHERE punkt ='$menuoverskrift'");
  while($row2 = mysql_fetch_array($menuunder)) {
  echo "<option>$row2[navn]<BR>";
  }
  }
  echo "</select>";
?>
Avatar billede jammerlab Nybegynder
12. august 2003 - 16:01 #12
hehe SELECT * FROM forum_msg WHERE punkt ='$menuoverskrift' din kode er noget rodet... fikser det lige og tester.
Avatar billede Slettet bruger
12. august 2003 - 16:03 #13
heh sorry, men testede det lige med et forum jeg har kørende. Så fik ikke lige rettede den sidste linje til.
Avatar billede jammerlab Nybegynder
12. august 2003 - 16:05 #14
omg du har 1 while loop inde i en anden @.@ det troede jeg ikke man kunne hver gang jeg har prøvet det laver den fejl :P
Avatar billede jammerlab Nybegynder
12. august 2003 - 20:57 #15
cypermann - så var den der sq endelig :) dit system ser ud til at virke fint, og ønsker jeg flere underkategorier adder jeg bare flere while loops :P Smukt.
Avatar billede Slettet bruger
12. august 2003 - 21:00 #16
Jeps :)

Du behøver ikke adde flere while loops. Bare sørg for at undermenuen har samme tal i feltet punkt, som overmenuen har som id :)
Avatar billede jammerlab Nybegynder
12. august 2003 - 21:03 #17
Hm?!

jeg har lavet 3 i MySQL'en

og så dette stk kode:

<?
echo "
<select name=show onChange=Submit(); class=form>
<option value=0>[ Vælg kategori: ]</option>";

$menuover = mysql_query("SELECT id,overskrift FROM first")or die (mysql_error());
while($row1 = mysql_fetch_array($menuover)) {
$menuoverskrift = $row1[overskrift];
  echo "<option>$menuoverskrift";
  $menuunder = mysql_query("SELECT * FROM second WHERE punkt ='$menuoverskrift'")or die (mysql_error());
  while($row2 = mysql_fetch_array($menuunder)) {
  $third = $row2[navn];
  echo "<option>&nbsp;&nbsp;&nbsp;$row2[navn]<BR>";
      $menuunder = mysql_query("SELECT * FROM third WHERE punkt ='$third'")or die (mysql_error());
      while($row2 = mysql_fetch_array($menuunder)) {
      echo "<option>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$row2[navn]<BR>";
  }
  }
  }
  echo "</select>";
?>
Avatar billede Slettet bruger
12. august 2003 - 21:06 #18
Aha ja på den måde. Så har du selvfølgelig ret :)
troede lige du ville for hver undermenu lave et nyt loop, for så ville det jo være dobbeltarbejde :)

Bare glem min sidste kommentar.
Avatar billede jammerlab Nybegynder
12. august 2003 - 21:07 #19
hehe ;) tak for hjælpen.
Avatar billede Slettet bruger
12. august 2003 - 21:08 #20
NP, og tak for points :)
Avatar billede jammerlab Nybegynder
13. august 2003 - 13:32 #21
Stadig frisk på at hjælpe mig? :) der er nemlig problemer med den.
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