Hallo!

Ik vroeg mij af, hoe ik het volgende werkend kon krijgen:

<form action="#" method="POST" class="sidebar-form">
						<div class="input-group">
							<input type="text" name="gebruiker" class="form-control" placeholder="Zoek op naam...">
							<span class="input-group-btn">
								<button type="submit" name="search" id="search-btn" class="btn btn-flat"><i class="fa fa-search"></i>
								</button>
							</span>
						</div>
					</form>


Ik wil dat als je op het zoek tekentje drukt, dat je wordt doorverwezen naar /paneel/profiel/{INGEVOERDE GEBRUIKER}
maar ik heb geen idee hoe ik dit moet doen.. Enige suggesties?
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
header("Location: /paneel/profiel/".$_POST['gebruiker']);
exit;
}
?>
[/code]
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\paneel\assets\include\header.php:96) in C:\xampp\htdocs\paneel\assets\include\menu.php on line 14
Er mag geen output zoals HTML en Witregels voor staan (zie ook header.php regel 96)). Deze code dus bovenaan je script uitvoeren. Deze melding is ook makkelijk via Google te vinden.
- Ariën - op 04/01/2017 14:03:09

Er mag geen output zoals HTML en Witregels voor staan (zie ook header.php regel 96)). Deze code dus bovenaan je script uitvoeren. Deze melding is ook makkelijk via Google te vinden.


>> Daarom eerst je applicatie en dan pas je OUTPUT zoals ik eerder ook in het draadje van Mohamed schreef: https://www.phphulp.nl/php/forum/topic/vage-foutmelding-op-de-edit-pagina/100684/2/. Als je je daar aan houdt dan wordt alles al zoveel logischer en overzichtelijker.

[size=xsmall]Toevoeging op 04/01/2017 16:07:37:[/size]


<?php

// DEEL 1: HIER DE APPLICATIE. GEEN ENKELE OUTPUT. GEEN HTML EN GEEN ECHO E.D. (hooguit een exception die ook direct je applicatie doet stoppen).


// ALS EERSTE HIER DE INCLUDES VAN BESTANDEN WAARIN GEEN OUTPUT GEGENEREERD WORDT

include 'config.php';
include 'connect.php';

// BEGIN WANNEER NODIG OF VAN MIJN PART ALTIJD MET HET INITIALISEREN VAN DE VARIABELEN DIE JE GEBRUIKT
$errors = array();
$message = '';
$id = 0;

// DAN BEGINT JE APPLICATIE. INDIEN ER EEN FORMULIER AANWEZIG IS KRIJG JE TYPISCH IETS ALS DIT:
if($_SERVER['REQUEST_METHOD']=="POST") {
	// hier je afhandeling het formulier
	$message = 'De gegevens zijn opgeslagen';
}




// DEEL 2: BEGIN MET DE OUTPUT:


include 'header.php'; // in header.php vindt je html. zoiets als '<html><head>...</head><body>'

echo '<div id="message">' . $message . '</div>';
?>
<form action="" method="post">
	...
</form>
<?php
include 'footer.php'; // in footer.php vindt je html. zoiets als '...</body></html>'
?>
Of je splitst dit op een andere manier op in logische eenheden, zodat er een nog betere scheiding is tussen wel/geen output.

In het bovenstaande codefragment van @Frank, wat een verbetering kan zijn ten opzichte van wat je nu hebt, worden er nog steeds (tenminste) twee "taken" gecombineerd:
- het weergeven van een formulier
- het verwerken van een formulier

Indien je je code zo op kunt zetten/in kunt delen dat er per "logische eenheid" slechts één taak wordt verricht dan heb je ook veel meer controle over output. Deze is er dan namelijk "wel" of "niet" en niet "soms" zoals in bovenstaande code.
Als je het helemaal in een logische structuur wilt hebben, dan kan je het zelfs in 'templates' hakken.
Dan hoef je al helemaal geen HTML te gebruiken tussen je PHP-code's. Maar ik denk dat het verstandiger voor Rob is om eerst even te experimenteren met de de basis van PHP waar die nu mee bezig is.

Reageren