Avatar billede drj68 Nybegynder
29. december 2003 - 13:06 Der er 13 kommentarer og
1 løsning

hjælp til kategorier i php!

Hej!

Jeg er ved at lave en side som skal laves i php. Jeg har 7 kategorier med tilhørende underkategorier.. jeg skal derfor have oprettet en database med tilhørende informationer.. feks. har jeg en kategori der hedder dæk. derind under skal jeg så have sat alle mine dæk i en database!! hvordan er det lettest at få mine kategorier sat i en database??

Derefter skal jeg så have siden til at loade de forskellige kategorier og under kategorier, når man feks går ind under dæk.

Jeg har sat 200 point af til det, såh hvis der er en der kan hjælpe mig med dette lille projekt ville det være fint..

Jeg søger altså ikke en der laver det for mig, men bare en hjælpende hånd til at komme igang, da jeg er rimelig meget nybegynder på dette område ;)


På forhånd tak!
Avatar billede fcknet Nybegynder
29. december 2003 - 13:16 #1
Du laver først en tabel med følgende:

id - auto_increment primary
pid - int
overskrift - text

Det er tabellen med kategorierne. Den kan du jo så kalde for kategori.
id er kategoriens unikke id, pid er hvilken kategori den ligger under og overskrift er teksten som vises.

Så laver du endnu en tabel med følgende:

