één bestand voor website en dan rest inlezen met parameter

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan R

Jan R

12/05/2013 08:30:42
Quote Anchor link
Hoi,

Ik ben een beetje aan het spelen/prutsen met een website. Ik zou willen weten of ik juist bezig ben?
Ik heb dus een standaard pagina met een beetje divs voor titels kop menu enz. Alles werkt zoals ik wil maar is deze werkwijze correct?
Moet ik eventueel andere extensie dan txt gebruiken enz?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<!DOCTYPE HTML >
<html lang="NL">
    <head>
        <title>
            website titel
        </title>
        <style>        
            html, body {
                    height: 100%;
            }

            #divHeader{
                 height: 100px;
                 background-image: url("banner.jpg");
                 background-size:100% 100%;
                 background-repeat:no-repeat;
            }

            #divContent{
                    min-height: 100%;
                    height: auto !important; /*Cause footer to stick to bottom in IE 6*/
                    height: 100%;
                    margin: 0 auto -100px; /*Allow for footer height*/
                    vertical-align:bottom;
                    background-color: lightblue;
            }

            #divFooter, #divPush{
                    height: 100px; /*Push must be same height as Footer */
                    background-color: #41fa47;
                    position: fixed;
                    bottom: 0px;
                    left: 0px;
                    width: 100%;
            }
            
            #divMenu {
                background-color: red;
                width: 150px;
                float: left;
            }
            
            #divBody {
                padding: 0 0 0 160px;
                height: 100%;
            }            
        </style>
    </head>
    <body>
    
        <div id="divContent">
            <div id="divHeader">
                    <!-- Geen tekst dit is een foto -->
            </div>
            <div id="divMenu">
                <a href="index.php">Home</a><br>
                <a href="index.php?page=clublokaal">Clublokaal</a><br>
                <a href="index.php?page=fotopagina">Fotopagina</a><br>
                <a href="index.php?page=modelbaan">Modelbaan</a> <br>
                <a href="index.php?page=contact">Contact</a><br>
                <a href="index.php?page=links">Links</a><br>
                <a href="index.php?page=lidworden">Lid worden?</a><br><br>
                <a href="/adressen">Leden lijst</a>
            </div>
            <div id="divBody">
                <?php
                    if (isset($_GET['page'])){$pagina=$_GET['page'];}else{$pagina='home';}
                        $pagina .='.txt';
                        if ($fp = @fopen($pagina, 'r+'))
                        {

                            /* Lock log file from other scripts */
                            $locked = flock($fp, LOCK_EX);
                            /* Lock successful? */
                            if ($locked){$tekst=fread($fp, filesize($pagina));}
                            /* Release file lock and close file handle */
                            flock($fp, LOCK_UN);
                            fclose($fp);
                            
                            echo $tekst;                            
                        }

                        else{echo 'Fout: Deze pagina werd niet gevonden';}
                ?>

                <!-- <div id="divPush"></div> -->
            </div>
            <div id="divFooter">
                    &copy; web.be<br>
                    Bedankt op onze site te bezoeken<br><br>
                    We hopen zo snel mogelijk een nieuwe site actief te hebben
            </div>
        </div>
    </body>
</html>
Gewijzigd op 12/05/2013 08:31:48 door Jan R
 
PHP hulp

PHP hulp

17/11/2024 16:27:29
 
Goeny Goegoe

Goeny Goegoe

12/05/2013 08:51:50
Quote Anchor link
Maak je gebruik van .txt files voor de inhoud van je site?
En hoe wil je de opmaak van je tekst opslaan? Ik neem aan dat je gewoon html tags gebruikt in de .txt files. Maar waarom dan niet gewoon .html bestanden?

Voor de rest ziet het er in mijn ogen wel ok uit.
Persoonlijk zou ik iets meer verschillende niveau's <div> gebruiken. Bijvoorbeeld een div #container in je #divBody. Op die manier kan je iets makkelijker verschillende delen van de site stylen m.b.v css.

Ook zou ik de opmaak (<style>) in een aparte file opslaan en deze in de head van je pagina opvragen.

En het menu zou ik opmaken in een <ul><li> formaat en deze vervolgens ook in het css bestand stylen.
Daarnaast zou ik het volledige menu ook opslaan in een apart .php bestand en deze includen in je pagina. Op die manier hoef je maar 1 bestand te wijzigen als je bijvoorbeeld een aanpassing wilt maken in je menu.

Maar zoals gezegd... Ik zou het persoonlijk op een iets andere manier aanpakken maar ik vind het er wel ok uit zien zoals je het nu hebt gedaan.
 
Eddy E

Eddy E

12/05/2013 09:09:42
Quote Anchor link
Ik zou je PHP-stuk zo doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
    // welke pagina bekijken we?
    $pagina = (isset($_GET['page']) AND is_file($_GET['page']).".txt") ? $_GET['page'] : 'home';

    // open daarvan de inhoud. Niet zo moeilijk doen, gaat het ook bijna nooit fout
    $tekst = file_get_contents($pagina . '.txt');

    // het bestand bestaat, het is een txt, maar toch kon PHP het niet openen...
    if($tekst === false)
    {

        echo 'Fout: Deze pagina werd niet gevonden';
    }

    // nu wel
    else
    {
        // bewerk eventueel nog wat dingen.
        echo $tekst;
    }

?>


Daarnaast klopt wat Goeny zegt inderdaad (bijna) helemaal.
Als je toch maar 1 pagina-website hebt kan je daar net zo goed je menu ook in zetten. Dat extern plaatsen is handig als je toch meerdere (verschillende) pagina's krijgt. Maar als dat niet zo is, vooral niet doen.
En <ul>... in mijn optiek is dat nergens voor nodig. Gewoon een paar linkjes. Dat het misschien een 'lijst' van linkjes is is jammer. Dit werkt ook en is perfect sematisch.
 
Jan R

Jan R

12/05/2013 11:35:43
Quote Anchor link
Beiden bedankt.
De style ging normaal gezien toch in een apart bestand komen. Het is beter samen dan kreeg ik hierover misschien ook nog commentaar. :)
Ik heb ook een style voor het afdrukken. Welke sommige overbodige zaken niet afdrukt.

Ik heb geen html genomen omdat foefelaars dan ook niet weten hoe ze noemen.

De php code is op deze manier wel flink korter

Bedankt Jan
 
Wouter J

Wouter J

12/05/2013 13:45:46
Quote Anchor link
HTML:
- Navigatie is een lijst van linkjes die allemaal bij elkaar horen. Ze moeten dus in een lijst. Dat is waar HTML voor gemaakt is, zeggen 'ach het is een lijst, maar dat maakt nu even niet uit' is vreselijk, want het maakt HTMl wel uit. HTML is gemaakt op aan te geven wat iets is, dus als iets iets is moet je dat ook aangeven.
- Als eerste element in de head altijd <meta charset=utf-8> (of een andere encoding)
- gebruik gewoon #header en niet #divHeader

Qua PHP, ik heb ooit dit scriptje gemaakt: http://www.phphulp.nl/php/forum/topic/paginas-includen/85274/#608793 Misschien leuk voor wat inspiratie.

Verdere dingen:
- script is lek, je kan nu elk bestand wat je maar wilt opvragen. Dat betekend ook bestanden die je niet wilt opvragen.
- gebruik gewoon file_get_contents
- check eerst of bestand aanwezig is. Fouten onderdrukken moet je noooit gebruiken
 
Eddy E

Eddy E

12/05/2013 14:52:11
Quote Anchor link
Wouter: mijn code kijkt ook nog of het een .txt-bestand is. En dan kan je die inderdaad wel openen (en geen PHP te voorschijn krijgen).
Daarbij, gebruik ipv <div id="header"> gewoon <header>...

Over die lijst... echt onnodig. Voeg gerust 2 elementen extra per <a> toe, terwijl ze niets toevoegen. Niet voor de werking, niet voor de correctheid, niet voor opmaak... met <p rol="nav"> heb je hetzelfde.
 
Ozzie PHP

Ozzie PHP

12/05/2013 16:38:27
Quote Anchor link
Eddy E op 12/05/2013 14:52:11:
Over die lijst... echt onnodig. Voeg gerust 2 elementen extra per <a> toe, terwijl ze niets toevoegen. Niet voor de werking, niet voor de correctheid, niet voor opmaak... met <p rol="nav"> heb je hetzelfde.

Eddy, navigatie bestaat uit een lijstje met links. Het is dan niet meer dan logisch dat je daar een lijst voor gebruikt, en niet zoals jij stelt een paragraaf. We kunnen ook html pagina's opmaken met tabellen en dat zal ook best werken, maar dat wil niet zeggen dat het de juiste manier is.
 
Wouter J

Wouter J

12/05/2013 16:49:29
Quote Anchor link
Eddy, het voegt niks toe aan hoe de site eruit ziet. Waar het wel wat aan toevoegt is de semantiek van een element. Back in the good ol' days is HTML geschapen om tekst een betekenis te geven. Mensen kunnen zo zien dat die blauwe tekst bovenaan een topictitel is en dat die in kleur wisselende blokken reacties en dat de blauwe tekst naast de reactie de naam van de schrijver van die reactie is. Een computer kan dat niet.
Daarom hebben ze HTML geschapen, je kan met een h1 element aangeven dat het de topic titel is. Je kan doormiddel van article elementen aangeven dat het allemaal losse reacties zijn. Je kan met een anchor element aangeven dat dat de naam van de schrijver is. Daarnaast kun je door meerdere elementen in elkaar te zetten aangeven dat ze bij elkaar horen.

Dat noemen we semantiek. Je geeft tekst een betekenis, zodat de browser weet wat het is. Tegenwoordig is er CSS bij gekomen. Deze gebruikt de elementen om te stijlen, maar dat betekend niet dat de elementen nu ineens in opdracht van CSS staan. De elementen hebben nog steeds als hoofddoel dat je semantiek geeft aan een bepaald stukje tekst.

Als we nu dit menu nemen. Als we het zonder list doen, zoals je nu hebt, heeft het de betekenis van een zin met heel veel links. Zoals deze zin. Maar het is helemaal geen zin, het is een lijst met linkjes. Daarom zeggen we tegen de browser: Kijk dit is een lijst met linkjes. Dan krijgen we:

En dat is wat we willen aangeven!

Stiekum zijn we altijd allemaal bezig met semantiek. Waarom maak je niet een hele pagina op met alleen maar <html> elementen? Kan best, maar dat doen we niet omdat dat element niet die betekenis (semantische waarde) heeft.
Hetzelfde geldt voor een menu, natuurlijk kan het, maar we doen het niet omdat het niet de juiste betekenis heeft.

En als laatst: <div id=header> kun je niet vervangen met <header>, maar met <header id=header>. Er komen veel meer header elementen in een pagina voor, dus die kunnen we nooit zo generiek maken.
Gewijzigd op 12/05/2013 16:50:44 door Wouter J
 
Eddy E

Eddy E

12/05/2013 21:12:04
Quote Anchor link
Over dat <header id="header">.... ja kan.
Net zoals je ook meerdere <body>'s kan hebben. Dat doe je ook niet.
Een standaard-pagina (zoals het hier waarschijnlijk om gaat gezien hij .txt-bestanden gaat inladen) heeft 1 <header> en 1 <footer> etc.
<article> kan vaker voorkomen inderdaad.

Maar goed, blijkbaar is dit gangbaar:

<nav id="navigatie">
<ul>
<li>
<a href="#" title="Wat zou het doen, denk je?">Home</a>
</li>
<li>
<a href="#" title="Opent de tweede pagina">Twee</a>
</li>
<li>
<a href="#" title="Link naar pagina drie">Drie</a>
</li>
</ul>
</nav>

Ja, werkt.
Met role="nav" (of gewoon <nav>) weet de browser ook dat het om een (lijst van) navigatie-dingen gaat.
Gewijzigd op 12/05/2013 21:12:30 door Eddy E
 
Wouter J

Wouter J

12/05/2013 21:26:53
Quote Anchor link
Elk sectioning element heeft een ieder. De enige header waar men vroeger over sprak was die van het body element, omdat we toen geen andere sectioning elementen hadden. Tegenwoordig hebben we die wel, denk aan section, article, aside. Dus tegenwoordig is het zeer gangbaar dat er meer headeres en dis meer header elementen voor komen.

Zie ook bijv. http://html5doctor.com/designing-a-blog-with-html5/
 
Ozzie PHP

Ozzie PHP

12/05/2013 21:34:24
Quote Anchor link
Edit: even Wouter z'n tablet touchscreen corrigeren ;)

Wouter J op 12/05/2013 21:26:53:
Elk sectioning element heeft een ieder header. De enige header waar men vroeger over sprak was die van het body element, omdat we toen geen andere sectioning elementen hadden. Tegenwoordig hebben we die wel, denk aan section, article, aside. Dus tegenwoordig is het zeer gangbaar dat er meer headeres headers en dis dus meer header elementen voor komen.

Zie ook bijv. http://html5doctor.com/designing-a-blog-with-html5/
 
Willem vp

Willem vp

12/05/2013 21:47:35
Quote Anchor link
Wouter J op 12/05/2013 21:26:53:
De enige header waar men vroeger over sprak was die van het body element, omdat we toen geen andere sectioning elementen hadden. Tegenwoordig hebben we die wel, denk aan section, article, aside.

Sorry, maar ik vind dit een hoog wauwel-gehalte hebben. "Vroeger hadden we geen andere sectioning-elementen." Yeah, right. "Vroeger" spraken we HTML4, en die kende niet eens een header-element. Dat, en die hele sectioning-meuk, is toegevoegd in HTML5 en dat is nog niet eens een officiële standaard.

Dus waar hebben we het nu over? We discussiëren over het niet gebruiken van elementen die nog niet bestonden in een versie van HTML die eigenlijk nog niet bestaat. Lekker zinvol.

En, for the record, als je naar de HTML5 Candidate Recommendation kijkt, dan staat daar keihard in beschreven dat je in een <nav>-sectie niet per se een list hoeft te gebruiken. Menu's op basis van een ul-element zijn zóóó HTML4... ;-)
Gewijzigd op 12/05/2013 21:49:26 door Willem vp
 
Wouter J

Wouter J

12/05/2013 21:54:08
Quote Anchor link
Quote:
Dus waar hebben we het nu over? We discussiëren over het niet gebruiken van elementen die nog niet bestonden in een versie van HTML die eigenlijk nog niet bestaat. Lekker zinvol.

Waarschijnlijk heb je mijn post verkeerd begrepen. Ik had het over de header als semantische waarde en niet als element. Dus ik had het over <header> en bijv. <div id=header>.

Quote:
En, for the record, als je naar de HTML5 Candidate Recommendation kijkt, dan staat daar keihard in beschreven dat je in een <nav>-sectie niet per se een list hoeft te gebruiken. Menu's op basis van een ul-element zijn zóóó HTML4... ;-)

Stiekum hoop ik dat je het wel gewoon door hebt, maar hier niet durft te zeggen. Maar als je de RC leest zie je duidelijk dat ze het dan niet over een lijst met linkjes, maar een alinea met text met daarin de linkjes naar pagina's. Je merkt al, dat is totaal irrelevant voor deze discussie.
 
Willem vp

Willem vp

