Avatar billede Slettet bruger
28. juli 2004 - 20:37 Der er 33 kommentarer og
1 løsning

kartotek i PHP & MYSQL

Jeg har en ide om at lave mig et kartotek i PHP & MYSQL database, til mine artikler om haveplanter o.a., lad os kalde det en opskriftsbog eller kogebog med opskrifter, men mangler viden til at udføre det fornuftigt.

Findes der script, som kan tilrettes til formålet ? - og evt. link

Jeg forstiller mig at man har en Indexside i PHP (lig. et alfabet - FAQ), med en kort beskrivelse og så links, noget lignende det man ofte ser >læs mere<...til artiklen som så ligger i databasen, men aner faktisk ikke hvordan det laves, da jeg hidtil kun har arbejdet med HTML.

Hvordan kommer jeg igang med et sådant project ?
Avatar billede Slettet bruger
28. juli 2004 - 20:41 #1
Det kan gøres på flere måder, f.eks. gemme alle artikler i en database, og trække dem ud den vej.

Men hvis du skal have noget lidt hurtigt og nemt kan du lave et script der blot lister samtlige .html filer der indeholder artikler i et biblotek.

Læs mere om hvordan du laver dir-listing her, hvis det har interesse:
http://www.eksperten.dk/artikler/266
Avatar billede Slettet bruger
28. juli 2004 - 20:46 #2
Oh, så lige du rent faktisk mente det skulle være databaseorienteret jvf. din overskrift. Så er min idé nok ikke den bedste alligevel :)
Avatar billede gil-galad Nybegynder
28. juli 2004 - 20:50 #3
Har lavet et eksempel på hvordan de kunne laves her:

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<?php

$connection = mysql_connect("localhost", "spiff", "dynelarsen") or die(mysql_error());
mysql_select_db("spiff", $connection) or die(mysql_error());

if ($id){

$index = mysql_query("SELECT overskrift,tekst FROM opskrifter WHERE id = '$id'") or die(mysql_error());
if( $row = mysql_fetch_array($index) ) {
  echo "<h1>".$row['overskrift']."</h1>".$row['tekst']."</div>";
}else{echo "<br><br>En fejl er opstået. Kontakt Webmaster.";}

}else{

echo "<ul>";
$res = mysql_query("SELECT id,overskrift FROM opskrifter ORDER BY id") or die(mysql_error());
while($row = mysql_fetch_array($res) ) {
  echo "<li><a href=\"index.php?id=".$row['id']."\">".$row['overskrift']."</a></li>";
}
echo "</ul>";
}

?>
</body>
</html>


Lav tabellen:

CREATE TABLE opskrifter (
id int primary key auto_increment not null,
overskrift varchar(255),
tekst text
);

Indsæt en artikel:
INSERT INTO `opskrifter` ( `id` , `overskrift` , `tekst` )
VALUES (
'', 'Lassagne', 'Lassagne: Bla Bla'
);


Hvis du har phpmyadmin er det noget lettere at tilføje og rette/slette artikler.

Har lagt eksempel af ovenstående ud, med to "opskrifter":
http://spiff.users.whitehat.dk/test.php
Avatar billede gil-galad Nybegynder
28. juli 2004 - 20:52 #4
du skal så ogsp lige rette dit brugernavn, kodeord og databse til her:

$connection = mysql_connect("localhost", "brugernavn", "kodeord") or die(mysql_error());
mysql_select_db("database", $connection) or die(mysql_error());
Avatar billede Slettet bruger
28. juli 2004 - 20:59 #5
foreløbig tak, jeg ser på det, men da jeg er ny tager det måske lidt tid
Avatar billede gil-galad Nybegynder
28. juli 2004 - 21:15 #6
ok
Avatar billede gil-galad Nybegynder
30. juli 2004 - 22:29 #7
Kunne du bruge det til noget?
Avatar billede Slettet bruger
30. juli 2004 - 23:24 #8
Ja jeg har kigget p det men jeg behøver lidt mere hjælp.
Jeg har et andet project igang som skal være færdigt, men kommer tilbage snart ?
Hvis du vil hjælpe videre ?
Avatar billede gil-galad Nybegynder
30. juli 2004 - 23:59 #9
det vil jeg gerne prøve at kigge på
Avatar billede Slettet bruger
01. august 2004 - 23:07 #10
Jeg har set på ovenstående, men må nok erkende at der er meget jeg skal igennem inden jeg kan gå over til PHP/mysql administration af mit website.

Jeg vil skulle stille for mange (dume)spørgsmål, så det er nok bedst at jeg først ser på hvordan jeg opbygger min default webside med PHP include TOP,MENU,MAIN, inden jeg bevæger mig videre til Db.
Avatar billede gil-galad Nybegynder
02. august 2004 - 15:40 #11
en smart måde at lave en hjemmeside med mange sider, uden at bruge database, er ved at lave en index.php, hvorfra du inkludere andre sider ind i. Man har så alt sit design i index.php og det eneste du inkludere er indholdet. Så behøver man ikke, hvis man vil have en ekstra menu eller noget, ændre på hver enkel fil.