id - auto_increment (det unikke id for dette dæk)
navn - text (navnet på dækket)
beskrivelse - text (beskrivelse af dækket)
kategori - int (id'et på den kategori som dækket ligger i).
Avatar billede thorus Nybegynder
29. december 2003 - 13:22 #2
Lav en tabel som hedder "kategorier" 

Du skal så lave et par felter eks. Id, kat_navn, kat_level, parent_id

Så opretter du alle dine "parent" kategorier eks. Autolak, dæk, fælge etc. og giver parent_id value = 0 (dvs når du henter dine parent (hoved kategorier) så laver du en select hvor alle parent_id = '0'

og når du laver under kategorier "childs" så skriver du det parent_id som under kategorien skal være under eks. dæk som måske har id 2.

Alt indhold ligger så i en anden tabel som du har en kat_id der hægter de to tabeller sammen.
Avatar billede drj68 Nybegynder
29. december 2003 - 13:38 #3
Altså nu har jeg:

<?php
$conn = mysql_connect("localhost", "root", "");
mysql_query("create database base");
mysql_select_db("vsa") or die(mysql_error());

$tabelSQL = "create Table kategorier

(
  id        auto_increment primary
  pid        integer,
  overskrift    text
)";   

mysql_query($tabelSQL);

$tabelSQL = "create Table kat2

(
  id        auto_increment
  navn        text
  beskrivelse    text
  kategori    integer,
)";   

mysql_query($tabelSQL);


mysql_close();
   

?>

Hvad gør jeg så!! er lost med det som thorus skriver!!
Avatar billede interkriller Nybegynder
29. december 2003 - 14:06 #4
Lad os tage udgangspunkt i "dæktabellen":

Den skal/kan indeholde værdierne:

dæk_ID (de enkelte dæktypers unikke id)
kategori_ID (denne id viser, at vi har med dæk, at gøre)
fabrikant (en mulighed for, at dele op i underkategorier)
dæknavn (siger vist sig selv)
tekst (beskrivende tekst om dækket)

Så kan du trække alle de dæk ud der enten er lavet af goodyear eller Dunlob f.eks.
Avatar billede drj68 Nybegynder
29. december 2003 - 14:09 #5
ja ok.. det forstår jeg godt.. men hvordan får jeg så alle mine dæk ind i databasen som jeg senere kan trække ud??
Avatar billede interkriller Nybegynder
29. december 2003 - 14:34 #6
$query = INSERT INTO dæktabel (kategori_ID, fabrikant, dæknavn, tekst)VALUES ('".$kategori."', '".$fabrikant."', '".$dæknavn."', '".$tekst."')";
$result = mysql_query($query);

De 4 ovenstående $kategori, $fabrikant, $dæknavn og $tekst er blevet sat til en valgt værdi i en form på din hjemmeside i en administrator del.
Avatar billede drj68 Nybegynder
29. december 2003 - 14:48 #7
det vil altså sige at jeg skal lave en administrator del hvor jeg kan oprette og slette varer??
Avatar billede drj68 Nybegynder
29. december 2003 - 16:01 #8
sikkert helt forkert men har siddet og leget lidt med det.. men den siger at tabellen daktabel ikke eksistere når jeg kører scriptet...

<?php
$conn = mysql_connect("localhost", "root", "");
mysql_query("create database mybase");
mysql_select_db("mybase") or die(mysql_error());

$tabelSQL = "create Table daktabel
(
  id        auto_increment
  fabrikant    text
  daeknavn    text
  tekst        text
  kategori_ID    integer,
)";   

mysql_query($tabelSQL);

$query = "INSERT INTO daktabel  (kategori_ID, fabrikant, daeknavn, tekst)VALUES

('".$_REQUEST["kategori"]."', '".$_REQUEST["fabrikant"]."', '".$_REQUEST["navn"]."',

'".$_REQUEST["tekst"]."')";
$result = mysql_query($query);


$result = mysql_query("select * from daktabel") or die(mysql_error());

while ($raekke = mysql_fetch_array($result)) {
  echo "fabrikant: ".$raekke['fabrikant'].
        " tekst: ".$raekke['tekst']."<br />";
}


mysql_close();
   

?>

ved i hvad der er galt??
Avatar billede interkriller Nybegynder
29. december 2003 - 17:36 #9
Ikke nogen grund til at køre "create table" mere en én gang. Det gør det bare mere forvirende.

nemmest at oprette den i phpmyadmin.dinhjemmeside.dk, så kan du se om "daktabel" er oprettet.

Nu har jeg aldrig oprettet tabeller med SQL-kommandoer, men skal der ikke sættes en primærnøgle....
Avatar billede drj68 Nybegynder
29. december 2003 - 17:39 #10
det ved jeg ikke om der skal! husk det er jo mig der er nybegynderen her ;) Jeg tror jeg vil prøve med phpmyadmin istedet og oprette databaserne manuelt!!
Avatar billede interkriller Nybegynder
29. december 2003 - 17:45 #11
når du så opretter det i phpmyadmin, så sæt "id" til primær nøgle.....
Avatar billede drj68 Nybegynder
29. december 2003 - 20:37 #12
har installeret phpmyadmin, men det driller stadig.. har lavet en form i html hvor man kan indtaste nogle oplysninger også skulle den vidresende oplysningerne til en phpfil som så skulle udskrive det i databasen.. men det virker ikke..

default3.php er html formen
<html>

<head>
<title>form</title>
</head>

<body>
<form action="default2.php" method="post">
<input type="text" name="navn" size="20">
<p>
fabrikant: <input type="text" name="fabrikant" size="20"><p>
daeknavn: <input type="text" name="daek_id" size="20"><p>
tekst: <input type="text" name="tekst" size="20"><p>
kategori: <input type="text" name="kategori" size="20"><p>
&nbsp;<p>
<input type="submit" value="Tag mit input">
</form>
</body>

og default er php filen som det så bliver sendt til
<?php
$conn = mysql_connect("localhost", "root", "");
mysql_select_db("mybase") or die(mysql_error());

$tabelSQL = "create Table daktabel

(
  id            auto_increment primary
  fabrikant        varchar(50)
  daek_id        int
  tekst            varchar(50)
  kategori_ID  integer,
)";   

mysql_query($tabelSQL);

$query = "INSERT INTO daktabel  (fabrikant, daek_id, tekst)
VALUES('".$_REQUEST["fabrikant"]."', '".$_REQUEST["daek_id"]."',

'".$_REQUEST["tekst"]."')";

$result = mysql_query($query);

$result = mysql_query("select fabrikant from daktabel") or die(mysql_error());

while ($row = mysql_fetch_array($result)) {
  echo $row["fabrikant"];

}


mysql_close();
   

?>

Men når jeg kører scriptet siger den: Notice: Undefined index: fabrikant in C:\Programmer\Apache Group\Apache2\htdocs\default2.php on line 19

Hvad gør jeg forkert??
</html>
Avatar billede drj68 Nybegynder
29. december 2003 - 20:51 #13
har ordnet problemet... lavede default2.php om til:

<?php
$conn = mysql_connect("localhost", "root", "");
mysql_select_db("mybase") or die(mysql_error());

$tabelSQL = "create Table daktabel

(
  id            auto_increment primary
  fabrikant        varchar(50)
  daek_id        int
  tekst            varchar(50)
  kategori_ID  integer,
)";   

mysql_query($tabelSQL);


$insertSQL = "insert into daktabel (kategori_ID, fabrikant, daek_id, tekst)

values ('".$_REQUEST["fabrikant"]."', '".$_REQUEST["daek_id"]."',

'".$_REQUEST["tekst"]."')";

mysql_query($insertSQL) or die(mysql_error());

$result = mysql_query("select * from daktabel") or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
  echo $row["fabrikant"];

}


mysql_close();
   

?>


Men nu får jeg denne meddelese: Column count doesn't match value count at row 1

Hvad skal det betyde??
Avatar billede interkriller Nybegynder
29. december 2003 - 23:42 #14
For det første skal du have sat 4 værdier i din $insertSQL (du mangler en værdi for kategori_ID....f.eks dæk, eller 4, eller lign)

og så en ting som skal tages med et grand salt, tror nok mySQL_fetch_array skal være mySQL_fetch_object, men lidt på dybt vand, prøv dig frem
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