24. november 2001 - 18:22
Der er
13 kommentarer og 3 løsninger
Data fra flere tabeller
Jeg har en database med to tabeller - \"varer\" og \"bestillinger\". Alle poster i \"varer\" har et unikt id nummer. På en bestillingsside henter jeg alle poster fra \"varer\" ind i en dropdownbox. Bestillingers oplysningerne, navn, adresse, varer m.m bliver gemt i tabellen \"bestillinger\". Og nu kommer spørgsmålet: Kunne det lade sig gøre at gemme varens id nummer i tabellen \"bestillinger\", i stedet for som nu hvor jeg gemmer hele teksten.? håber det gav mening Søren
Annonceindlæg tema
24. november 2001 - 19:12
#1
Ja, og det vil faktisk være meget bedre end det du gør nu. Og være mere korrekt i.f.t. en relationel database. Den løsning du har nu, har den helt klare ulempe, at du eks. opretter en vare med ID 100 og en varetekst som efterfølgende gemmes i x antal poster i bestillinger. Du finder nu ud af, at du har lavet en fejl i vareteksten og denne skal du derfor rette i både varer og alle eksisterende poster i bestillinger. Hvis du gemmer varens ID i bestillinger i stedet, skal du kun rette vareteksten i varer. Er dette svar nok på dit spørgsmål, eller mangler du hjælp til at lave det konkret ?
24. november 2001 - 19:29
#2
Det var også det jeg havde tænkt, men jeg har ingen ide om hvordan jeg skal få det lavet. Er det noget med join eller noget helt andet? M.v.h. Søren
24. november 2001 - 19:53
#3
Ja og nej :-) Du skal bruge et join når du skal trække data ud, men ikke når du ligger bestillinger ind. Hvis du eks. har flg. tabeller Varer VareID VareNavn VarePris Bestillinger BestID VareID Antal Kan du trække alle poster med varenavn for en bestemt bestilling ud med dette SQL statement SELECT VareNavn, Antal, (Antal*VarePris) AS Pris FROM Bestillinger JOIN Varer ON Bestillinger.VareID=Varer.VareID WHERE BestID=10
25. november 2001 - 11:39
#4
hejsa! Der hvor du nu indsætter teksten fra din vare tabel i bestillings tabellen, det skal \"bare\" ændres til at indeholde id nummeret fra vare tabellen....... Hvis du poster din fil for der hvor du hiver dataene ud af vare tabellen (der hvor de vises for kunden!) og så den hvor de bliver gemt i bestillings tabellen Samt strukturen for dine databaser!
25. november 2001 - 11:40
#5
så skal jeg og evt. andre hjælpe med at sætte det ind!
25. november 2001 - 11:56
#6
Hejsa Strukturen for min to databaser, som slet ikke har noget med varer at gøre - det var bare som eksempel, er: \"Gym\": Gymnasie Adresse Postnr/by. ID \"Kontaktpersoner\": Gymnasie Navn Adresse Postnr/by. Klasse Email Sådan hiver jeg oplysninger om gymnasier ud af \"Gym\" og viser dem for brugeren: $conn = mysql_connect(\"localhost\", \"root\", \"xx\"); mysql_select_db(\"GLO\"); // Hent data ud $resultat = mysql_query(\"select Gymnasie from Gym ORDER BY Gymnasie\") or die(mysql_error()); echo \"Opret TP arrang¯r\"; echo \"<form action=opret2.php method=post>\"; echo \"<table> <tr><td>Navn<td> <input type=text size=20 Name=Navn> <tr><td>Adresse<td> <input type=text size=20 Name=Adresse> <tr><td>Postnr.<td> <input type=text size=4 Name=Postnr> <tr><td>By<td> <input type=text size=20 Name=City> <tr><td>Klasse<td> <input type=text size=20 Name=Klasse> <tr><td>Email<td> <input type=text size=20 Name=Email> <tr><td>Telefon<td> <input type=text size=8 Name=Telefon></table> <tr><td>Gymnasie <select name=Gymnasie>\"; while ($raekke = mysql_fetch_array($resultat)) { extract($raekke); echo \"<p><option value=\\\"$Gymnasie\\\">$Gymnasie</option>\"; } echo \"<p> </form>\"; echo \" <input type=submit value=Opret>\"; Og her bliver de gemt i \"kontaktpersoner\": <?php global $HTTP_POST_VARS; $conn = mysql_connect(\"localhost\", \"root\", \"xx\"); mysql_select_db(\"GLO\"); $insertSQL = \"INSERT INTO Kontaktpersoner (ID_tp, Navn, Adresse, City, Klasse, Postnr, Email, Telefon, Arrangoer_status, Gymnasie) VALUES (\'\', \'$Navn\', \'$Adresse\', \'$City\', \'$Klasse\', \'$Postnr\', \'$Email\', \'$Telefon\', \'$Arrangoer_status\', \'$Gymnasie\')\"; mysql_query($insertSQL); Header (\"Location: arr.php\"); mysql_close($conn); ?> mvh. Søren
25. november 2001 - 12:32
#7
// der hvor de vises for brugeren! $resultat = mysql_query(\"select Gymnasie,ID from Gym ORDER BY Gymnasie\") or die(mysql_error()); echo \"Opret TP arrang¯r\"; echo \"<form action=opret2.php method=post>\"; echo \"<table> <tr><td>Navn<td> <input type=text size=20 Name=Navn> <tr><td>Adresse<td> <input type=text size=20 Name=Adresse> <tr><td>Postnr.<td> <input type=text size=4 Name=Postnr> <tr><td>By<td> <input type=text size=20 Name=City> <tr><td>Klasse<td> <input type=text size=20 Name=Klasse> <tr><td>Email<td> <input type=text size=20 Name=Email> <tr><td>Telefon<td> <input type=text size=8 Name=Telefon></table> <tr><td>Gymnasie <select name=Gymnasie>\"; while ($raekke = mysql_fetch_array($resultat)) { extract($raekke); echo \"<p><option value=\\\"$raekke[1]\\\">$raekke[0]</option>\"; } echo \"<p> </form>\"; echo \" <input type=submit value=Opret>\"; //her indsættes de i kontaktpersoner! <?php global $HTTP_POST_VARS; $conn = mysql_connect(\"localhost\", \"root\", \"xx\"); mysql_select_db(\"GLO\"); $insertSQL = \"INSERT INTO Kontaktpersoner (ID_tp, Navn, Adresse, City, Klasse, Postnr, Email, Telefon, Arrangoer_status, Gymnasie) VALUES (\'\', \'$Navn\', \'$Adresse\', \'$City\', \'$Klasse\', \'$Postnr\', \'$Email\', \'$Telefon\', \'$Arrangoer_status\', \'$Gymnasie\')\"; mysql_query($insertSQL); Header (\"Location: arr.php\"); mysql_close($conn); ?> Nu vil feltet $Gymnasie indeholde id nummeret fra tabellen Gym Måske du skal rette i denne linie echo \"<p><option value=\\\"$raekke[1]\\\">$raekke[0]</option>\"; Da du bruger en extract($raekke); hvilket jeg ikke lige ved hvad gør, da jeg endnu ikke er støt ind i den :-)) Men hvis det ikke virker som det er nu så udskift $raekke[1] med $ID og $raekke[0] med $Gymnasie
25. november 2001 - 12:58
#8
Der er et eller andet der ikke passer - nu bliver alle gymnasier vist som under hinnanden uden for dropdownboxen, og kan derfor ikke vælges.
se evt.
www.glo.dk/tp/opret.php brugernavn:aht
pass: spasmander
Søren
25. november 2001 - 13:54
#9
for mig at se afslutters formen inden submit
25. november 2001 - 14:09
#10
husk der er forskeld på ID og id der slelnes mellem store og små bogstaver du har også glemt </select> echo \"tr><td>Gymnasie <select name=Gymnasie>\"; while($raekke = mysql_fetch_array($resultat)) echo \"<option value=\\\"$raekke[ID]\\\">$raekke[Gymnasie]</option>\"; echo \"</select>\"; echo \"<input type=submit value=Opret>\"; echo \"</form>\";
25. november 2001 - 14:31
#11
Tak for svarene Jeg har desværre først tid til at kigge mere på det på onsdag, men vil her efter meld tilbage om hvordan resultatet falder ud. Håber det er ok. M.v.h. Søren
27. november 2001 - 13:36
#12
Det virker jo som det skal, eneste spørgsmål er nu hvordan jeg på en bekraft/vis side med oplysninger fra \"kontaktpersoner\" får lavet gymnasienummeret om til at vise gymnasienavnet i stedet for nummeret. Søren
27. november 2001 - 15:32
#13
smid lige den kode ind hvor den er gal... så kigger vi på den!!
27. november 2001 - 21:29
#14
Hej Her er koden der henter oplysninger ud af \"tp\" <?php include(\"../php/side_midt3.php\"); ?> <!-- IndsÊt hovedteksten her --> <?php $conn = mysql_connect(\"localhost\", \"root\", \"xx\"); mysql_select_db(\"GLO\"); // Hent data ud $resultat = mysql_query(\"select * from TP\") or die(mysql_error()); // K¯r s igennem for hver rÊkke echo \"<table><tr bgcolor=#C0C0C0><td><b><font size=-2>Gymnasie<td><b><font size=-2>Arrang¯r<td><b><font size=-2>Klasse<td><b><font size=-2>Telefon<td><b><font size=-2>Email</B>\"; while ($raekke = mysql_fetch_array($resultat)) { extract($raekke); $bgcolor = $dark ? \"#C0C0C0\" : \"#FFFFFF\"; $dark = !$dark; echo \"<tr bgcolor=\'$bgcolor\'><td font size=-2><font size=-2>$Gymnasie <td><font size=-2>$Navn <td><font size=-2>$Klasse <td><font size=-2>$Telefon $By1 <td><a href=mailto:$Email><font size=-2>$Email</A><br>\"; } mysql_close($conn); echo \"</table>\"; ?>
30. november 2001 - 01:08
#15
jeg vil tro du skal udskifte $Gymnasie med $raekke[Gymnasie] Men er dog ikke sikker! Hvis det ikek virker, så smid lige din tabel opsætning også, så er det lidt nemmere at se hvad der kommer ind hvor i tabellen :-))
14. december 2001 - 11:18
#16
Det var ikke det her er hele min tabel: $resultat = mysql_query(\"select * from TP\") or die(mysql_error()); // Kør så igennem for hver række echo \"<table><tr bgcolor=#C0C0C0><td><b><font size=-2>Gymnasie<td><b><font size=-2>Arrangør<td><b><font size=-2>Klasse<td><b><font size=-2>Telefon<td><b><font size=-2>Email</B>\"; while ($raekke = mysql_fetch_array($resultat)) { extract($raekke); $bgcolor = $dark ? \"#C0C0C0\" : \"#FFFFFF\"; $dark = !$dark; echo \"<tr bgcolor=\'$bgcolor\'><td font size=-2><font size=-2>$Gymnasie <td><font size=-2>$Navn <td><font size=-2>$Klasse <td><font size=-2>$Telefon $By1 <td><a href=mailto:$Email><font size=-2>$Email</A><br>\"; } mysql_close($conn); echo \"</table>\";
Computerworld tilbyder specialiserede kurser i database-management