Ma question est très simple. mais je me bats trop avec cela. Le problème est que lorsque je clique sur le bouton d'envoi, cette page doit être redirigée vers une autre page. Veuillez simplement me dire ce que j'ai mal fait? Parce que j'ai tout essayé.
Code:
Update-docket.php
<?php
//error_reporting(0);
$link = mysqli_connect("localhost", "home_db", "root", "");
// Check connection
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
// Escape user inputs for security
$sql = 'SELECT * FROM prod_details';
$result = mysqli_query($link,$sql);
while ($row = mysqli_fetch_array($result))
{
$Quantity1 = $_POST['p_'.$row['id']. ''];
$id = $row['id'];
$store = $row['rstore'];
// echo $store;
foreach ($_POST as $key => $value)
{}
if(!empty($Quantity1)) {
$query="update prod_details SET rdocket='$Quantity1' WHERE id='$id'";
if(mysqli_query($link, $query)) {
header('Location: /docket-details.php');
exit();
} else {
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
}
}
docket-details.php
<form class="form-horizontal" action="update-docket.php" method="post" name="myform" autocomplete="off">
<button type='submit' name='submit' class='btn c-theme-btn c-btn-square c-btn-uppercase c-btn-bold'>Submit</button>
S'il vous plaît aider !!!
Votre ligne Location
est incorrecte, redirigez à l'aide de:
header('Location: /url');
https://secure.php.net/manual/en/function.header.php
Je pense que votre déclaration n'est pas satisfaite. Essayez d'activer à nouveau la consignation des erreurs et var_dumping dans chaque section conditionnelle pour voir où se situe le vrai problème. Maintenant que vous avez mis à jour votre code pour qu'il utilise header
il devrait en théorie fonctionner. Mais je suppose que $ _POST ne renvoie pas ce que vous voulez/attendez.
Édité!
Essaye ça:
header('Location: /docket-details.php');
// i'm sorry, forgot to add exit
exit();
bien sûr, vous pouvez remplir l’URL complète si vous vous référez.
Important: Aucune sortie ne doit être faite avant cette ligne car elle générera un en-tête. Pas une seule echo
avant d'envoyer l'en-tête de la réponse!
Cela devrait être quelque chose comme ça:
if(!empty($Quantity1)) {
$query="update prod_details SET rdocket='$Quantity1' WHERE id='$id'";
$res = mysqli_query($link, $query);
if($res) {
header('Location: /docket-details.php', true, '200');
} else {
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
}
vous avez "update-details.php" mais vous faites référence à "update-docket.php" dans votre action de formulaire. Ainsi, l'action de formulaire redirige vers un autre fichier.
Comme indiqué par @thisGuyHasTwoThumbs, votre ligne de lieu est incorrecte.
header('Location: /url');
exit();
Vous souhaitez également exit()
car cela empêchera toute exécution de code après cette ligne.
https://secure.php.net/manual/en/function.header.phphttps://secure.php.net/manual/en/function.exit.php
Jus pour les détails:
"update prod_details SET rdocket='$Quantity1' WHERE id='$id'"
Wil a l'air beaucoup plus propre et est plus facile à lire comme:
"UPDATE `prod_details` SET `rdocket` = '$Quantity1' WHERE `id` ='$id'"
Maintient les mots MySQL en majuscules. Cacher les noms de colonnes et de tables entre des backticks empêchera " Erreur de serveur MySQL "
Le rendant:
<form class="form-horizontal" action="update-docket.php" method="post" name="myform" autocomplete="off">
<?php
if (!empty( $Quantity1) )
{
$query = "UPDATE `prod_details` SET `rdocket` = '$Quantity1' WHERE `id` ='$id'";
if( mysqli_query( $link, $query ) )
{
header( 'Location: /docket-details.php' );
exit();
} else {
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
}
La variable $Quantity1
est ouverte pour l'injection SQL. Pour résoudre ceci, vous pouvez échapper la variable s'il s'agit d'une chaîne, mais vous devez utiliser préparé une instruction .