PHP redirect volgt eigen weg
Het volgende code gebruik ik om een item van de category te verwijderen.
Het verwijderen van een item gaat prima, maar aan de einde van de script gaat hij niet terug naar categories.php, zoals hieronder aangegeven, maar naar index.php.
Dezelfde code gebruik ik ook voor insert_category. En na het toevoegen van een category gaat het wel naar categories.php.
Ik moet wel zeggen dat ik voorheen een redirect had staan naar index.php en sindskort aangepast naar categories.php.
Ik heb beide codes meerder malen met elkaar vergelijken, maar ik zie echt geen fout erin...
Kan dit te maken met een soort cache van Apache/PHP. Overigens, ik gebruik voornamelijk FF om te browsen en daarom heb ik het in IE11 geprobveerd, maar krijg hetzelfde resultaat.
Iemand een idee?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php include "includes/db-config.php"; ?>
<?php include "includes/header.php"; ?>
<?php include "includes/sidebar.php"; ?>
<?php
if(isset($_GET['id'])){
$id = $_GET['id'];
$query = "Delete FROM categories
WHERE cat_id=$id ";
$result = mysqli_query($connection,$query1);
}else {
echo "No category has been chosen";
}
if(!$result){
die (mysqli_error($connection));
}else {
echo "<p>" . $id . " has been deleted succesfully<br>You will be automatically redirected to the previous page in 3 seconds...</p>";
header ("refresh:3;url=categories.php");
}
?>
<?php include "includes/footer.php"; ?>
<?php include "includes/header.php"; ?>
<?php include "includes/sidebar.php"; ?>
<?php
if(isset($_GET['id'])){
$id = $_GET['id'];
$query = "Delete FROM categories
WHERE cat_id=$id ";
$result = mysqli_query($connection,$query1);
}else {
echo "No category has been chosen";
}
if(!$result){
die (mysqli_error($connection));
}else {
echo "<p>" . $id . " has been deleted succesfully<br>You will be automatically redirected to the previous page in 3 seconds...</p>";
header ("refresh:3;url=categories.php");
}
?>
<?php include "includes/footer.php"; ?>
Quote:
Ik moet wel zeggen dat ik voorheen een redirect had staan naar index.php en sindskort aangepast naar categories.php.
En heb je het nieuwe bestand ook geupload met de juiste naam en in de juiste map?
Test het bijvoorbeeld eens door bijvoorbeeld iets helemaal bovenaan de pagina te zetten als echo 'test';. Als dat niet verschijnt, staat niet het juiste bestand online.
Alle bestanden draaien lokaal en zitten in de root.
Ik werk met Notepad++ verder.
Zelfs met het uitschakelen van PHP redirect door:
En bizar genoeg dezelfde gebruik ik ook voor cat_insert.php en daar wordt het wel geredirect naar categories.php
code voor cat_insert.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
include "includes/db-config.php";
include "includes/header.php";
echo '<div id="content">'
.'<h1>Category insert form</h1>';
if($_SERVER['REQUEST_METHOD'] == "POST") {
if(isset($_POST['submit']) && strlen(trim($_POST['submit'])) > 0){
$cat_title= $_POST['cat'];
if($cat_title =="" || empty($cat_title)){
echo "This field can't be empty";
} else {
$query = "INSERT into categories(cat_title)
values ('{$cat_title}') ";
$create_category = mysqli_query($connection,$query);
$last_id = mysqli_insert_id($connection);
if(!$create_category){ // Niet nodig en nooit DIE gebruiken buiten de ontwikkel versie.
die(mysqli_error($connection));
} else {
echo "<p>New category created successfully and the last inserted ID is: " . $last_id .
"<br>You will be automatically redirected to the previous page in 3 seconds...</p>";
header ("refresh:3;url=categories.php");
}
}
}
}
?>
<?php
echo "<form action='' method='post'>
<fieldset>
<legend>Category insert form></legend>
<p><label for='cat'>Category title:</label><input type='text' name='cat' id='cat'></p>
<input type='submit' name='submit' value='insert category'>
</fieldset>
</form>";
?>
<?php
echo '</div>';
include "includes/footer.php";
?>
Ik heb het gevoel dat ik te maken met een magisch script of zo...
include "includes/db-config.php";
include "includes/header.php";
echo '<div id="content">'
.'<h1>Category insert form</h1>';
if($_SERVER['REQUEST_METHOD'] == "POST") {
if(isset($_POST['submit']) && strlen(trim($_POST['submit'])) > 0){
$cat_title= $_POST['cat'];
if($cat_title =="" || empty($cat_title)){
echo "This field can't be empty";
} else {
$query = "INSERT into categories(cat_title)
values ('{$cat_title}') ";
$create_category = mysqli_query($connection,$query);
$last_id = mysqli_insert_id($connection);
if(!$create_category){ // Niet nodig en nooit DIE gebruiken buiten de ontwikkel versie.
die(mysqli_error($connection));
} else {
echo "<p>New category created successfully and the last inserted ID is: " . $last_id .
"<br>You will be automatically redirected to the previous page in 3 seconds...</p>";
header ("refresh:3;url=categories.php");
}
}
}
}
?>
<?php
echo "<form action='' method='post'>
<fieldset>
<legend>Category insert form></legend>
<p><label for='cat'>Category title:</label><input type='text' name='cat' id='cat'></p>
<input type='submit' name='submit' value='insert category'>
</fieldset>
</form>";
?>
<?php
echo '</div>';
include "includes/footer.php";
?>
Ik heb het gevoel dat ik te maken met een magisch script of zo...
Zorg er wel voor dat er voor deze code geen output naar de browser staat. Geen spatie, geen <html>, geen helemaal niks
Ramon van Dongen op 28/08/2016 14:13:20:
Als ik bovenaan bovenstaande code toevoeg, dan gebeurt er verder niets wanneer ik klik op delete...
Na het uitschakelen van deze code, gaat het pagina vrolijk verder naar index.php ipv categories.php....
Vervangen door
En er gebeurt niets meer?
Zet allereerst je error reporting eens aan.
Maar, ben je echt hetzelfde bestand aan het bekijken/aanpassen?
Misschien typ je nu iets anders dan je bedoelt, maar je typt 'wanneer ik klik op delete'. In je voorbeeld staat 'insert category'.
vergang door
dan word ik wel netje geredirect naar categories.php.
Echter, wat ik niet snap waarom de code
wel werkt voor cat_insert.php en niet voor cat_delete.php
Bedankt voor het tot zover meedenken Ramon!
Iemand een idee..
http://stackoverflow.com/questions/6119451/page-redirect-after-certain-time-php
Geeft ook aan:
Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include, or require, functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file. (source php.net)
Waarom dan hij niet naar categories.php gaat maar naar index.php is een raadsel trouwens.
Toevoeging op 28/08/2016 15:10:00:
En nu ga ik bier drinken. Succes er nog mee! ;-)
Geeft ook aan:
Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include, or require, functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file. (source php.net)
Waarom dan hij niet naar categories.php gaat maar naar index.php is een raadsel trouwens.
Toevoeging op 28/08/2016 15:10:00:
En nu ga ik bier drinken. Succes er nog mee! ;-)