Open link in tabel

Status
Niet open voor verdere reacties.

RikXP

Gebruiker
Lid geworden
6 mrt 2009
Berichten
789
Hallo,

Ik ben druk aan het zoeken geweest. Maar de resultaten waren niet goed.

Ik heb namelijk een website gebouwd, maar ik wil dat als ik op een link klik, een pagina wordt geopend in een cel. (Dus geen frames of iframes).


Weet iemand hoe je dit doet met Dreamweaver of weet iemand een goede code?

Alvast bedankt.

Groeten, RikXP.
 
Hoi Rik,
Als je 't mij vraagt, is het gewoon onmogelijk om een echte (complete) html-pagina in een tabelcel te tonen als je geen frame wilt gebruiken.
Wat je nodig hebt, is nl. een "gat" in je pagina (hier: een gat zo groot als de cel), zodat je een doorkijkje hebt naar de pagina die je met de klik wilt zien. Maar ... je kunt geen html-pagina als matrioska in een andere html-pagina zetten, als je geen frame wilt gebruiken. Want dan zou je een bv. een nieuwe <head> en een nieuwe <body> in je <body> van de begin-pagina krijgen, en dat kan niet.

Wat wel zou kunnen (maar ik weet niet of dat de bedoeling is), is dat je een deel van een andere pagina oproept, door dat deel al stiekem in de cel te zetten, maar dat deel in een <div id="onzichtbaarInCel"> te verpakken die je onzichtbaar maakt met css.
Vervolgens moet je een javascriptje maken dat door de link bediend wordt, en de style van het onzichtbare ding weer zichtbaar maakt.
  • En als je bv. 3 verschillende dingen in dezelfde cel wilt kunnen tonen, kan je deze 3 dingen onder elkaar zetten (weer met onzichtbaar makende css), en met 3 links bedienen (elk maakt via javacript een andere div zichtbaar).
Het wordt zo wel een hele toestand!
  • Nattigheid is, dat op zo'n manier javascript aan moet staan in de browser van de bezoeker, anders ziet deze ofwel niets, ofwel alle 3 de cel-inhouden in dezelfde cel onder elkaar staan (afhankelijk van hoe de styles en het script in elkaar zitten).
  • Tweede probleem kan zijn, dat als je op zo'n manier veel verschillende "pagina's" in je cel wilt kunnen openen, alles al tevoren in je code moet zitten, en je dan een heel zware (grote) pagina kan krijgen.
  • Derde probleem kan zijn, dat het gaat om het inbouwen van een stuk van een pagina die veranderen kan (dan zou je dat deel als php-include moeten maken, die je zowel hier als in de "originele" pagina plaatst), of om pagina's van een andere site > dat lukt niet.
Nu bedenk ik dat er voor een "te zware" pagina wel een escape is. Je maakt dan 1 pagina met lege cel en de links, en een link opent telkens een volstrekt identieke pagina waarin de cel wel gevuld is. :)

Maar als je een link naar een voorbeeld-pagina hebt en wat meer vertelt over wat je waarom precies wilt, dan weet iemand hier er misschien wel een andere mouw aan te passen.

Succes in elk geval!
CSS-Hunter
 
Hoi csshunter,

Bedankt voor je reactie. Ik wil inderdaad een deel van een andere pagina in de cel laten openen. Een soort iframe. Inderdaad dat als je op een link klikt, er in de cel ernaast een pagina wordt weergegeven net als in een iframe.
Weet jij hier een soort code van?

Hier is mijn website: http://www.rikbrugman.nl/ Alleen ziet hij er nog niet helemaal goed uit in IE. wel in firefox.


Groeten, RikXP.
 
Hoi RikXP,
Aha! Nu zie ik wat je bedoelt. In plaats van de vraag: "hoe krijg ik telkens die witte cel met iets anders gevuld?" ga ik even omgekeerd denken. Je kan het ook zó formuleren:
  • Je wilt een site met pagina's die allemaal dezelfde layout hebben,
  • en op elke pagina moet dezelfde kop erboven komen en hetzelfde menu ernaast komen.
Dat is te doen! (en prima dat je er geen frames voor wilt gebruiken) :)
Mogelijkheid 1:
  • Je maakt een complete pagina (met de cel opgevuld), en
  • voor elke nieuwe pagina kopieer je die pagina (bv. in de Verkenner) en geeft die een nieuwe pagina-naam,
  • en dan vervang je de tekst en andere dingen uit de cel door de nieuwe tekst en nieuwe andere dingen,
  • tot je alle pagina's hebt.
Mogelijkheid 2:
  • Dit kan alleen als je php op de server van je provider hebt staan.
  • Dan "schroef je de pagina uit elkaar" in 3 delen: de kop, de linkerkolom, en de inhoud-kolom.
  • De kop en de linkerkolom zet je in een php-bestandje.
  • Op elke pagina vul je de inhoud-kolom, en roep je (met een kort php-regeltje) de kop en de linkerkolom erbij.
