Avatar billede venchil Nybegynder
26. september 2004 - 18:20 Der er 14 kommentarer og
1 løsning

Community på siden, Hvordan?

Hej Eksperter...
Jeg er som sagt ved at opbygge mit site helt forfra, fordi jeg syntes det skulle have en "ansigtsløfning". I den nye version vil jeg gerne have et community med. For det første skal man kunne oprette sig selv som bruger forholdsvist let. Uden at jeg skal gøre noget. Derefter vil man få adgang til en speciel bruger-sektion, et forum, og til at kommentere i et news-system.

Jeg er nybegynder til PHP. Jeg kan kode det mest bassale, med en snes tutorials og begynder-sites på proceslinjen. Dette er selvfølgelig en lidt stor opgave for sådan en nybegynder som mig. Da jeg overhovedet ikke har noget kendskab til databaser...

Derfor søger jeg en, eller to der kan hjælpe mig. Gerne erfarne, og med tid. Gerne med mail og/eller MSN Messenger. Hvad skal jeg starte med. Hvordan koder jeg det, og hvordan sætter jeg det op på min server?
Avatar billede kasperbn Nybegynder
26. september 2004 - 19:00 #1
Hej

Brugeren opretter sig vha. en html-form. Input-felterne fanger du med php og smider dem ind i en database. For at tjekke om brugeren er logget ind skal du undersøge noget med sessions og cookies på www.php.net.

Du skal starte med at lære en database at kende. De fleste bruger MySQL-databasen som er gratis at hente. Find et par tutorials på nettet og leg lidt med at oprette databaser og simple forespørgelser. Derpå hopper du ind på www.php.net og læser lidt om sessions og cookies.
Avatar billede venchil Nybegynder
26. september 2004 - 19:22 #2
Jeg har nu undersøgt det en lille smule. Men der er en ting jeg MÅ vide.
Hvordan kan jeg uploade en database til min server. F.eks hvis jeg har lavet en database med et par kolonner og rækker i. Hvad så? Hvordan får jeg det ud på serveren? I hvilket program skriver jeg det i, og er databaser en slags fil? Hvis ja, hvilken endelse har den så?
Avatar billede exp Juniormester
26. september 2004 - 20:20 #3
Det bedste ville være, hvis du har adgang til en mysql-database. Det kræver dog at din udbyder stiller en sådan til rådighed.

www.mysql.com
Avatar billede venchil Nybegynder
27. september 2004 - 15:52 #4
Jamen det har jeg vist. :)
Jeg læser stadig på livet løs, men jeg kan ikke finde ud af, hvilken underlig "substands" SQL/MySQL er... Som sagt, hvad er svarene på mit forrige spørgsmål?
Avatar billede kasperbn Nybegynder
27. september 2004 - 23:05 #5
Hej

MySQL er en (gratis) database.
En database er en størrelse hvor du kan gemme data i.
Jeg er faktisk ikke klar over hvordan disse data gemmes, men det er heller ikke nødvendigt (til dit formål eller noget jeg nogensinde har lavet). Det man skal vide er at man kan gemme data og hente dem ud igen.

Sql er et "sprog".
Det bruges til at kommunikere med databasen. Man kan indsætte data og hente data fra databasen med dette.

Det er meget smart. Forestil dig at du vil lave et katalog over dine cd'er.
Først sætter du dig ned og finde ud af hvilke oplysninger du vil have med.
Du beslutter dig for at dit cd-katalog skal kunne vise:

Kunstner, Album, Udgivelsesår, Cd-holder

Du kan nu starte med at smide de enkelte cd'er ind i databasen.
Ex.:

Kunstner  Album      Udgivelsesår  Cd-holder
-------------------------------------------------
The Doors  Elektra    1967          1
Nirvana    Nevermind  1991          2


Dette kunne man selvfølgelig bare skrive i en fil og kigge på det. Fordelen ved en database er at man kan sortere data som det passer én. Hvis man forestiller sig at dit cd-katalog bestod af 3000 cd'er, ville det være øv at finde ud af hvor mange cd'er blev udgivet i 1983. Vha. sql kan du udtrække bestemte data og sortere dem som du vil. Hvis jeg vil udtrække alle de cd'er der udkom i 1983 ligner det noget i stil med:

SELECT kunster, album, udgivelsesår, cd-holder FROM cdkatalog WHERE udgivelsesår = 1983 ORDER BY kunster

