Avatar billede team_csc_ulrik Nybegynder
14. december 2006 - 08:37 Der er 38 kommentarer

MySQL udlånings database hjælp søges. (HASTESAG!)

Hejsa.

Jeg sidder her sammen med en og skal lave en MySQL Database, hvor man kan indtaste oplysninger og slette dem igen. Vi har fået den til at virke med at indtaste og slette.

Næste skridt er følgende:

Det skal være sådan at man kan låne nogle instrumenter.
Hvis en person går ind og vælger "Guitar" i rullelisten over det man kan låne.
Så skal der i de to bokse neden under (se billede), automatisk blive skrevet "hvornår den kan lånes fra" og "Hvornår den skal afleveres tilbage" med dato.

http://www.azkaban.dk/mysql1.JPG

Hvis guitaren ikke allerede er lånt ud, så skal den skrive datoen vi har i dag ud for; "Kan lånes fra den:"
Hvis den er lånt ud, skal den gå ind og tjekke hvornår ham eller hende der har lånt den, skal aflevere den tilbage. Altså hvis han/hende der har lånt den, skal aflevere den tilbage d. 23 januar 2007, så skal systemet ud for "Kan lånes fra den:" skrive datoen: 23-01-2007.

Vores spørgsmål er så: Hvordan får vi systemet til at fungere på den måde? Vores andet spørgsmål er: hvordan får vi systemet til at forstå datoen f.eks; 13-12-2006, vi har nemlig fundet ud af at systemet ikke forstår hvad det er vi vil, hvis der er mellemrum eller et tegn i mellem.


For at gøre det hele lidt nemmere, får i også lige et billede af vores MySQL database, og et dokument hvor det hele står i:

http://www.azkaban.dk/mysql2.JPG
http://www.azkaban.dk/mysql.txt
Avatar billede fennec Nybegynder
14. december 2006 - 08:59 #1
Inden dit problem kan løstes er det nødvendigt at ændre dine dato kolonner til den rigtige datatype. De skal ændres til DateTime, ellers kan du ikke bruge datofunktionerne.
Avatar billede fennec Nybegynder
14. december 2006 - 09:00 #2
Eller har du lavet en eller anden funktion som konvertere datoer til en tal værdi siden du gemmer i en integer??
Avatar billede team_csc_ulrik Nybegynder
14. december 2006 - 09:03 #3
Jeg har kun lavet det som du ser på siden. Men jeg har også 4 dokumenter.
Har pakket dem ned så du kan se dem (WINRAR FIL)
http://www.azkaban.dk/instrulan.rar

Je har også ændret de to kolonner som skulle ændres :)
Avatar billede fennec Nybegynder
14. december 2006 - 09:05 #4
Lige meget. Jeg så lige din indsæt, og den svarede på mit ?.

Ændre:
`udlan` int(11) default NULL,
`tilbage` int(11) default NULL,

til
`udlan` datetime default NULL,
`tilbage` datetime default NULL,

Og ændre din indsættelse til:
INSERT INTO `navn` VALUES (28, 'Peter', 'Pedersen', 'Æblevej 22', 1111, 'Vinterland', 112, 'ulrik@vinter.com', NULL, '2006-12-22', '2007-01-22');
INSERT INTO `navn` VALUES (29, 'Hans', 'Hansen', 'Svendborgvej 245', 5700, 'Svendborg', 112, 'svendborg@svendborg.dk', NULL, '2006-12-22', '2006-01-22');

Lægmærke til at datoer skal indsættes som 'yyyy-mm-dd'
Avatar billede team_csc_ulrik Nybegynder
14. december 2006 - 09:11 #5
Den øverste er klaret :)
Men den anden forstår jeg ikke lige helt.
Hvorfor vil du have jeg skal skrive datoen ind?

Det den skal gøre, er at den automatisk finder datoen. Hvis det instrument man vil låne, ikke er udlånt, så skal den skrive at den kan lånes fra i dag, og at den skal afleveres tilbage en måned efter.

Hvis instrumentet er udlånt, så skal den sige at instrumentet kan lånes fra den dag det bliver afleveret. Altså hvis ham der har lånt det, levere det tilbage d. 22. januar 2007, skal der stå at den kan lånes fra d. 22 januar 2007 :)
Og at den skal afleveres d. 22. februar 2007.