Sig til hvis jeg skal ligge et eksempel op.
Avatar billede Slettet bruger
02. august 2004 - 16:38 #12
Ja det må du meget gerne, jeg er jo helt ny så det er meget fedt hvis man har et eksempel man kan gå ud fra.

Hvis du lægger et eksempel op på dit web, kan jeg jo ikke se koden, kan du lægge den så jeg kan se den  Evt. i en .zip eet eller andet sted så jeg kan downloade den ?
Avatar billede gil-galad Nybegynder
02. august 2004 - 20:04 #13
Index.php:

<html>
<head>
<title>Test</title>
</head>
<body>
<a href="index.php">forside</a> -
<a href="index.php?action=side2">Side2</a> -
<a href="index.php?action=side3">Side3</a> -
<a href="index.php?action=side4">Side4</a> -
<a href="index.php?action=side5">Side5</a>
<hr>
<?php
    $lovlig['forside']='forside.php';
    $lovlig['side2']='side2.php';
    $lovlig['side3']='side3.php';
    $lovlig['side4']='side4.php';
    $lovlig['side5']='side5.php';
    $hent=(isset($_GET['action']) && isset($lovlig[$_GET['action']]))?$lovlig[$_GET['action']]:$lovlig['forside'];
    require("$hent");
?>
<hr>
<b>Se indholdet af filerne!!!:</b><br>
<a href="forside.php">forside</a> -
<a href="side2.php">Side2</a> -
<a href="side3.php">Side3</a> -
<a href="side4.php">Side4</a> -
<a href="side5.php">Side5</a>
</body>
</html>


Eksempel: http://spiff.users.whitehat.dk/test/
Avatar billede gil-galad Nybegynder
02. august 2004 - 20:11 #14
Alle filerne du vil inkludere skal du ligge ind i listen:
$lovlig['navnet_den_skal_kaldes_med']='stien_her';

Hvis der er et link der ikke virker fx: index.php?action=noget_der_ikke_virker  henter scriptet bare forsiden frem.  Hvis du vil ændre det skal du bare skrive hvilken anden fil det skal hente her:
$hent=(isset($_GET['action']) && isset($lovlig[$_GET['action']]))?$lovlig[$_GET['action']]:$lovlig['*******forside********'];




Man kan sagtens lave det så du ikke behøver ligge dem ind i listen men bare i adresselinien skriver fx. index.php?action=etfilnavn  så finder scriptet bare det navn der står i adresselinien og henter den. Men det er ikke så smart for folk kan så inkludere filer der ikke ligger på din side bare ved aat ændre adresselinien. (sikkerhedsbrist) så det skal du ikke gøre.
Avatar billede Slettet bruger
03. august 2004 - 19:36 #15
Jeg kan ikke bruge dit forslag,men læg et svar og du får point
Avatar billede gil-galad Nybegynder
03. august 2004 - 20:22 #16
svar
Avatar billede gil-galad Nybegynder
03. august 2004 - 22:49 #17
tak, men hvorfor kan du ikke bruge det?
Avatar billede Slettet bruger
03. august 2004 - 23:03 #18
Måske er det mig der ikke kan omsætte dit script, men det jeg gerne ville have infor om var hvordan ser en
index.php ud med include
------>top.php
------>menu.php
------>main.php

og hvordan kan se top-menu og main.php

er der ikke en bog hvor man kan se det i, det jeg hidtil har set giver ikke et oprindeligt billede om hvordan man bruger PHP til opbygning af en hjemmeside.

Igang med PHP begynder i flere tilfælde med ,

<?
$tekst = "Hello world";
echo "Variablen indeholder: ".$tekst;
?>

og det kan jeg godt forstå, men så er det også slut, der må da findes noget bedre ?
Avatar billede Slettet bruger
03. august 2004 - 23:04 #19
lidt tastefejl, men du forstår nok meningen ?
Avatar billede gil-galad Nybegynder
04. august 2004 - 00:31 #20
Jeg forstår ikke helt, men du har vel et design hvor der et eller andet sted skal ændres noget indhold når man navigere rundt på siden, ikke?

Det eksempel jeg har vist dig viser hvordan du inkludere indholdet ind i dit eksisterende design, hvor din menu også kan ligge. Så skal du kun ændre dit design et sted?

Har du et design eller noget, så kan jeg godt hjælpe dig med at sammenskrive det?
Avatar billede Slettet bruger
04. august 2004 - 13:41 #21
Prøv at se www.visithaven.dk

Dette design er jeg ved at skrive om, men principet bliver det samme med menu og top.

Den side du kommer ind på >august< f.eks. består at en del afsnit og disse kan opfattes som artikler og der skal så kun være en indledning af teksten, hvor man så skal klikke på LINK (overskrift f.eks.) og så få hele artiklen i et nyt vindue, og når man så har læst det skal man kunne lukke vinduet og vende tilbage til det oprindelige.