Nu får man en liste over alle de cd'er der udkom i 1983 sorteret efter kunstner.


Dette kan du bruge i dit community. Når en bruger opretter sig på din side, smides han/hun ind i en database. De oplysninger der skal stå i databasen for hver bruger kunne være:

id, brugernavn, password, sidstset, datoforoprettelse, point

Når en bruger logger sig ind kan du chekke om det givne brugernavn overhovedet findes:
SELECT * FROM brugere WHERE brugernavn = '$detAngivedeBrugernavnVedLogin'

Du kan chekke om passwordet er rigtigt:
SELECT * FROM brugere WHERE password = '$password'


Mysql er ikke en fil. Det er et program!!! En software-server!!!
For at få det til at virke på din hjemmeside, skal der være installeret en MySQL database på en computer som du har adgang til (Dette er dog typisk den computer som din hjemmeside ligger på).

Håber du har fået afklaret nogle spørgsmål. Ellers findes der en masse guides/tutorials på nettet.
Du kan starte her:
http://www.webcafe.dk/artikler/sql/
Avatar billede venchil Nybegynder
28. september 2004 - 14:47 #6
Jeg har læst alt det du siger der, og jeg kan det næsten i hovedet. Men i mange tutoirals skriver de f.eks.:

"SKRIV" nu:

SELECT * from videobutik WHERE 'film' = 'Matrix 2'

Jeg er udemærket klar over, at MySQL nu vil hente alle dem der har lejet filmen 'Matrix 2' i vores videobutik frem.

...Men hvor skal jeg "SKRIVE" det henne?
Avatar billede kasperbn Nybegynder
28. september 2004 - 17:20 #7
Du skal skrive det i dit php-dokument!

f.eks. Vi har en fil der hedder index.php:
---------------------------------------------
<html>
<head>
</head>
<body>

Hej, velkommen til videobiksen!

Liste over fil:

<?php

  mysql_connect('stiTilMysqlServer','mysqlBrugernavn','mysqlPassword');
  mysql_select_db('kataloger');

  $q = mysql_query("SELECT * FROM videokatalog ORDER BY titel");
  while($r = mysql_fetch_array($q)) {
      echo "Titel: ".$r['titel'].", Instruktør: ".$r['instruktoer']."<br>";
  }
?>

Farvel

</body>
</html>
------------------------------------------------------------

For at få koden til at virke skal du have en server hvor der er installeret en PHP-fortolker og en MySQL-database. Du skal have oprettet en database ved navn "kataloger". I "kataloger" skal du have oprettet en tabel "videokatalog". I "videokatalog" skal du have oprettet felterne "titel" og "instruktoer".

Bare skrive hvis der er flere spørgsmål
Avatar billede venchil Nybegynder
28. september 2004 - 17:29 #8
Det var dejligt at få at vide :D, nu er jeg vist ved at have styr på det. Jeg har ikke prøvet det endnu, men er det rigtigt ment, at hvis jeg skal oprette en database til alle mine brugere, skal det se sådan ud:
----------------------------------
create table Brugere
(
  Brugernavn          integer,
  Brugernr            varchar(50),
  Point                varchar(50),
  'Forum indlæg'      varchar(20)
)
----------------------------------
Og hvis jeg så efterfølgende vil putte en bruger ind, skal jeg skrive:
----------------------------------

insert into Brugere
  (Barugernavn, Brugernr, Point, 'Forum indlæg')
  values (Venchil, 1, 0, 0)

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

I eksemplet har jeg ikke kodet noget, men bare lige ridset det op?

Har jeg forstået sproget rigtigt?
Avatar billede venchil Nybegynder
28. september 2004 - 18:00 #9
Well, jeg er lidt lost. Nu har jeg prøvet det på min server, der selvfølgelig understøtter både PHP og alle former for SQL. Jeg indsatte en index.php-fil med dette indhold:
------------------------------
<html>

<head>
</head>

<body>
<?php

create table Brugere
(
  Brugernavn          integer,
  Brugernr            varchar(50),
  Point                varchar(50),
  'Forum indlæg'      varchar(20)
)