ved ikke om jeg misforstår dig, eller du har misforstået mig :)
Men siger tak for at du forsøger at hjælpe mig, håber at du kan hjælp med at løse problemet :)
Avatar billede team_csc_ulrik Nybegynder
14. december 2006 - 09:15 #6
Var vist lidt for hurtigt, tror jeg har forstået det du mente.
Men jeg forstår stadigvæk ikke hvordan den selv skal kunne oplyse datoen :)
Avatar billede fennec Nybegynder
14. december 2006 - 09:26 #7
Hvilken dato instrumentet kan lånes fra, skal du klare via programmering.

Noget helt andet, så mangler du vist en instrument liste, som kan joines med bookinglisten. Det er ikke holdbart at have det til at stå som tekst ("Guitar"). Der er vel flere guitare som kan udlånes?

Du skal derfor have lavet denne tabel:
CREATE TABLE `instrument` (
  `ID` int(255) NOT NULL auto_increment,
  `Navn` varchar(255) collate latin1_general_ci default NULL,
  PRIMARY KEY  (`ID`)
)
insert into instrument values('Guitar 1')
insert into instrument values('Guitar 2')
insert into instrument values('Obo')
insert into instrument values('Harpe')
insert into instrument values('Elguitar')

Også skal:
`instrument` text collate latin1_general_ci,

ændres til
`instrument` int(11),

på "navn" tabellen.
Avatar billede team_csc_ulrik Nybegynder
14. december 2006 - 09:31 #8
Jeps det siger jo sig selv ;)

En instrument liste i MySQL mener du sikkert :)?
For det har jeg ikke.
Jeg har en liste der hvor man indtaster oplysningerne.
Hvis du kigger på siden "Database.html" vil du kunne se det :)

De der: insert into instrument values('Guitar 1') osv.
Hvilket side vil du have dem indtastet på?
Jeg er ikke ekspert i MySQL, har ikke arbejdet så meget med det, så det virker som om jeg ikke fatter noget af det, skal det nok passe :P

Ej forstår godt hvad der står, det er bare alt det er indsætnings halløj som forvirre.
Avatar billede team_csc_ulrik Nybegynder
14. december 2006 - 09:36 #9
Så nu har jeg oprettet tabel i MySQL med følgende oplysninger:

CREATE TABLE `instrument` (
  `ID` int(255) NOT NULL auto_increment,
  `Navn` varchar(255) collate latin1_general_ci default NULL,
  PRIMARY KEY  (`ID`)
)


`instrument` er blevet ændret til: int(11),
Avatar billede fennec Nybegynder
14. december 2006 - 09:51 #10
Fint nok. Så indsætter du dine instrumenter i "instrument" tabellen. Det kan du gøre via phpMyAdmin.
Avatar billede team_csc_ulrik Nybegynder
14. december 2006 - 09:59 #11
Skal de have samme værdi som:
  `Navn` varchar(255) collate latin1_general_ci default NULL,
?
Avatar billede fennec Nybegynder
14. december 2006 - 10:13 #12
Øhh, ikke forstået....
Du skal bare indsætte Guitar, Trommesæt og Keyboard i tabellen.
Avatar billede team_csc_ulrik Nybegynder
14. december 2006 - 10:14 #13
Nu er jeg slet ikke med :-s
Hvilken tabel taler du om?
Avatar billede team_csc_ulrik Nybegynder
14. december 2006 - 10:17 #14
Hvis det er nemmere, kan du så ikke prøve at opsætte tingene i de dokumenter jeg har linket til tidligere og sende dem tilbage til mig, og fortælle mig hvad jeg skal oprette i MySQL.

Der er tre instrumenter som kan lånes:
Guitar
Trommesæt
Keyboard

Tror det vil være nemmere for os begge, end at vi ender med at kører i ring :)
Avatar billede fennec Nybegynder
14. december 2006 - 10:32 #15
Jeg kan ikke lave DB opsætninger, uden at have direkte adgang til myPHPAdmin. Men du skal bare køre disse 3 linjer:

insert into instrument values(1, 'Guitar')
insert into instrument values(2, 'Trommesæt')
insert into instrument values(3, 'Keyboard')
Avatar billede team_csc_ulrik Nybegynder
14. december 2006 - 10:33 #16
Undskyld hvis jeg går dig på nerverne
Men de skal stå under DB siden ikke :)?
Avatar billede fennec Nybegynder
14. december 2006 - 10:49 #17
Så tager vi det helt fra bunden med at få indsat de 3 linjer.

Gå ind i PHPMyAdmin. Vælg "instrument" tabellen. Tryk på "Indsæt" knappen øverst. Her kan du indsætte dem.
Avatar billede team_csc_ulrik Nybegynder
14. december 2006 - 10:50 #18
Det er gjort nu :)
Avatar billede fennec Nybegynder
14. december 2006 - 11:01 #19
Fint. Så er databasen på plads. Så skal vi igang med programmering. Vender tilbage om 5 min med noget kode... Skal lige have genopfrisket min PHP.
Avatar billede team_csc_ulrik Nybegynder
14. december 2006 - 11:02 #20
Jeg venter tålmodigt :)
Avatar billede fennec Nybegynder
14. december 2006 - 11:10 #21
Første udkast...
Skal bare bekræfte at vi har forbindelse til databasen, og vi får hentet instrumenterne ud i select boxen:

<?php
$db = mysql_connect("localhost","root","");
mysql_select_db("elevliste2");


?><html>
<head>
<title>Database</title>
<link href="layout.css" rel="stylesheet" type="text/css" />
</head>

<body bgcolor="#212121">

<h1 class="header"><font face="Verdana" size="2" color="#FFFFFF">Database indtastning !</font></h1>
<form method="post" action="in.php" name="navn">

  <table border="0" style="border-collapse: collapse" width="38%" height="19" id="table1">
    <tr>
        <td width="213"><p class="subtitle">
        <font face="Verdana" size="2" color="#FFFFFF">Fornavn:&nbsp; </font> </td>
        <td>
    <font face="Verdana" color="#FFFFFF">
    <input name="Navn" type="text"></font><font face="Verdana" size="2" color="#FFFFFF">*</font></td>
       
        </p>
    </tr>
    <tr>
        <td width="213"><p class="subtitle">
        <font face="Verdana" size="2" color="#FFFFFF">Efternavn:</font></td>
        <td>
    <font face="Verdana" color="#FFFFFF">
    <input type="text" name="Efternavn"></font><font face="Verdana" size="2" color="#FFFFFF">*</font></td>
   
        </p>
    </tr>
    <tr>
        <td width="213"><p class="subtitle">
        <font face="Verdana" size="2" color="#FFFFFF">Adresse:</font></td>
        <td>
    <font face="Verdana" color="#FFFFFF">
    <input type="text" name="Adresse"></font><font face="Verdana" size="2" color="#FFFFFF">*</font></td>
   
        </p>
    </tr>
    <tr>
        <td width="213"><p class="subtitle">
        <font face="Verdana" size="2" color="#FFFFFF">Postnummer:</font></td>
        <td>
      <font face="Verdana" color="#FFFFFF">
      <input type="text" name="Postnr"></font><font face="Verdana" size="2" color="#FFFFFF">*</font></td>
     
          </p>
    </tr>
    <tr>
        <td width="213"><p class="subtitle">
        <font face="Verdana" size="2" color="#FFFFFF">By:</font></td>
        <td>
      <font face="Verdana" color="#FFFFFF">
      <input type="text" name="By"><font size="2">*</font></font></td>
     
          </p>
    </tr>
    <tr>
        <td width="213"><b><i><font face="Verdana" size="2" color="#FFFFFF">Tlf.:</font></i></b></td>
        <td>
        <font face="Verdana" color="#FFFFFF">
        <input type="text" name="telefonnr"></font></td>
       
        </p>
    </tr>
    <tr>
        <td width="213"><b><i><font face="Verdana" size="2" color="#FFFFFF">E-mail:</font></i></b></td>
        <td>
    <font face="Verdana" color="#FFFFFF">
    <input type="text" name="mail"></font></td>
   
        </p>
    </tr>
    <tr>
        <td width="213"><i><b><font size="2" face="Verdana">Jeg ønsker at låne
        følgende:</font></b></i></td>
        <td>
    <select size="1" name="instrument">
    <option></option>
