Vraag & Antwoord

Webprogrammeren & scripting

echo in content plaatsen?

17 antwoorden
  • Hallo allemaal, Ik heb een contact formuliertje waarbij een bedankt berichtje word getoond na het verzenden. Echter lukt het mij niet om dit berichtje op de zelfde plaats te krijgen als waar het contact formulier word getoond. (gewoon de content) Het word geopend op een lege pagina. Ik heb na mijn idee alle voorbeelden geprobeerd die ik kon vinden, maar niks werkt. Kan het te maken hebben met mijn header? [code:1:63a6d70763]header("refresh:4;url=http://mijndomein.nl/test/contact/contact.php");[/code:1:63a6d70763] Het bedankt berichtje staat in de php code boven de html ivm de headers already sent...... Maar is het dan wel mogelijk om de echo in de content te krijgen?
  • Ik roep de contactpagina aan met een GET variabele. Aanroepen gebeurt dan dus met [code:1:01da687489]header('Location: contact.php?bericht=bedankt!');[/code:1:01da687489] En in het contactformulier, op de plek waar ik de melding wil hebben zet ik dan: [code:1:01da687489]if (isset($_GET['bericht'])) { echo $_GET['bericht']; }[/code:1:01da687489]
  • Hallo Gooly, Bedankt voor de reactie. Het werkt. :) Maar ik wil het weer te mooi denk ik. Bij het bedankt berichtje roep ik 2 variable op de naam en email. Beste $naam....... We zullen spoedig contact met u opnemen via $email......... Deze werken niet meer met de GET functie op deze manier, en ik zie dat het mooier is een "schone" pagina te openen met het bedankt bericht dan dat het boven het contact formulier komt. Ik heb niet veel verstand van PHP maar zoals ik het dan in me hoofd heb. Via de header location verwijzen naar een bedank.html van hieruit de naam en email oproepen vanuit een database en via header refresh weer terug naar contact.php :o Kan dit niet makkelijker? zijn er geen simpelere manieren voor een beginneling om dit voor elkaar te krijgen?
  • Je kunt de variabelen ook opslaan in een session. Bijvoorbeeld: [code:1:0f71aabc3b] $_SESSION['email'] = $_POST['email']; $_SESSION['name'] = $_POST['name']; // etc... header('Location: contact.php?bericht=bedankt!'); [/code:1:0f71aabc3b] Vervolgens: [code:1:0f71aabc3b] if (isset($_GET['bericht'])) { echo "Beste" . $_SESSION['name'] . "," . PHP_EOL; echo "We zullen spoedig contact met u opnemen via" . $_SESSION['email'] . "," . PHP_EOL; } [/code:1:0f71aabc3b]
  • Je kunt meerdere variabelen via GET versturen, maar de oplossing van Ger met sessievariabelen is veel netter. Als je niet naar het formulier terug wilt maar naar een 'dedicated' bedank pagina dan hoef je niet eens meer een GET variabele mee te geven als je met sessie variabelen werkt. Ook het IF statement is dan niet meer nodig. (Je roept die pagina immers toch alleen maar aan als je wilt bedanken en je hoeft dus niet meer te checken OF er iemand bedankt moet worden :)) Dan ga je dus simpelweg krijgen: [code:1:e07a72e888]$_SESSION['email'] = $_POST['email']; $_SESSION['name'] = $_POST['name']; header('Location: bedankpagina.php'); [/code:1:e07a72e888] En in bedankpagina.php, op de plek waar je het bericht wil plaatsen: [code:1:e07a72e888] echo "Beste" . $_SESSION['name'] . "," . PHP_EOL; echo "We zullen spoedig contact met u opnemen via" . $_SESSION['email'] . "," . PHP_EOL; [/code:1:e07a72e888] Wil je vanaf de bedankpagina een database aanspreken (Waarom? Want je hebt naam en mailadres toch al? Die heeft de bezoeker net zelf ingevuld) Dan zou je een seesievariabele mee kunnen geven met een unieke ID van de bezoeker. In je bedakpagina zet je dan een query die de gegevens van dat unieke ID in de database opzoekt en weergeeft.
  • Dit is precies wat ik bedoel :) alleen.. De header mag niet onder de session staan dan krijg ik de header already sent foutmelding. Met de header boven de session werkt de session niet. :o Antwoord vergeten, waarom ik aan een database dacht: Ik had geen idee hoe ik anders de naam en email weer terug kon krijgen als ik deze gegevens in een andere pagina weer op wou roepen.
  • De fout melding header already sent was denk ik een cache probleem of iets. Geen idee, maar het is weg. Het lukte me niet gelijk ma na een beetje Google session_start(); toegevoegd en het werkt perfect. THNX :D
  • Is het ook mogelijk met PHP terug te gaan naar de contact.php na een aantal sec als de bedankt.php is getoond? Of kan ik dit beter oplossen met java?
  • Allereerst: [url=http://nl.wikipedia.org/wiki/Java_%28programmeertaal%29]Java[/url] != [url=http://nl.wikipedia.org/wiki/JavaScript]javascript[/url] ;) En doorsturen met PHP kan heel eenvoudig met een header Refresh: [code:1:df67f01a8d]header("Refresh: 3; URL=contact.php"); // echo's hier[/code:1:df67f01a8d]
  • Hallo Ger, Ik gebruikte als eerste de header refresh. Maar ik kreeg mijn echo niet in mijn content, omdat die niet in de html staat lukte het me niet. Toen heb ik geprobeerd een gewone html pagina op te roepen als bedankt bericht en dat is gelukt met jullie hulp. Maar ik begrijp nu dat dat niet de goede manier was.
  • [quote:448c3ea85a="_Erwin_"]Ik gebruikte als eerste de header refresh. Maar ik kreeg mijn echo niet in mijn content, omdat die niet in de html staat lukte het me niet. Toen heb ik geprobeerd een gewone html pagina op te roepen als bedankt bericht en dat is gelukt met jullie hulp. Maar ik begrijp nu dat dat niet de goede manier was.[/quote:448c3ea85a] Ik kan je niet helemaal volgen. Sowieso is er wat dit betreft niet per se een 'goede' of 'foute' manier, er zijn simpelweg verschillende methodes. Wat de header refresh doet, is een opdracht meegeven dat [i:448c3ea85a]nadat hetgeen je uit-echoot[/i:448c3ea85a], de pagina na een bepaald aantal seconden ververst moet worden en eventueel naar een andere URL. Na de header-regel in je PHP, kun je dus gewoon verder bouwen aan hetgeen je wilt uit-echoën. Dat staat los van het format, je kunt hier gewoon een template-systeem voor gebruiken.
  • De echo die getoond werd met de header refresh was alleen tekst (bedank berichtje) zonder opmaak. Het werd getoond in een witte pagina. Ik wou de echo op de plek hebben waar ook het contact formulier stond maar ik kreeg het niet voor elkaar om de echo te stylen. Het reageerde nergens op. Ik heb: echo "<div id='bedank'>tekst</div>"; echo '<div id="bedank">tekst</div>'; echo <div id="bedank">tekst</div> geprobeerd maar het reageerde nergens op. En alleen een witte pagina met de echo is niet zo mooi. Opzicht werkte de header refresh erg goed en mooi en ook wat makkelijker dan een nieuwe pagina oproepen en met sessie's werken. Behalve het style dan. Aanvulling: Er ging nog iets mis toen ik de echo gebruikte. De variable kon ik niet meer oproepen toen ik de echo in een div probeerde te krijgen. Ik gebruikte [quote:3525ccbcab]echo '<div id="main"> <p>Beste $naam, </p>[/quote:3525ccbcab] afgezien ik de echo niet zo kreeg als nu in een pagina, kreeg ik dat ook niet werkend. zonder de divjes ging het wel goed met oproepen.
  • Ik denk dat het niet duidelijk is dat de 'header refresh' niet in de hierboven besproken code van het mailscript moet staan, maar in de bedank pagina. Anders gezegd, als je refresh met PHP wilt oplossen, dan is dat heel goed mogelijk, maar dat moet je dan dus in je bedankkpagina zetten. Je hebt het dan dus over twee keer 'header' gebruiken. In het mailscript met 'location', om naar de bedankpagina te gaan: [code:1:4d73eb61f6]header('Location: bedankpagina.php');[/code:1:4d73eb61f6] En in de bedankpagina met 'refresh', om te wachten voor er wordt doorgestuurd: [code:1:4d73eb61f6]header( "refresh:5;url=contactformulier.php" );[/code:1:4d73eb61f6]
  • Hallo, Het is me na veel puzzelen gelukt :) Alleen ik snap de werking nu niet meer zo goed. Kunnen jullie me iets uitleg geven? De header refresh werkt alleen maar als de header boven de html staat. Hierdoor kreeg ik de echo niet in me html. Nu heb ik de header helemaal boven aan: [quote:c79b8ce092]<?php session_start(); header( "refresh:4;url=contact.php" ); ?> <!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" xml:lang="nl-nl" lang="nl-nl" dir="ltr" > <head>[/quote:c79b8ce092] En de echo in de html waar ik het bedank berichtje wil hebben: [quote:c79b8ce092]<div id="centercontent"> <?php echo "<p>Beste ".$_SESSION['naam'] . ",</p><br />" . PHP_EOL; echo "<p>Bedankt voor uw reactie. Uw bericht is succesvol verzonden.</p>"; echo "<p>We zullen spoedig contact met u opnemen via ".$_SESSION['email'] . ".</p><br /><br />" . PHP_EOL; echo "<p>Met vriendelijke groet,</p>"; echo "<p>mijndomein.nl</p>"; ?> </div><!-- end centercontent --> [/quote:c79b8ce092] Het werkt, maar stel ik wil nog een echo bericht van iets anders ook in me centercontent hebben hoe weet de header dan welke echo die moet tonen?? Ik weet het niet zeker maar me gevoel zeg dat dit niet de goede manier is, of toch wel?
  • De header staat los van echo. Je kunt echoen wat je wilt en hoeveel je wilt. Dat doe je door de $_SESSION() superglobal (zo heet dat) te vullen. Een sessie is een bezoek van een specifieke bezoeker aan een specifiek domein. Dus als Jan de Vries je website bezoekt, dan zit hij in een sessie. Of hij nu naar familieplaatjes.html, contact.php of links.php gaat. Die sessie is er alleen voor Jan de Vries, en blijft bestaan zolang hij op een van de pagina's van je website zit. En alles wat je in $_SESSION zet is van toepassing voor Jan de Vries, voor alle pagina's van jou website, voor de duur dat hij op je website zit. In Jip en Janneketaal: Omdat je gebruik maakt van een sessie, wordt er steeds een complete 'archiefkast' meegestuurd naar de andere documenten (of dat nou contact.php is, of bedank.php of het mailscript, maakt niet uit. Ze behoren allemaal tot dezelfde sessie) Die 'archiefkast' heet '$_SESSION' en daar kun je zelf 'kaarten' in stoppen, met een naam die je zelf verzint. Tot nu toe heb je twee kaarten in die archiefkast gestopt, namelijk de kaarten 'naam' en 'email' ($_SESSION['naam'] en $_SESSION['email']) en op die kaarten heb je de bijbehorende waardes toegevoegd. Maar je bent niet beperkt tot die twee kaarten. Als jij de kaarten 'geslacht' en 'politiekevoorkeur' wilt toevoegen, dan ben je daar volkomen vrij in. Voeg ze toe, ken er een waarde aan toe en je kunt ze binnen je sessie gebruiken waar je maar wilt. Dus als je in je mailscript zet: [code:1:4e74f65103]$_SESSION['geslacht'] = $_POST['geslacht']; $_SESSION['politiekevoorkeur'] = $_POST['politiekevoorkeur'];[/code:1:4e74f65103] Dan heb je in alle andere pagina's van je website vanaf dat moment de 'kaarten' $_SESSION['geslacht'] en $_POST['politiekevoorkeur'] tot je ebschikking en kun je die gebruiken zoals de anderen. Bijvoorbeeld om te echoen.
  • Super uitleg :) ik had ook gekeken bij php.net maar daar ging het kwartje niet echt vallen. Dit is een stuk duidelijker. THNX!!
  • Graag gedaan!

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

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