12/05/2013 23:03:15
Quote Anchor link
Wouter J op 12/05/2013 21:54:08:
Quote:
Dus waar hebben we het nu over? We discussiëren over het niet gebruiken van elementen die nog niet bestonden in een versie van HTML die eigenlijk nog niet bestaat. Lekker zinvol.

Waarschijnlijk heb je mijn post verkeerd begrepen. Ik had het over de header als semantische waarde en niet als element. Dus ik had het over <header> en bijv. <div id=header>.

Ah, dat verklaart inderdaad het een en ander. Ik was in de veronderstelling dat je doelde op de <head>-sectie, maar omdat die een compleet andere functie heeft kwam je verhaal wat vreemd op me over.

Quote:
Quote:
En, for the record, als je naar de HTML5 Candidate Recommendation kijkt, dan staat daar keihard in beschreven dat je in een <nav>-sectie niet per se een list hoeft te gebruiken. Menu's op basis van een ul-element zijn zóóó HTML4... ;-)

Stiekum hoop ik dat je het wel gewoon door hebt, maar hier niet durft te zeggen. Maar als je de RC leest zie je duidelijk dat ze het dan niet over een lijst met linkjes, maar een alinea met text met daarin de linkjes naar pagina's. Je merkt al, dat is totaal irrelevant voor deze discussie.

Aangezien de <nav> semantisch gezien al aangeeft dat de inhoud te maken heeft met navigatie, vind ik een <ul> daarin geen toegevoegde semantische waarde hebben. Een losse verzameling links is wellicht niet handig, maar als je die wilt opmaken kun je dat net zo goed doen met een zooitje <span> of <div>-elementen. Semantisch zegt dat nog altijd meer dan een <ul>-menu dat níet in een <nav> staat. Wanneer de links weinig met elkaar te maken hebben is het wellicht juist semantischer om het niet in een <ul> te doen, omdat dat suggereert dat er samenhang in de links zit. ;-)

In mijn optiek stammen ul-menu's uit HTML4, waar het semantisch gezien niet goed op een andere manier kon worden vormgegeven. Nu dat wel kan, is de semantische noodzaak om ze te gebruiken niet meer aanwezig. De reden om nu al dan niet voor ul te kiezen lijkt me dan ook meer opmaaktechnisch of (huiver) een ingesleten gewoonte.
 
Wouter J

Wouter J

12/05/2013 23:11:06
Quote Anchor link
Willem, ik ben het bijna helemaal met je eens :) Alleen merk op dat we deze discussie begonnen met een div element met #nav. Dat is heel wat anders dan een navigatie element. In dat geval zijn lijsten zeker wel nodig voor de juiste semantische waarde.

Enne, html opmaaktechnisch schrijven is voor mij echt een no-go...
 
Willem vp

Willem vp

12/05/2013 23:32:49
Quote Anchor link
Wouter J op 12/05/2013 23:11:06:
Enne, html opmaaktechnisch schrijven is voor mij echt een no-go...

Euh... HTML is toch een opmaaktaal? ;-)
 
Wouter J

Wouter J

12/05/2013 23:37:32
Quote Anchor link
Waarbij opmaak, eigenlijk al markup, een kwestie van ongelukkige terminologie is...

Quote:
A (document) markup language is a modern system for annotating a document in a way that is syntactically distinguishable from the text. The idea and terminology evolved from the "marking up" of manuscripts, i.e., the revision instructions by editors, traditionally written with a blue pencil on authors' manuscripts.
 
Ozzie PHP

Ozzie PHP

12/05/2013 23:53:38
Quote Anchor link
Om het even simpel te houden... met html stel je secties in zoals kopjes en alinea's. Met css versier je de boel, bepaal je het lettertype, geef je tekst een kleurtje enz.

Eerst zorgen dat je pagina een logisch samenhangend geheel is... dit doen we via html.

Daarna pas gaan we de boel versieren / opleuken met css.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.