PHP isset post condition no ejecuta
Tengo un formulario que se presenta en cambio usando el método post, creo que no estoy usando la función isset bien porque al enviar nada cambia en mi página donde debería estar teniendo poductos apareciendo en mi página.
Esta es mi forma:
y estas son las condiciones de isset que vienen después del formulario en el mismo archivo :
if(isset($_POST["sofa"])){
$url="https://sik.search.blue.cdtapps.com/fr/fr/product-list-page/more-products?sessionId=22037cc5-f73c-4f71-a1d4-a90285da1789&category=fu003&sort=RELEVANCE&start=0&end=275&c=lf&v=20201118";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
$products = json_decode($result, true);
curl_close($ch);
echo '';
foreach ($products['moreProducts']['productWindow'] as $items)
{
echo '';
echo '';
echo '' . $items['name'] . '
';
echo '' . $items['priceNumeral'] . ' ^b ' . '
';
echo '' . $items['typeName'] . '
';
echo '';
}
echo '';
} elseif (isset($_POST["bed"])){
$url="https://sik.search.blue.cdtapps.com/fr/fr/product-list-page/more-products?sessionId=22037cc5-f73c-4f71-a1d4-a90285da1789&category=bm003&sort=RELEVANCE&start=0&end=275&c=lf&v=20201118";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
$products = json_decode($result, true);
curl_close($ch);
echo '';
foreach ($products['moreProducts']['productWindow'] as $items)
{
echo '';
echo '';
echo '' . $items['name'] . '
';
echo '' . $items['priceNumeral'] . ' ^b ' . '
';
echo '' . $items['typeName'] . '
';
echo '';
}
echo '';
} else {
$url="https://sik.search.blue.cdtapps.com/fr/fr/product-list-page/more-products?sessionId=22037cc5-f73c-4f71-a1d4-a90285da1789&category=fu001&sort=RELEVANCE&start=0&end=275&c=lf&v=20201118";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
$products = json_decode($result, true);
curl_close($ch);
echo '';
foreach ($products['moreProducts']['productWindow'] as $items)
{
echo '';
echo '';
echo '' . $items['name'] . '
';
echo '' . $items['priceNumeral'] . ' ^b ' . '
';
echo '' . $items['typeName'] . '
';
echo '';
}
echo '';
}
?>
La otra condición se verifica ya que estoy teniendo los últimos productos url mostrados todo el tiempo en mi página (antes y después de la presentación del formulario) Así que mi problema es que creo que mi mal entendido de la condición del isset.
Pregunta hecha hace 3 años, 5 meses, 1 días - Por compilerhero1251
3 Respuestas:
-
la etiqueta no incluye
name
atributo.Tienes que nombrarte
tag y utilizar su valor :
if(isset($_POST["furniture"])) { if ($_POST["furniture"] === "sofa") { // your code for sofa } }
Respondida el Dec 16, 2020 a las 10:39 - por codeartisan
Votos positivos: 0 | Votos negativos: 0 -
El problema que estás experimentando es porque estás estableciendo los atributos
name
en las opciones delselect
en tu formulario HTML en lugar de en el propioselect
. Para que la verificaciónisset($_POST["sofa"])
oisset($_POST["bed"])
funcione, necesitas que el atributoname
esté en elselect
y no en las opciones.Aquí te dejo el código corregido:
html
En tu archivo PHP, debes verificar
if(isset($_POST["category"]))
en lugar de verificar$_POST["sofa"]
o$_POST["bed"]
para ver si se ha enviado algún valor del formulario.Además, te recomendaría agregar un
name="submit"
al botón de envio, para identificar si se está enviando el formulario:html
Y luego en tu código PHP verificar también si se ha enviado el formulario:
php if(isset($_POST["submit"])) { // Resto del código aquí }
Con estas correcciones, tu condición
isset($_POST["category"])
debería funcionar correctamente y deberías poder manejar la lógica de mostrar los productos según la opción seleccionada en tu formulario. ¡Espero que esto te ayude!Respondida el Dec 17, 2020 a las 10:34 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
El problema con tu código es que estás usando valores de atributos
name
en tus opciones deselect
, pero estás comprobando valores de atributosvalue
en tus condicionesisset
.Aquí está el código corregido:
php
Cambios:
He cambiado los atributos
name
de las opcionesselect
avalue
. He eliminado los atributosname
redundantes de las opcionesselect
.Explicación:
El atributo
name
de una opciónselect
se utiliza para identificar la opción cuando se envía el formulario. El atributovalue
se utiliza para especificar el valor que se enviará para esa opción.En tu código original, estabas comprobando los valores de los atributos
name
, pero estabas enviando valores de atributosvalue
. Esto hacía que tus condicionesisset
siempre fueran falsas.Estos cambios deberían solucionar el problema y permitir que tu código muestre los productos correctos cuando se seleccionen las opciones
select
.Respondida el Dec 17, 2020 a las 10:47 - por Gemini
Votos positivos: 0 | Votos negativos: 0