20 berichten aan het bekijken - 1 tot 20 (van in totaal 20)
  • Q:
    Bijdrager
    TijhofGraphics

    php include site, met html pagina’s met div’s : probleem?

    Hoi,

    Ik ben op moment een website aan het maken waarvan de basis ligt in HTML&CSS en de layout(index) in php(includes)

    de index.php:
    [code:1:6910a9299f]
    <?php
    if ($lang=="") {
    $lang="nl";
    }
    if ($lang=="nl") {
    include "nl_index.php";
    }
    if ($lang=="en") {
    include "en_index.php";
    }

    ?>
    [/code:1:6910a9299f]

    de nl_index.php(en_index is op die 2 letters na overal het zelfde):
    [code:1:6910a9299f]
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head></head>
    <body>

    <center>
    <table width="744">
    <tr><td>
    <?
    include "teksten/nl/header.php";
    ?>
    </td></tr>
    </table>
    </center>

    <center>
    <table width="744">
    <tr><td>
    <?php
    $page = $_GET[’cat’];
    $page = $_GET[’page’];

    // default
    if ($cat=="") {
    $cat="informatie";
    }
    if ($page=="") {
    $page="home";
    }

    $page = "teksten/nl/".$cat."/".$page.".html";

    // …

    //
    $b=file_exists ($page);

    if ($b) {
    include $page;
    } else {
    include "teksten/404error.html";
    }

    ?>
    </td></tr>
    </table>
    </center>

    <center>
    <table width="744">
    <tr><td>
    <?
    include "teksten/nl/footer.php";
    ?>
    </td></tr>
    </table>
    </center>

    </body>
    </html>
    [/code:1:6910a9299f]

    De home pagina doet het wel goed, want die bevat geen div’s waarvan de plaats word bepaald, wel div’s waarvan de inhoud-kleur enzo van word bepaald via een CSS, maar geen position DIV’s.
    Maar… alle andere pagina’s heb ik gemaakt hebben WEL div’s en bovenin elke pagina staat zeg maar, vanaf links zoveel px, vanaf boven zoveel px, etc. etc,
    dit is opzich geen probleem, maar als ik ze include in een php pagina waar ook 2 andere bestanden staan, dan gaat alles vanaf HELEMAAL linksbovenin en niet vanaf waar de include begint.
    Op moment staat de site nog op een testarea:
    http://tijhofgraphics.nl/testarea/4/index.php
    Menu staat onder het logo, met mouse-over submenu’s.

    De oude versie staat op http://www.vhth.nl , hier ging het met frames en dan gaat het natuurlijk weg goed.
    Hoe kan ik dit probleem oplossen?

    Bij voorbaat dank,
    Timo

    Bijdrager
    aerosoul

    ten eerste.. probeer je php en je html te scheiden

    ten tweede… waar include jij je css?

    Bijdrager
    TijhofGraphics

    1:
    Alle content is in HTML+CSS
    En om de menu’s, header,footer,mainpage bij elkaar te brengen gebruik ik php, ALLEEN in de index pagina dus.
    Maar als jij iets anders bedoeld…
    2:
    CSS includen?
    Als je bedoeld dat boven elke html pagina staat <style text/css>…
    dat is om de div’s tte positioneren.


    Maar is het niet mogelijk om met een scriptje o.i.d. te vertellen tegen de pagina dat die div’s de pixels moeten aftellen vanaf waar hij begint.
    -Of een ander hulp middel, ik sta voor alles open, want ik ben toch op moment een nieuwe look aan het maken, dus wat dat nieuw is staat nog niet vast.

    Groetjes,

    Bijdrager
    computer space

    Ook raar:
    Je wilt CSS+XHTML gebruiken
    Je hebt positioneringsproblemen
    Je gebruikt tables
    Je koppelt geen stylesheet

    Ik mis goed div gebruik ZONDER tables en met een degelijke stylesheet.

    Je zou ook de index.php de basisstructuur van html kunnen laten bevatten inclusief head en doctypes, en alleen de content includen.

    Bijdrager
    TijhofGraphics

    Oke, euhm… doctype is inderdaad handig.
    Alleen head lijkt me lastig aangezien ik dan maar 1 vaste naam heb voor <title>
    Die geuploade is van gisteren, maar wat ik op moment heb is in de php geen head, wel doctype en <html></html>, en in de header alleen html-body, en in de content dan html-header-title-body.
    Dus dan heb ik altijd de title van de pagina waar je naar kijkt.
    Dus dat bespaart wel wat ruimte, maar dat lost het posotioneren niet op.

    Is het raar om CSS met XHTML te gebruiken? EN: Ik gebruik toch gewoon Html?
    Tabellen gebruik ik om de header,page en footer juist te zetten, of kan dit ook makkelijker?
    En in de php zet ik ook <center> zodat alles(de tabel) in het midden staan, en daardoor de rest ook.
    Stylesheet(CSS) gebruik ik nog niet veel, maar ik werk eraan om daarin de de body-bgcolor, en alle textstylen in te zetten,, dat scheelt ook weer ruimte.

    Maar alleen weet ik nog niet hoe ik dat positioneringsproblemen kan oplossen…:(

    Bijdrager
    pieter78

    Ten eerste een paar suggesties om je code wat overzichtelijker te krijgen:

    [code:1:b1ab18a491]
    <?php
    if ($lang=="en") // je was de $ vergeten voor de variabele
    include("en_index.php");
    else
    include("nl_index.php");
    ?>
    [/code:1:b1ab18a491]

    Ik kan wel snappen dat je liefst een aparte index.php maakt en daarin doorlinkt, ik doe dit zelf ook omdat ik daarbij het gevoel heb wat makkelijker nadien wijzigingen aan te kunnen brengen, zonder onderlinge links te moeten wijzigen. Als je veel bestanden dubbel hebt, loont het denk ik de moeite om twee mappen te maken, “nl” en “en” en daarnaar te verwijzen, dus bv:

    [code:1:b1ab18a491]
    <?php
    if ($lang=="en")
    $folder = "en";
    else
    $folder = "nl";
    include($folder . "_index.php");
    // als bovenstaande niet werkt, probeer dan include ("$folder_index.php"); – kan dat nooit onthouden
    ?>
    [/code:1:b1ab18a491]

    Verder moet je je afvragen of je liever met include of liever met require werkt. Ze doen in principe hetzelfde, alleen bij require is de parser wat strenger: als dit bestand niet gevonden wordt, dan laadt hij de rest van de pagina ook niet. Ik zou daar in dit geval een voorkeur voor hebben.

    Dan het tweede deel, waarin ik -of ik ben blind- geen <DIV>’s zie (overigens, als je je site meteen een beetje XHTML compliant wilt maken, moet je kleine letters gebruiken, en commando’s als <br> afsluiten met een / (dus <br />) omdat er geen closing tag komt.

    Ik stel in ieder geval voor om er geen drie tables van te maken, maar slechts eentje:

    [code:1:b1ab18a491]
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head></head>
    <body>

    <table border ="0" width="744" align="center" cellspacing="5">
    <tr><td>
    <?php
    include "teksten/nl/header.php";
    ?>
    </td></tr>
    <tr><td>
    <?php
    $page = $_GET[’cat’];
    $page = $_GET[’page’];

    // defaults
    if ($cat=="") {
    $cat="informatie";
    }
    if ($page=="") {
    $page="home";
    }

    $page = "teksten/nl/".$cat."/".$page.".html";

    // hackerscode moet hier nog komen … // welke code dan, je werkt niet met een database…

    if (file_exists($page)) {
    include $page;
    } else {
    include "teksten/404error.html";
    }

    ?>
    </td></tr>
    <tr><td>
    <?php
    include "teksten/nl/footer.php";
    ?>
    </td></tr>
    </table>

    </body>
    </html>
    [/code:1:b1ab18a491]

    Heb meteen de code een beetje ge-restyled…

    Waar heb je nu precies je DIV’s staan, en waar krijg je precies het probleem? Moet het logo weer links komen te staan, of gaat het om de menu’s?

    Oude site: http://www.vhth.nl/ (komma aan einde verwijderd, link werkte niet)

    Nieuwe site: http://tijhofgraphics.nl/testarea/4/index.php

    Groetjes,

    Pieter

    Bijdrager
    computer space

    Verwijderd

    Bijdrager
    TijhofGraphics

    @pieter78: de code wat je schreef is inderdaad wel handig.

    Die 3 tables:oops: , ja.. dat was nog van toen ik het aan het typen was, ik twijfelde of ik alles in een table moest, hebben maar nu weet ik dat zeker, dus kan het best in 1.

    Waar de div’s zijn?
    Op de homepage zijn ze niet maar als ik in het menu naar een andere willekeurge pagina gaat, en je in de broncode verder scrolled totdat je voorbij de lange header.php bent.
    Begint de pagina zelf, en dan heb je eerste style text/css, waarin staat waar alles moet komen,
    bijvoorbeeld:
    [code:1:5877f91f67]
    #D3 {position:absolute;top:48px;left:-5px;width:318px;height:100px;
    font-size:13px;color:#ffffff;font-family:arial;z-index:2;}
    #D3m {position:absolute;top:0;left:0;width:318px;height:100px;padding:10px;
    background:none;text-align:left;}
    [/code:1:5877f91f67]
    en in de body:
    [code:1:5877f91f67]
    <div id="D3">
    <div style="top: 17px; height: 442px;" id="D3m">
    <b>textextextextextext</b>
    </div></div>
    [/code:1:5877f91f67]
    de pagina’s zelf zijn wat irritant opgebouwd, maar dat komt omdat die zijn gemaakt met het achterlijke programma WEB! Pro, en die werkt nou eenmaal met divjes.
    Dat komt omdat ik de site samen met iemand anders maak, en die maakt de content zeg maar, en wel in dat programma.
    ,maargoed.
    Nu weet je dus waar de divjes zitten:lol:

    EDIT: bovenaan: @pieter78, want er kwam nog een bericht tussen van Martiniman

    Bijdrager
    TijhofGraphics

    Euhm…
    Ik ben opzich niet van plan om alle pagina’s opnieuw te maken, en dan een CMS te nemen met MySQL, het is wel een handige script, maar ik heb liever nog geen CMS.

    PS: Ik heb de aan pieter78 aangepaste geupload naar het adres.(testarea/4)

    Bijdrager
    pieter78

    Wel, misschien een heel domme vraag, maarre… kun je de content niet plaatsen middels tables?

    Ik heb zelf een hekel aan div’jes voor de positie, gebruik ze hooguit wel eens om CSS-opmaak aan een stukje tekst mee te geven. Vind dat <div> het al snel verwarrend maakt, en werk het liefste met tabellen, de meeste recht toe recht aan pagina’s – en daar lijkt die van jou net zoveel op als de pagina’s die ik zelf maak – kunnen daar prima mee uit de voeten.

    Eventueel kun je ervoor kiezen om de content toe te kennen aan PHP variabelen, en die dynamisch in de table te plaatsen.

    Of je zou een MySQL backend moeten implementeren, en de content uit de database halen. Hoeft niet per se een CMS te zijn, als je je mede-admin toegang kunt geven tot de database via PHPMyAdmin (of dat zelf eenmalig invult als de content toch niet vaak wijzigt) dan hoef je alleen maar in te geven hoe de code uitgelezen wordt. Is zeker geen must, alleen een optie: MySQL betekent niet per definitie dat je een CMS moet hebben, alleen wordt het vaak in die combinatie gebruikt.

    Hoe hard heb je die DIV’jes nodig: alleen omdat dat ene software pakket dat wil, of ook om andere redenen?

    Bijdrager
    TijhofGraphics

    Om dat het software pakket van mij vriend dat heeft, maar.. dat is het probleem niet.

    Ik zou ook de zelfde pagina kunnen maken in HTML en dan de opmaak in CSS, zonder de divjes, alleen zit ik dan met het volgende probleem.
    Zonder de divjes kan ik bijvoorbeeld dit niet doen:

    De eerste een div
    dan 2 divjes voor de afbeeldingen
    dan weer een div.
    Als ik het doe zoals de tweede dan heb ik een positionering probleem
    —-
    Als ik het zonder doe dan zou het zo worden:

    Eerste een <p>
    dan een tabel met td-alignleft en td-alignright
    en dan weer een <p>
    Maar niet zoals bij de bovenste afbeelding.
    Als ik het doe zoals de tweede dan heb ik geen positionering probleem.

    ->Als het bovenste WEL kan zonder div’s, vertel het dan, want dan ben ik waarschijnlijk van het probleem af.

    Bijdrager
    pieter78

    En als je het nu op deze manier zou doen:

    [code:1:bfaf238f2d]
    <table border="0">
    <tr>
    <td>tekst_1a</td>
    <td><img src="img1.jpg"></td>
    </tr>
    <tr>
    <td colspan="2">tekst_1b</td>
    </tr>
    </table>
    [/code:1:bfaf238f2d]

    Dan kun je het plaatje ook min of meer “in de tekst” plaatsen, moet je alleen de tekst in twee stukken opknippen. Als je dat niet wilt, kan het nog simpeler als je het plaatje ernaast plaatst:

    [code:1:bfaf238f2d]
    <table border="0">
    <tr>
    <td>tekst_1</td>
    <td><img src="img1.jpg"></td>
    </tr>
    </table>
    <table border="0">
    <tr>
    <td><img src="img2.jpg"></td>
    <td>tekst_2</td>
    </tr>
    </table>
    [/code:1:bfaf238f2d]

    Zo laat je het ook links en rechts verspringen, blijft een beetje dynamisch en strak, alleen zet je het plaatje apart in de cell. Evt kun je verticale positie nog veranderen via

    [code:1:bfaf238f2d]
    <td valign="top/middle/bottom">
    [/code:1:bfaf238f2d]

    Je bent zo wel verplicht om voor elk stukje even een nieuwe tabel te maken, omdat je anders in de knoei komt met de breedte van je cellen (je wil de tekst cell breder hebben dan het plaatje).

    Kun je daar wat mee?

    Bijdrager
    TijhofGraphics

    Ja, ik denk dat ik hier wel iets mee kan.
    Maar het word wel behoorlijk wat werk.

    Ik hou het in mijn achterhoofd als het echt niet anders kan, maar ik hoop dat er een ander oplossing is, anders in iedergeval bedankt.

    Bijdrager
    pieter78

    Oke, succes dan!

    (realiseer je wel dat wanneer je de structuur eenmaal hebt staan, je deze makkelijk kunt “vullen” met de diverse stukken tekst, evt door deze PHP variabelen te maken.. ik denk dat het wel meevalt met die hoeveelheid werk, eerlijk gezegd)

    Bijdrager
    TijhofGraphics

    nou ik heb 100 html bestandjes.
    Echte elke alinea is een aparte div, met in de <header> de plaats en de stijl bepaald.
    De htmlcode volgorde is van oud naar jong, dus als mijn kameraad een stukje bovenaan heeft gewijzigd, staat dit onderaan in de code. aantal divjes per pagina: ongeveer 30 per pagina.

    Dus:
    Opmaak naar CSS
    Volgorde code veranderen
    Een heleboel tabellen aanmaken om ongeveer het zelfde resultaat te krijgen.

    en dat voor 100 pagina’s
    100×30=3000 divjes!
    En dan de hele CSS nog.

    Ik weet dat het uiteindelijk veel overzicht geeft, en dat CSS veel beter is want dit is ook de enige site van mij die nog niet met CSS werkt. Maar het omzetten…..of… aanpassen.

    Als het niet kan doe ik het wel, no problemo, maar als er een andere mogelijkheid is, heel erg graag.

    Toch vast heel erg bedankt pieter78 voor je hulp toch nog toe.

    -Timo

    Bijdrager
    hansenonline

    gebruik je firefox met de developers plugin, zo niet meteen gebruiken het is echt handig om te kijken wat je aan en uit kan zetten om te zien wat er van je site overblijft. als je echt zoveel tabellen met info gebruikt is het wel het overwegen waard om er een database aan te koppelen. verder zijn er heel veel grote plaatjes gebruikt die klein worden weergegeven, kan je ze beter verkleinen nemen ze ook minder ruimte in. wat ook goed helpt in het begrijpen van css is lynda.com, deze leggen duidelijk uit wat je kan doen met css en div’s. bijvoorbeeld je menu is nu een tabel en dit is eigenlijk een unordered list. wat verder opvalt is de kleuren die ik niet vind passen en de content die op een aantal pagina’s over elkaar heen zit en ook niet is uitgelijnd.

    Bijdrager
    computer space

    Die extensie voor Firefox is deze (met een beetje pech zit je anders flink te zoeken)
    http://chrispederick.com/work/webdeveloper/

    Bijdrager
    Henque

    Begint dat gelul over tables, divtjes, css opnieuw.
    En er is GEEN verschil tussen php en html, wat een browser laat zien.
    (php genereerd html)
    En heeft ook niets met software-pakketten te maken, ze maken ook allemaal html. (dus geef daar niet de schuld aan), OK.., zoiets als frontpage zet wel erg veel bagger in je html, maar aan jouw om rotzooi uit je html te halen.

    Jammer dat mensen met kennis zoals bv tennapel hier verdwenen zijn, die had het geduld om alles keer op keer weer opnieuw uit te leggen.

    Lees zin berichten eens!

    Bijdrager
    computer space
    ”henque”

    (php genereerd html)

    Of het maakt CSS of PDF of EPS of SQL of XML of …..
    Alles dat een textbestand is kan PHP maken!
    En het is genereert:P !

    Bijdrager
    oegemeister

    @pieter78: Tabellen zijn niet voor opmaak, gebruik ze daar dan ook niet voor en raad het al helemaal niet aan, aan beginnende designers. Tabellen zijn voor tabel-specifieke gegevens.

    @Martiniman: ik denk dat henque bedoeld dat de output van php gewoon html is. (php wordt immers html nadat het door de parser is gegaan).

    Nogmaals @pieter78: gebruik nog liever require_once ipv include/require php5 wil nog wel eens fatal errors geven als je bestand op 1 of andere manier meer dan 1 x geïnclude wordt.


    @TijhofGraphics
    : als je nu 100 html bestandjes zal ik je aanraden toch eens wat efficiënter van php gebruik te maken. Php is iets dynamisch. 1x een pagina maken en dan de inhoud laten veranderen (door bijv. een mysql-database en als je die niet hebt bijv. txt-bestandjes). Je site wordt waarschijnlijk zo opgebouwd dat er maar 1 stuk in de pagina veranderd. Ff een voorbeeldje

    [code:1:2a3b9852ec]

    // index.php

    // hierzo de doctype en <html> <head> etc.

    <body>
    <div id =’top’>
    <?php
    require_once(’top.php’);
    ?>
    </div>
    <div id=’menu’>
    <?php
    require_once(’menu.php’);
    ?>
    </div>
    <div id=’page’>
    <?php
    $page = @$_GET[’p’]; //nu wordt $page wat meegeven wordt in ‘p’ in de adresbalk
    if (empty($page)) {
    $page = ‘home’; //als er nog geen $page is maak er dan 1
    }
    $filename = $page.".php"; //maak van $page een bestandsnaam
    if (file_exists("includes/modules/".$filename)) { //als het bestand ook daadwerkelijk bestaat
    require_once("includes/modules/".$filename); // include hier het bestand wat meegegeven werd in het adres.
    } else { // als de pagina niet bestaat
    echo "De opgevraagde pagina is op dit moment niet beschikbaar."
    }
    ?>
    </div>
    </body>
    </html>
    [/code:1:2a3b9852ec]

    [code:1:2a3b9852ec]

    // home.php

    // hier hoeft geen opmaak in te komen als het alleen maar tekst is.

    Dus hier komt een heel mooi stukkie tekst en dan zet je er nog maar wwat meer in en ik heb geen zin om naar de lorem ipsum pagina te gaan dus ik typ zelf ff wat in.

    [/code:1:2a3b9852ec]

    Nu heb je dus 2 documenten voor je layout (een css-bestand en index.php) en alle andere bestanden zijn alleen maar inhoud. (bijv. home.php)

    ik hoop dat het nu wat duidelijker is.

    mvg. Sjoerd

20 berichten aan het bekijken - 1 tot 20 (van in totaal 20)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.