J'essaye d'envoyer 2 valeurs dans tout le href. Si j'envoie une valeur, par exemple - id, tout va bien.

Voici mon code:

<select id="options" name="options" method="post">                      
    <option value="opt1">Option one</option>
    <option value="opt2">Option two</option>
    <option value="opt3">Option three</option>
</select>
<br>
<a href="cart.php?action=update&id=<?php echo $row['id']?>">
    <span class="btn btn-success">Change</span>
</a>

$row a mes données récupérées, donc j'obtiens mon identifiant à partir de là. Je voudrais également envoyer une valeur qui est choisie dans une liste déroulante. J'enverrais ces valeurs à ceci:

if($_GET["action"] == "update") {
    $stat = $_GET['options'];
    $itemID = $_GET['id'];
    $sql = "UPDATE orders
    SET status = '$stat'
    WHERE id = '$itemID'";
    $connect->query($sql);
    header("location:index.php?status=1");
}

Pourtant, mon $stat n'a rien dedans.

J'ai essayé presque toutes les solutions possibles sur Internet et aucune d'entre elles n'a résolu mon problème.

-1
Mančius 30 nov. 2020 à 17:30

3 réponses

Meilleure réponse

Pour que cela fonctionne dans votre situation, vous devez utiliser un FORM avec une méthode GET. Pas une méthode sur un élément de sélection.

<form method="GET" action="cart.php">
    <input type="hidden" name="action" value="update">
    <input type="hidden" name="id" value="<?php echo $row['id'] ?>">
    <select id="options" name="options">                      
        <option value="opt1">Option one</option>
        <option value="opt2">Option two</option>
        <option value="opt3">Option three</option>
    </select>
    <button class="btn btn-success" type="submit">Change</button>
</form>

La sélection de l'option 1 sera envoyée à cart.php?action=update&id=1&options=opt1.

Une autre option consiste à utiliser POST:

<form method="POST" action="cart.php?action=update&id=<?php echo $row['id'] ?>">
    <select id="options" name="options">                      
        <option value="opt1">Option one</option>
        <option value="opt2">Option two</option>
        <option value="opt3">Option three</option>
    </select>
    <button class="btn btn-success" type="submit">Change</button>
</form>

Puis dans votre PHP:

$action = $_POST['action'];
$options = $_POST['options'];
//etc

N'oubliez pas que vous êtes vulnérable à l'injection SQL et que vous devez utiliser instructions préparées.

2
mikeroq 30 nov. 2020 à 14:50

Ce sont les deux erreurs dans votre code, la méthode que vous utilisez est post method not get , et l'autre est que vous n'avez pas de formulaire pour faire cette méthode, vous devez créer la sélection en tant que forme pour fonctionner correctement.

-1
Unai Vadillo 30 nov. 2020 à 14:55

Vous utilisez la méthode post donc au lieu de $ _GET utilisez $ _POST et vous devez d'abord vous connecter à la base de données avant d'y écrire quoi que ce soit. Il est probablement aussi plus intelligent d'utiliser une balise form pour ce genre de choses, voir https: // www. w3schools.com/tags/tag_form.asp. j'espère que je t'ai aidé

-1
totallyCapableProgrammer 30 nov. 2020 à 14:41