Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

php output niet op scherm maar in een hidden frame plaatsen

Anoniem
GameSurfer
8 antwoorden
  • Ik heb een formulier gemaakt waarbij de invoer door een javascript gecontroleerd wordt. Het formulier bestaat uit 3 bladzijden, ook 3 formulieren dus. De variabelen worden met het javascript aan elkaar doorgestuurd. Op de 3e bladzijde worden alle gegevens verzameld en moet er een print functie komen.
    Het printen met print() is geen probleem alleen ik wil niet het formulier zoals het geprint wordt op het scherm laten zien. Maw. niet ineens een witte bladzijde met alle gegevens maar netjes een tabelletje met hierin de gegevens die geprint gaan worden.
    Het formulier probeer ik nu in een hidden frame door php te laten genereren. Daarn kan ik met print() dit frame uit laten printen.
    Het probleem is dat ik niet weet hoe ik de output van een php script in dit hidden frame kan krijgen.
  • Je zorgt ervoor dat ieder formulier een .php- file is.
    De gegevens laat je verzenden via de methode post.
    Op de pagina van het volgende formulier plak je de waardes van het vorige formulier in het nieuwe formulier.

    Vb: na verzenden van het eerste formulier met "name" als variabele.
    In de tweede pagina wordt dit.
    [code:1:ed216482a4]
    <form name="….. blabla…..>
    <input type="hidden" name="name" value="<? print $name; ?>">
    <verzendknop>
    </form>
    [/code:1:ed216482a4]
    Op die manier worden de gegevens ingevoerd in de eerste pagina doorgestuurd naar de derde pagina. Op de pagina van het volgende formulier doe je weer net hetzelfde totdat je op de pagina van het overzicht belandt.

    Hier is het gewoon een kwestie van je layout voor je gegevens klaarmaken.
    Maak een layout in html en plak op de overeenkomstige plaatsen je print-scriptje.

    vb:
    [code:1:ed216482a4]
    <table>
    <tr>
    <td>Name:</td>
    <td><? print $name; ?></td>
    </tr>
    <tr>
    <td>Email:</td>
    <td><? print $email; ?></td>
    </tr>
    </table>
    [/code:1:ed216482a4]
    En dus geen gedoe met een hidden frame :wink:

    Groeten
  • Bedankt voor je uitleg. Het is alleen zo dat de gegevens wel netjes in een tabel op het scherm komen te staan na het invullen van het formulier. Dit is niet het probleem. Op het scherm kun je de gegevens controleren en eventueel teruggaan om te wijzigen.
    Op het scherm waar je de ingevulde gegevens kunt controleren moet nu een knop komen waarmee je het formulier kan printen. Niet het huidige scherm moet nu geprint worden omdat dit een andere layout heeft.
    Dus moet het te printen formulier in een hidden frame komen te staan of anders een extern bestand.
  • Je kan ook een apart CSS-bestand maken speciaal voor printers. Op deze manier kan je dus gewoon de huidige pagina printen terwijl deze uitgeprint er anders uit zal zien… » Meer info.

    - Bas.
  • Bashamar oplossing is natuurlijk de mooiste maar helaas niet geheel crossbrowser compatible (dit is op te lossen met javascrpting maar dit is nodeloos complex). Als je volledig crossbrowser compatible wil zijn is jouw oplossing zo slecht nog niet. Posten naar een hidden frame is eenvoudig:
    [code:1:c767adea7c]<form target="hiddenFrameName" etc..></form>[/code:1:c767adea7c]

    Sucess,

    /E
  • He dat is mooi. Ik wist niet dat form ook een target kon hebben, ik ga het uitproberen. Ik ben benieuwd wat er in de target komt te staan. De output van <form> ? Ik ga het uitproberen.
  • Ik heb nu het formulier aangepast met een target. Het target is een hidden frame oftewel een frame die de afmeting 0 heeft.
    Als ik nu het formulier verzend gebeurt er inderdaad precies wat ik wil:
    De gegevens worden door een javascript op het scherm geplaatst, als 2e wordt er een print-formulier aangemaakt in het juiste frame.
    Om te testen heb ik het frame iets groter dan 0 gemaakt om te kunnen zien of er inderdaad iets in komt te staan, dat gebeurt inderdaad. Het volgende php-scriptje zet de tekst in het frame.

    <?php

    echo "<table width='400px' cellpadding='2' border='1' cellspacing='0'>";
    echo "<tr><td>Zakelijk</td><td>tekst</td></tr></table>";
    echo "<script>window.print();</script>";
    ?>

    Alleen ik krijg het nog niet voor elkaar om dit frame uit te printen. Ik heb geprobeerd om dit frame de focus te geven maar elke keer wordt het frame geprint waarin het html-formulier staat.
    Het is de bedoeling dat het hidden frame na het vullen met tekst automatisch geprint gaat worden. Alvast bedankt weer
  • werkt onderstaande niet gewoon?

    [code:1:2a182fcb1f]
    parent.frames['hiddenframe'].print();
    [/code:1:2a182fcb1f]

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.