Voordeel hiervan is, dat als er iets in je menu verandert, je dat maar één keer hoeft te veranderen: in het php-brokje van de linkerkolom. Want dat brokje wordt als het ware op elke pagina gerecycled.

Laatste tip: als je tijd hebt, probeer dan de tabellen (en de tabellen in de tabellen) te vervangen door <div>'jes die je met css op hun goede plaats zet. Dat geeft hele nette code! :D

Succes!
CSS-Hunter
 
Hoi csshunter,

Mogelijkheid 2 lijkt mij erg goed! Alleen snap ik niet helemaal wat ik dan moet doen. Ik heb PHP. Ik wil inderdaad graag hetzelfde menu en hetzelfde logo houden.

Kun je mogelijkheid 2 misschien iets preciezer uitleggen? Wat ik daar nou precies moet doen?

Alvast bedankt!

Groeten, RikXP.
 
Hoi RikXP,
O.k., daar gaat ie met mogelijkheid 2.

Puntje 1: een goede pagina
Maak eerst één html-pagina goed werkend met alles erop en eraan (ook de inhoud-cel gevuld). Test deze pagina met de html-validator en de css-validator. Als alles in orde is, kun je verder. Maar maak éérst even een backup (kopie) van deze goede pagina!

Punt 2: mapje aanmaken
Net zoals je een mapje "images" hebt, moet je een mapje maken waar keurig alle "includes" (ingesloten brokjes) in komen te staan. Mapje kan je bv. "includes" noemen. :)

Punt 3: knippen van de kop
Het kop-gedeelte, dat onveranderd kan blijven, loopt van jou van vlak na de <body>:
HTML:
<table width="900" align="center" border="0" cellpadding="0" cellspacing="0" height="1000">
   <tbody>
      <tr>

... tot en met ... (na de Google-codes)

</script></p>          </td>
      </tr>
    </table></td>

    <td width="20" rowspan="2" bgcolor="#FFFFFF">&nbsp;</td>
  </tr>
Dit kop-gedeelte knip je uit de pagina, en plak je (als enige code, dus zonder <head>,<body> en andere dingen) in een nieuwe pagina; kan ook in Kladblok. In plaats van een .htm uitgang krijgt dit bestand een .php uitgang > bv. kop.php. Opslaan in het nieuwe mapje "includes".

Punt 4: de verwijzing
Nu je kop weggeknipt is (dat is wel erg kaal), moet je op de oorspronkelijke pagina precies op de opengevallen plaats een verwijzing zetten. Die ziet er als volgt uit:
HTML:
<?php include("http://www.rikbrugman.nl/includes/kop.php"); ?>
Daarna gaat de html-code verder waar ie gebleven was. Op de pagina wordt het dus:
HTML:
...
<body>
<?php include("http://www.rikbrugman.nl/includes/kop.php"); ?>
  <tr>
    <td width="200" valign="top" bgcolor="#FFFFFF" style="border-right:dotted; border-right-width:1px">
... enz.
Zo wordt in de pagina de kop aangehaakt. Maar let op! De oorspronkelijke pagina moet nu zelf ook de uitgang .php krijgen, anders werkt het niet. Sla hem dus op als (bv.) index.php in plaats van index.html.

Punt 5: de test
Om resultaat te kunnen zien, moet alles nu éérst naar de server worden geupload. D.w.z. het mapje "includes" met kop.php erin, en de nieuwe index.php. De oude index.html kan je daar verwijderen (of een andere naam geven, als je 'm wilt bewaren).
Nu kan je je browser(s) openen en op de site gaan kijken. Als het goed is, verschijnt nu de pagina met kop en al op je scherm.
Het aardige is, dat als je in de broncode kijkt van je internetpagina, er van de hele php-toestand niets te zien is: de codes lopen gewoon door alsof die van kop.php gewoon in de pagina stonden. En dat klopt, want de zaak is via php "server-side" weer in elkaar getimmerd, en als gewone bezoeker kan je daar niets van zien.

Punt 6: de rest
Op dezelfde manier kan je nu ook het brokje met de codes van de linker kolom in een apart php-bestand zetten, laten we zeggen: menu.php. En dat haak je in de pagina weer met een php-regeltje aan: op de plaats van de weggeknipte kolom.
Voor de andere pagina's van je site hoef je alleen op de goede plaats dezelfde php-regeltjes te zetten > klaar!

Blijft over: mooie cleane code maken met div's en zonder tabellen. But that's an other story! ;)

Succes!
CSS-Hunter
 
Hey, Geweldig man! Dat wilde ik altijd al hebben!:D:D

