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 :

    v--------------v----- Check this
    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 del select en tu formulario HTML en lugar de en el propio select. Para que la verificación isset($_POST["sofa"]) o isset($_POST["bed"]) funcione, necesitas que el atributo name esté en el select 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 de select, pero estás comprobando valores de atributos value en tus condiciones isset.

    Aquí está el código corregido:

    php
    

    Cambios:

    He cambiado los atributos name de las opciones select a value. He eliminado los atributos name redundantes de las opciones select.

    Explicación:

    El atributo name de una opción select se utiliza para identificar la opción cuando se envía el formulario. El atributo value 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 atributos value. Esto hacía que tus condiciones isset 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