håber det er info nok .
Avatar billede Slettet bruger
04. august 2004 - 13:43 #22
Det er disse afsnit der skal lægges i en db, og der skal så kunne tilføjes nye
Avatar billede gil-galad Nybegynder
04. august 2004 - 13:48 #23
Ok, du vil bare have artiklerne til at åbne i nyt vindue + der skal komme en indledning/kort tekst sammen med linket?  Hvor mange bogstaver skal den indledning være, eller vil du selv kunne bestemme det 100%?
Avatar billede gil-galad Nybegynder
04. august 2004 - 14:10 #24
http://spiff.users.whitehat.dk/test.php  er det mere som denne du vil have den? eller?
Avatar billede Slettet bruger
04. august 2004 - 15:04 #25
Ja det er sådan jeg tænker det skal være.
den indledende tekst skal være så man får et indtryk af artiklen, jeg mener det bør være ca. 200 tegn.

og så skal der påartiklen være et link til lukning, så ikke man skal bruge X i højre hjørne.
Avatar billede gil-galad Nybegynder
04. august 2004 - 21:07 #26
ok, skal de der ca. 200 tegn komme automatisk, fra de første 200 ord i artiklen?

eller vil du have et felt i mysql'en hvor du kan skrive indledningen i?
Avatar billede gil-galad Nybegynder
04. august 2004 - 21:10 #27
Avatar billede Slettet bruger
04. august 2004 - 21:52 #28
ja. som på din test: http://spiff.users.whitehat.dk/test.php


og tegn nogenlunde som her i tekststreng:

$tegn = "200"; // tegn der skal vises

$query = "SELECT * FROM tabel ORDER BY id";
$streng = mysql_query($query);

while($r = mysql_fetch_array($streng)) {
$felt = $r["felt"];

if (strlen($felt) >= $tegn) { // hvis tegn i $felt er lig med eller over $tegn så forkort
$felt = substr("$felt", 0, $tegn); // finder tegn 0 til $tegn
$short = $felt . "..."; // sætter ... bagefter det forkortede
echo "$short"; // udskriver det forkortede
} else { // ellers hvis $felt er under $tegn så bare udskriv det hele
echo "$felt";
}

}
?>
Avatar billede gil-galad Nybegynder
04. august 2004 - 22:36 #29
http://spiff.users.whitehat.dk/test.php  Sådan?  Nu tager en de første 200 tegn fra selve artiklen og ligger dem sammen med linket til artiklen?
Avatar billede Slettet bruger
05. august 2004 - 11:26 #30
Ja det ser fint ud, så skal jeg bare have koden og få afregnet !
Avatar billede gil-galad Nybegynder
05. august 2004 - 19:40 #31
ok:

<?php
$id = $_GET["id"];
$tegn = "200";

require("filer/connect.php");

if ($id){

$index = mysql_query("SELECT overskrift,tekst FROM opskrifter WHERE id = '$id'") or die(mysql_error());
if( $row = mysql_fetch_array($index) ) {
  echo "  <h1>".$row['overskrift']."</h1>".$row['tekst']."<div style=\"position: absolute; top: 10px; right: 10px;\"><a href=\"#\" onClick=\"window.close();\">Luk vinduet</a></div>";
}else{echo "<br><br>En fejl er opstået. Kontakt Webmaster.";}

}else{

echo "<h1>Vælg en artikel</h1><ul>";
$res = mysql_query("SELECT * FROM opskrifter ORDER BY id") or die(mysql_error());
while($row = mysql_fetch_array($res) ) {
  echo "<li><a href=\"test.php?id=".$row['id']."\" target=\"_blank\">".$row['overskrift']."</a><br>";
 
  if (strlen($row['tekst']) >= $tegn) {
    $row['tekst'] = substr($row['tekst'], 0, $tegn);
    $short = $row['tekst'] . "...";
    echo $short;
  }else{
    echo $row['tekst'];
  }
  echo "</li>";
}echo "</ul>";}

mysql_close();
?>
Avatar billede Slettet bruger
05. august 2004 - 20:27 #32
Ok - men tror du jeg kan finde ud af at lave connect.php, og lave et upload til database etc.

Jeg prøver, men er noget skeptisk på min egen formåen

hvad med point for dit arbejde
Avatar billede gil-galad Nybegynder
06. august 2004 - 00:49 #33
connect.php er bare så du ikke behøver at skrive dette:

$connection = mysql_connect("localhost", "brugernavn", "kodeord") or die(mysql_error());
mysql_select_db("databasenavn", $connection) or die(mysql_error());

hvergang du skal bruge din database.  Du laver bare en fil der hedder connect eller hvad du nu vil kalde den, og smækker ovenstående kode ind. Du ska lige ændre databasenavn, kode, brugernavn

Hvad mener du med upload til database?
Avatar billede gil-galad Nybegynder
06. august 2004 - 00:52 #34
Hvis du mener at sætte tekster ind i databasen osv. vil jeg anbefale dig, hvis du har mulighed for det, at bruge programmet PHPMyAdmin som er et WYSIWYG-database program som gør det noget lettere at administrere sådan en.

Du henter bare programmet her, http://www.phpmyadmin.net/home_page/ ligger det ind på din webserver (hvis du bruger webhotel kan det godt være det allerede ligger på din server)

Ellers følger du bare instruktionerne her: http://www.webcafe.dk/artikler/databaser/phpmyadmin/
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