(
insert into Brugere
  (Barugernavn, Brugernr, Point, 'Forum indlæg')
  values (Venchil, 1, 0, 0)
)
select Brugernavn from Brugere
(
?>
</body>

</html>
------------------------------

...Men jeg får altså blank side. Hvad gør jeg forkert?
Avatar billede kasperbn Nybegynder
28. september 2004 - 21:47 #10
Du skal skelne mellem PHP og MySQL. Det det du skriver I filen bliver behandlet PHP. Men MySQL er ikke en del af PHP det er et separat program. Heldigvis kan PHP kommunikere med MySQL. For at php kan kommunikere med MySQL-programmet skal den vide HVOR programmet ligger. Dette er typisk på adressen "localhost". Derfor starter man med at CONNECTE til PHP til MySQL-programmet. Dette gøres med PHP-funktionen mysql_connect():
-----------------------------------
  <?php
   
        mysql_connect("AdresseTilMysqlProgrammet", "BrugernavnTilMysqlProgrammet", "PasswordTilMysqlProgrammet");

  ?>
-----------------------------------
MySQL programmet KRÆVER at man logger ind med et brugernavn og password.

Nu har PHP connectet til MySQL-programmet. Nu skal den vide HVILKEN DATABASE den skal bruge. Det gøres med PHP-funktionen mysql_select_db():
-----------------------------------
<?php

  mysql_select_db("denØnskedeDatabase");

?>
-----------------------------------
Nu er du klar!
Hver gang PHP skal kommunikere med MySQL-programmet skal du bruge PHP-funktionen mysql_query():
-----------------------------------
<?php
  // Opret en table:
  mysql_query("create table Brugere(
                  Brugernavn varchar(50),
                  Brugernr varchar(50),
                  Point varchar(50),
                  Forum_indlaeg varchar(20))
              ");
  // INSERT en bruger:
  mysql_query("insert into Brugere
  (Brugernavn, Brugernr, Point, Forum_indlaeg')
  values (Venchil, 1, 0, 0)");

?>
-----------------------------------

Nå du skal hente data ud fra databasen sker det i to etaper: Hente data, vise data:

-----------------------------------
<?php

  // HENTER ALLE BRUGERE OG SÆTTER DEM I EN VARIABEL
  $query = mysql_query("SELECT * FROM Brugere");

?>
-----------------------------------
Nu har vi hentet dataene, men de er ikke så meget værd hvis vi ikke kan få php til at vise dem som html i vores browser.
En måde som er lidt langhåret hvis man ikke har så meget styr på det hele er:
-----------------------------------
<?php
  // FETCHER query'en fra før til variablen $row
  while($row = mysql_fetch_array($query)) {
      echo "Brugernavn: ".$row['Brugernavn'];
      echo "Brugernr: ".$row['Brugernavn'];
      echo "Point: ".$row['Brugernavn'];
      echo "Forum Indlæg: ".$row['Forum_indlaeg];
  }
?>
-----------------------------------
while-løkken kører alle rækker igennem og man kan hente data'ene sådan.

NOTER:
Du må/kan ikke oprette felter med æ,ø,å eller mellemrum. Du havde prøvet at sige at de data som skulle lige i feltet Brugernavn skulle være af typen integer. Integer betyder heltal, så det er ikke den du skal have fat i. Jeg har ændre det til varchar(50).

Håber det fik afklaret lidt mere.
Avatar billede kasperbn Nybegynder
28. september 2004 - 21:48 #11
Rettelse:
....CONNECTE PHP til MySQL-programmet. Dette gøres med PHP-funktionen mysql_connect():
Avatar billede venchil Nybegynder
29. september 2004 - 18:23 #12
Havde helt glemt at jeg skulle bruge password. UPSY.
Jeg kontakter med det samme mit host for at få fat i det. (så vidt jeg ved er det somregel ikke det samme som til FTP-programmet?)
Avatar billede kasperbn Nybegynder
30. september 2004 - 10:09 #13
Det er værd et forsøg. Ved min udbyder har jeg ÉT password til alt, hvilket jo er ret smart medmindre man kører Navisions webserver eller lign.
Avatar billede kasperbn Nybegynder
30. september 2004 - 14:02 #14
Her er der forresten en tutorial til at lave et membership/system:

http://www.phpfreaks.com/tutorials/40/0.php
Avatar billede venchil Nybegynder
30. september 2004 - 15:36 #15
Du har søreme hjulpet mig meget. Nu tror jeg, jeg klarer mig selv resten af tiden. Det skal du selvfølgelig have point for. :D
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