Ik ga het meteen proberen, je hoort nog wel hoe het is gegaan.

Thanks!!

Groetjes, RikXP.
 
Ja, dit zag ik gisteravond ook al staan: "hij is bezig", dacht ik nog, "later nog eens terugkomen". :)
  • De verwijzing op je index.php pagina lijkt goed, anders was deze foutmelding niet binnengekomen.
  • Het mapje "includes" is wel aangemaakt op de server, maar op een of andere manier is kop.php niet geupload, want die staat er niet in.
Je krijgt dan ook keurig je 404 "Pagina niet gevonden" pagina, als je 'm rechtstreeks oproept: http://rikbrugman.nl/includes/kop.php.

Als je kop.php uploadt naar het "includes"-mapje, zou het moeten werken. (Is ie soms in de root-directory van de server terechtgekomen? D.w.z. in dezelfde map als je index.php?)

Succes,
CSS-Hunter
 
Oeps! Ik heb een grote fout gemaakt! Het bestand heet niet kop.php maar top.php!

Ik heb het veranderd, maar nog steeds zelfde probleem.:confused:
 
halverwege!

Hoi RikXP,
Kijkaan: de top.php zit nu mooi in z'n includes-mapje op de server. :thumb:
Je moet alleen nog even de verwijzing naar je logo aanpassen.
HTML:
<img src="images/RBSlogo.png" width="142" height="113">
moet worden:
HTML:
<img src="../images/RBSlogo.png" width="142" height="113" alt="">
Door de twee puntjes en de slash gaat ie eerst een mapje omhoog (uit "includes" naar de root), en daarvandaan naar het mapje "images". Zoals het er nu staat, gaat ie op zoek naar een map "images" die een submap van "includes" is - en die is er niet.

Nu de top.php er gewoon is, lijkt het er op dat de verwijzing in de index.php niet helemaal snor zit. Maar omdat het php is, kan ik dat van buitenaf niet checken. ;)

Dus passen we een list toe: kan je even een kopie van je index.php maken, en die index.txt noemen? En dan die index.txt uploaden (gewoon als http://rikbrugman.nl/index.txt)?
Dan kunnen we eens kijken wat er aan de hand is.

Groetjes,
CSS-Hunter
 
Laatst bewerkt:
Hoihoi,
Late reactie geen probleem, er moeten ook wel eens andere dingen voorgaan.
Maar ik geloof dat we in de buurt komen.
In je index staat:
HTML:
<body>
<?php include("/domains/rikbrugman.nl/public_html/includes/top.php"); ?>
</body>
Maar daar zit ie niet. Als ik probeer:
HTML:
<body>
<?php include("http://www.rikbrugman.nl/includes/top.php"); ?>
</body>
komt ie keurig tevoorschijn. :D
En waarschijnlijk kun je het ook af met:
HTML:
<body>
<?php include("includes/top.php"); ?>
</body>

Klopt dat?
Groetjes,
CSS-hunter
 
GEWELDIG!! Met het tweede voorbeeld werkte alles!!!! Bedankt! :D:D:thumb::thumb:

Maar... als ik nu wil linken, hoe doe ik dat?
Als in op een knop in het menu.php klik, dat er bijvoorbeeld in de top.php cel een andere pagina wordt ingeladen??
 
Dat zou vanzelf moeten gaan!
Want de structuur van elke pagina is:
HTML:
<head>
... spulletjes van de head
</head>
<body>
<?php include("http://www.rikbrugman.nl/includes/top.php"); ?>
<?php include("http://www.rikbrugman.nl/includes/menu.php"); ?>
... inhoud van de pagina
</body>
D.w.z. op elke pagina komt het menu er automatisch in, en in menu.php zitten de links naar de andere pagina's. :D
Als je zegt:
...dat er bijvoorbeeld in de top.php cel een andere pagina wordt ingeladen?
is dat niet helemaal correct. Er wordt geen cel in de bestaande pagina veranderd, maar de hele pagina wordt veranderd, alleen de inhoud van de cellen met top.php en menu.php erin wordt steeds opnieuw ingeladen.
Op het oog lijkt het bij wisseling van pagina's dat de top en het menu blijven staan, maar dat is niet zo! Ze komen er steeds opnieuw op dezelfde manier in, en met de php-constructie zorgen we ervoor dat dat met de twee verwijsregeltjes snel in de paginacode komt, en dat niet steeds de top en het menu met alle <div>'jes en andere dingen opnieuw in de pagina geplakt hoeven te worden.
Dat was wat ik eerder het "omgekeerd denken" noemde. :rolleyes:

Succes!
CSS-hunter
 
Ok, bedankt voor je hulp. Ik ga gauw verder met m'n site!:D:D

Groetjes, RikXP.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan