Avatar billede rasmusc Nybegynder
31. oktober 2003 - 22:05 Der er 12 kommentarer og
1 løsning

links og teksformattering

Hejsa,

Jeg skal lave en side med madopskrifter - vha. php og mysql. Jeg har godt
styr på html og css og jeg har fået færten af php og mysql. Nuvel - jeg har
lige et par spørgsmål:

Spørgsmål 1- tekstformattering:
Et felt i tabellen med opskrifter hedder intro. Der er en tekst på en
håndfuld linjer. Hvis noget af den teks skal formatteres med f.eks lidt fed
tekst ... hvordan gør man så det? Skal jeg skrive teksten i f.eks word eller
wordpad og så importere den? Beholdes formatteringen så når jeg henter
teksten ud af tabellen?

Spørgsmål 1a - mere tekstformattering:
Der er også et felt med navnet Indgredienser; der kunne jo stå: "1 citron, 2
laksebøffer, lidt olie, forårsløg, ½ aubergine". Når indholdet af det felt
skrives ud skal det jo nok ske i en liste-opstilling. Hvordan klarer man
det? Hvordan skal jeg sepererer de forskellige indgredienser? Dels for
udskriftens skyld - dels mht. til søgning i tabellen?

Spørgsmål 2 - links:
På forsiden er det blandt andet to links - det ene hedder "fisk" og det
andet "salat". "Fisk" linker til siden fisk.php og denne side har cirka
dette indhold: Hvis alle poster i tabellen hvor der står Fisk i feltet
"kategori". Dette giver så en liste ... så langt så godt. Denne liste kunne
bestå af: Laksebøffer i ovnen, tun på panden, salat med røget hellefisk.
Disse linjer skal jo så fungere som et link, der linger til en side, der
f.eks har følgende indhold: Vis alt hvad der står i posten "salat med
hellefisk". Hvordan gør man egentlig det i praksis? Jeg kan godt finde ud at
få udskrevet listen og alle posterne ... men så heller ikke mere. Og så et
tillægsspørgsmål: "salat med røget hellefisk" kunne jo også rubriceres under
"salat" - kan jeg bare skrive både Fisk og Salat i mit kategirifelt?

Spørgsmål 3 - avancerede links:
Det kunne jo tænkes, at der til opskriften Laksebøffer i ovnen skal laves en
sovs - den sovs findes allerede i tabellen - hvordan linker man til den så
den vises sammen med opsrkiften på Laksebøffer? Er der en anelse for
avanceret - og bør jeg derfor lave "komplette opskrifter" med både sovs,
tilbehør og så videre ..?

Ja det var en lang sag - håber på overbærenhed og pædagogisk tålmodighed .

ras
Avatar billede olebole Juniormester
01. november 2003 - 03:28 #1
<ole>

At formattere tekst i Word er en skidt idé. Word er i det hele taget en skidt idé  :)
Det program er mere eller mindre en browser, hvor du importerer en bunke MS-proprietær CSS-formattering ved copy/paste.

Afhængig af, hvordan du plejer at lave HTML-sider, kan du vælge flere løsninger:
1. 'Håndskriver' du normalt din HTML i en tekst-editor (som NotePad), kan du blot bruge alm. HTML-formattering (<b></b>, <i></i> osv.) i et textarea.

2. Skriver du i Browse-mode (eller, hvad det nu hedder) i en WYSIWYG-editor, kan du først formattere teksten, som vanligt - og derefter 'vende' dokumentet om på kode-siden. Der kan du kopiere koden og sætte den ind i et textarea.

3. Du kan bruge en WYSIWYG-editor til brug i browseren - men det kræver nok, du kan noget mere kodning/scripting, end det måske er realistisk (?).

Lister vil du også kunne lave på disse måder. Du ender op med noget:

<ul>
  <li>1/2 Citron</li>
  <li>2 Laksebøffer</li>
</ul>

-agtigt noget i databasen.

Denne form for 'simpel' HTML er det meget almindeligt at lægge i databasen - hvilket gør udskrivningen yderst uproblematisk  :)
Vedr. søgning giver dette ikke anledning til nævneværdige problemer.

/mvh
</bole>
Avatar billede olebole Juniormester
01. november 2003 - 03:40 #2
Du kan liste dine opskrifter på denne måde:

$sql = "SELECT * FROM `opskrifter` WHERE `kategori` = 'fisk'";
$res = mysql_query( $sql ) or die ( mysql_error() );
$inx = 1;
while ( $row=mysql_fetch_assoc($res) ) {
    $liste .= $inx.": <a href=\"".$row["url"]."\">".$row["navn"]."</a><br>\n";
    $inx++;
}
print $liste;

Blot et eksempel, du selv kan udbygge  :)
Avatar billede roenving Novice
01. november 2003 - 03:46 #3
Og du kan måske få noget mere om css ud af:

http://html.dk/tutorials/css/ -- bla. lektion6.asp, som dog har en fejl på rækkefølgen af pseudo-classes, den _skal_ være :link:visited:hover:active ...
Avatar billede olebole Juniormester
01. november 2003 - 03:46 #4
En bedre løsning er nok at have et tal som kategori - og så en ekstra tabel, der har de samme tal og deres benævnelser (fisk, salat, brød, osv) kædet sammen. Det giver en 'slankere' database - og hurtigere søgninger.
Avatar billede olebole Juniormester
01. november 2003 - 04:44 #5
Endelig fyraften ... skal vi så lige lave det her færdigt  :)

Du dropper at have en kategori i tabellen 'opskrifter', men laver en ny tabel, der hedder 'kategorier' med to felter: 'id' og 'kategori'.
Når du opretter en opskrift indsætter du opskriften i 'opskrifter'. Opskriftens id indsætter du i 'kategorier', sammen med kategorien ... f.eks. 'fisk'. Tilhører opskriften også 'salat', indsætter du også opskriftens id i 'kategorier' med kategorien 'salat' - hvorefter dette opskrifts-id er knyttet til begge kategorier.

Nu kan du select'e med et kald à la dette:

$sql = "SELECT opskrifter.`id`,opskrifter.`url`,opskrifter.`overskrift` FROM `opskrifter`,`kategorier` WHERE kategorier.`kategori` = 'fisk' AND opskrifter.`id` = kategorier.`id`";
$res = mysql_query( $sql ) or die ( mysql_error() );
$inx = 1;
while ( $row=mysql_fetch_assoc($res) ) {
    $liste .= $inx.": <a href=\"".$row["url"]."\">".$row["overskrift"]."</a><br>\n";
    $inx++;
}
print $liste;

Hvad det sidste spm. angår, tror jeg, jeg ville skrive linket direkte ind i opskriften (med besværlig vedligeholdelse til følge), eller lave opskrifter med sovs og andet tilbehør.

Du kan godt lave linkstyring, men skal det blive godt, har jeg på fornemmelsen, det er for svært for dig endnu  :)
/mvh
Avatar billede olebole Juniormester
01. november 2003 - 04:50 #6
Du kan få fat i opskriftens id, lige efter du har sat ind i databasen:

$sql = "INSERT INTO ...... ";
mysql_query( $sql ) or die ( mysql_error() );
$id = mysql_insert_id();

Det er så det id, der bliver tilføjet i 'opskrifter' - forudsat, du har et id-felt med autoincrementering - og som skal tilføjes i 'kategorier' med de tilhørende kategorinavne.

/go'nat  :)
Avatar billede rasmusc Nybegynder
01. november 2003 - 19:00 #7
Hejsa og tak for hjælpen. Jeg har læst en del og spurgt hist og pist og så vidt jeg kan forstå skal jeg lave 3 eller 4 tabeller og lave nogle relationer, der fpår hele skidtet til at køre sammen.

Nu er jeg kun sådan lige begyndt at snuse til php, så jeg tror jeg skifter hest og laver en simpel udgave (til en start).

Jeg laver en tabel med nogenlunde følgende indhold:
id, overskrift(navn), kategori, ingredienser, fremgangsmåde, ingredienser_tilbehoer, fremgangsmåde_tilbehoer,

Men jeg er stadig i tvivl om opstillingen af ingredienser. Hvis der nu i feltet står: 1 rødløg, 1 æble, 2 fisk, persille, citron

Hvordan får jeg så inholdet af dette felt udskrevet i listeform? Er det bedst at indtastes html-formatteret? Og hvordan gøres dette hvis jeg laver en eller anden form for indtastningsformular? Eller Skal jeg hellere lave 10 felter med navnene ingrediens_1, ingrediens_2 osv ... og hvordan takler jeg det når der så f.eks. kun står noget i de første 8 felter?

Linksene har jeg stadig lidt bøvl med. En side kunne hedde Fisk.php ... der listes alle opskrifter i kategorien Fisk ... hver opskrift skal jo så blive til et link ... er det noget i stil med?

<a href="opskrift.php?navn=[php-kode: skriv id fra tabelposten]>[php-kode:
skriv overskrift fra tabelposter hvor der står Fisk i feltet kategori]</a><br>

opskrift.php er så en skabelon ...

Og så et tillægsspørgsmål: Hvordan laver jeg et funktionsbibliotek? Altså en fil med de meste brugte funktioner (åbne forbindelse til databasen mv) ... hvad skal den fil hedde og hvor skal den ligge? Jeg tror jeg ved hvordan indholdet skal se ud.

Jeg laver det iøvrigt i html-kit ...

takker,
ras
Avatar billede olebole Juniormester
02. november 2003 - 02:05 #8
Hvordan du lister afhænger af, hvordan der opdateres - om det er dig eller dine brugere - og hvordan det skal foregå.

Hvordan du skriver links afhænger af, hvordan din DB-query ser ud.

Et funktionsbibliotek kan du f.eks. lave i en fil, der hedder 'funcs.php':

<?
function test() {
  $bla = "noget";
  return $bla;
}
?>

I din fil skriver du så:

<?
include( "funcs.php" );

print "Her skriver vi ";
print test();
print " tekst :)";
?>

/mvh
Avatar billede rasmusc Nybegynder
02. november 2003 - 11:31 #9
jo - men  hvor skal filen der indeholder <? function test () {bla bla bla}?> placeres? Er det ligemeget bare jeg require den i toppen af dokumentet med sti til filen? OG den slal vel hedde .php ikke sandt?

Hvordan skriver man i øvrigt ja/nej til et felt i tabellen vha af en check-boks? Altså jeg sætter default til at være NEJ i tabellen, en hakkes der et flueben i boksen skal den skrive JA ... hvordan gør man det?

ras
Avatar billede olebole Juniormester
02. november 2003 - 17:31 #10
Filen skal - som tidligere nævnt - hedde '.php' til 'efternavn' ... f.eks. 'funcs.php'  ;o)
Den skal blot ligge under samme domæne - og du skriver stien til filen i din include-statement:
  include( "sti/til/fil/funcs.php" );

Vedr. checkbox, kan du skrive:
  <input type="checkbox" name="vil_du_det">

og spørge på serveren:

if ( isset($_POST["vil_du_det"]) && $_POST["vil_du_det"]=="on" ) {
  // Fluebenet er checket og der kan indsættes et 'Ja'
}

I øvrigt er det mere effektivt at indsætte '0' eller '1'  :)
/mvh
Avatar billede rasmusc Nybegynder
03. november 2003 - 22:51 #11
Oki doki ... jeg hr nu fået funktionen til at virke. Hvad angår checkboksen har jeg lavet den helt simple ... value="ja" ... ;-)

1/0 fylder vel mindre, men i en tabel med et par hundrede poster gør det vel ingen forksel ipraksis.

takker

ras
Avatar billede olebole Juniormester
03. november 2003 - 23:20 #12
1. Jamen, den er skam også ligeså god  :)
2. Overhovedet ikke noget, du kan mærke - men hav det i baghovedet, når du skal lave det næste projekt, hvor du skal lave en mother af en base  ;o)

Et par andre ting for effektiviteten:
1. Select ikke med *, hvis du skal bruge færre felter
2. Skal du kun bruge én række i en 'SELECT ... WHERE ...', så sæt 'LIMIT 1' (gælder også for 'UPDATE ... WHERE ...'). Derved undgår du, der ledes videre ned gennem tabellen, efter handlingen er udført.
3. Brug index på dine kolonner i databasen

Læs meget gerne mere om MySQL (og index) på:
  http://www.mysql.com/doc/en/index.html
og brug søgefeltet, øverst til venstre ... hører afgjort hjemme i 'Favorites' - sammen med http://www.php.net/ ;o)

Når du skriver ud, kan du gøre afviklingen af en listning meget hurtigere (og aflaste serveren), hvis du fylder strenge ind i en buffer og skriver bufferen ud til sidst:

$res = [SQL_SELECT_QUERY];
while ( $row=mysql_fetch_assoc($res) ) {
  $buffer .= "<div>".$row["id"].": ".$row["navn"]."</div>";
}
print $buffer;

I stedet for at skrive ud inde i while-løkken.
/mvh
Avatar billede olebole Juniormester
03. november 2003 - 23:21 #13
... syntes lige, du skulle have lidt mere for pointene - det var mange!  :)
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