<?    $result = mysql_query("SELECT * FROM person");
    while($row = mysql_fetch_array($result))
    {
        echo "<option value=\"". $row['ID'] ."\">". $row['navn'] ."</option>";
    }
    ?>
    </select><font face="Verdana" size="2" color="#FFFFFF">*</font></td>
   
    </tr>
    <tr>
        <td width="213"><b><i><font face="Verdana" size="2">Kan udlånes fra</font><font face="Verdana" size="2" color="#FFFFFF">
        den:</font></i></b></td>
        <td>
  <font face="Verdana" color="#FFFFFF">
  <input type="text" name="udlan"></font></td>
 
          </p>
    </tr>
    <tr>
        <td width="213"><b><i><font face="Verdana" size="2">Skal leveres tilbage
        den</font><font face="Verdana" size="2" color="#FFFFFF">:</font></i></b></td>
        <td>
  <font face="Verdana" color="#FFFFFF">
  <input type="text" name="tilbage"></font></td>
 
          </p>
    </tr>
    <tr>
        <td width="213">&nbsp;</td>
        <td>&nbsp;</td>
    </tr>
    </table>
<p class="subtitle"><font face="Verdana" size="2" color="#FFFFFF"><em><strong>* Skal Udfyldes!<br>
</strong></em></font><em><font face="Verdana" size="2" color="#FFFFFF">Skriv 0,
vis du ikke ønsker oplyse telefonnummer og e-mail adresse.</font></em></p>
    <p>
<font face="Verdana" color="#FFFFFF">
<input type="submit" value="Godkend"></font><font size="2" color="#FFFFFF" face="Verdana">
</font><font face="Verdana"><font face="Verdana" color="#FFFFFF">
<input type="reset" value="Nulstil"></font><font size="2" color="#FFFFFF">
</font></font>
</p>



</form>
<form method="post" action="delete.php" name="delete">

<p class="header style1"><font face="Verdana" size="2" color="#FFFFFF">Copyright © Ulrik Ulmer 2006 - 2007
</font> </p>
</form>

</body>


</html>
<?php
mysql_close($db);
?>
Avatar billede team_csc_ulrik Nybegynder
14. december 2006 - 11:22 #22
Har lige testet det.
Den medler ikke om nogen fejl, men den tilføjer ikke noget.
Hvilket nok er fordi at man ikke kan vælge instrument.

Gør den som du regnede med? :)
Avatar billede fennec Nybegynder
14. december 2006 - 11:43 #23
Der var en fejl. Ret:
$result = mysql_query("SELECT * FROM person");

til:
$result = mysql_query("SELECT * FROM instrument");
Avatar billede fennec Nybegynder
14. december 2006 - 11:43 #24
Så skulle de 3 instrumenter fra databasen gerne komme ud på select listen.
Avatar billede team_csc_ulrik Nybegynder
14. december 2006 - 11:54 #25
Altså de skulle gerne komme ud på rullelisten på "database.html"?
Hvis ja, så gør de det ikke.
Også er det vel fordi jeg mangler at indtaste noget i MYSQL tabellen "instrument" ikke?

Du skrev noget med:

insert into instrument values(1, 'Guitar')
insert into instrument values(2, 'Trommesæt')
insert into instrument values(3, 'Keyboard')

Længere oppe, men de tre sætninger har jeg slet ikke sat ind nogle steder. :)
Avatar billede fennec Nybegynder
14. december 2006 - 12:11 #26
Sagde du ikke du havde indtastet det i post 14/12-2006 10:50:52??

"insert into..." er SQL syntax. Hvis du har indsat via "indsæt" knappen i PHPMyAdmin har den genereret koden for dig.

Vi kører desuden PHP nu, så filen skal hedde database.php
Avatar billede team_csc_ulrik Nybegynder
14. december 2006 - 12:25 #27
Jo det gjorte jeg, men må have læste forkert, gør det lige :)
Problemet er bare at når jeg trykker på indsæt, hvad er det så præcis jeg skal skrive? og der er under værdi ikke?

jeg har prøvet at skrive både:
(1, 'Guitar'), 'Guitar' og Guitar
samt: "insert into instrument values(1, 'Guitar')" som ikke kan stå der.
Intet af det virker, der kommer i hvert fald ikke noget frem i rullelisten over instrumenter i database.html
Avatar billede fennec Nybegynder
14. december 2006 - 12:41 #28
Har du husket at omdøbe filen til database.php??
Avatar billede team_csc_ulrik Nybegynder
14. december 2006 - 12:42 #29
sagde du vist ikke jeg skulle, eller har jeg overset noget :)
Prøver lige...

Nu har jeg prøvet, og der står stadigvæk ikke noget under rullelisten :-s
Den er helt blank.
Avatar billede team_csc_ulrik Nybegynder
14. december 2006 - 12:43 #30
Glemte lige at spørger hvad det er jeg skal skrive under "INDSÆT" i tabellen "Instrument"
Avatar billede fennec Nybegynder
14. december 2006 - 13:06 #31
Under indsæt skulle du gerne se 2 blokke. Hver med "id" og "navn". Den nederste har en Ignorer checkbox. Hele denne blok skal du glemme alt om.

Der er en funktion og en værdi input box til ID og Navn. Som værdi i Navn indsætter du "guitar" (uden " omkring). De 3 andre lader du bare stå tomme. Tryk så på Udfør.

Gentag for Keyboard og Trommesæt.
Avatar billede team_csc_ulrik Nybegynder
14. december 2006 - 13:21 #32
Unskyld men det forvirre mig, at du siger to blokke og det med indsæt.
Skal: Guitar, Keyboard og Trommesæt sættes ind ved "navn" alle sammen, eller skal de sætte ind i en blok som hedder "trommesat" osv.?

Undskyld at jeg er så svært at få til at forstå :)
Men har også indlæringsproblemer, nok det som gør det.
Avatar billede fennec Nybegynder
14. december 2006 - 13:52 #33
Når du trykker på indsæt, skulle du gerne få et billede ala dette:
http://www.henriknygaard.dk/Experten/myAdmin.jpg

Bare indsæt Guitar (som det står der) og tryk Udfør. Hverken mere eller mindre. Gentag for trommesæt og Keyboard.
Avatar billede team_csc_ulrik Nybegynder
14. december 2006 - 13:58 #34
Det gør jeg også nu :)
Troede jeg skulle skrive instrumenterne under navn, men har slettet dem :)

Jeg kan ikke arbejde videre med databasen efter 14:15, da jeg får fri. Og har ikke adgang til den hjemme fra mig selv af. Så håber vi kan snakke lidt videre i morgen hvor jeg har fri 11:30, hvis det ikke kommer til at virke i dag.
Avatar billede fennec Nybegynder
14. december 2006 - 14:20 #35
Du siger bare til...
Avatar billede team_csc_ulrik Nybegynder
15. december 2006 - 07:29 #36
Så jeg er næsten klar igen :)
Skolen starter 08:10, så skriver allerede nu.

Guitar, Trommesæt og Keyboard kommer nu frem i listen, hvor man skal udfylde for at låne. Det eneste jeg mangler nu er at den selv går ind og tjekker om det instrument man vil låne er udlånt i forvejen. Hvis det er udlånt, så skal den skrive den dato som instrumentet leveres tilbage.

Altså hvis jeg vil låne det i dag og det blev lånt ud i går (man må låne i en måned) så skal der står at jeg kan låne det fra d. 15-01-2007 til d. 15-02-2007
Hvis det ikke er lånt ud, skal der stå at jeg kan låne det fra den 15-12-2006 til den 15-01-2007

Forstår du hvordan jeg mener osv. :)?
Jeg smutter nu, for skal i skole, det kan godt være der går noget tid før jeg svare, da jeg lige skal hører min studievejleder om noget :)
Avatar billede team_csc_ulrik Nybegynder
15. december 2006 - 09:46 #37
Jeg er her nu, hvis du altså er her :)
Avatar billede fennec Nybegynder
20. december 2006 - 12:14 #38
Undskyld jeg ikke har skrevet før, men jeg har været syg, og er det stadig. Har lige sat mig til computeren for første gang i flere dage.

Du skulle nu have den rigtige DB opbygning, så resten er programmering. Det vil derfor være en god ide at stille ?'et i PHP katagorien, da jeg ikke er frisk endnu, og der kommer næppe andre herind længere.
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
Computerworld tilbyder specialiserede kurser i database-management

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