0
votes

La liste déroulante peuplée de la base de données n'enregistre pas l'option sélectionnée avec PHP

Quel est le problème avec mon code ci-dessous? Je ne sais pas comment dire à mon insert SQL pour enregistrer l'option sélectionnée de la liste déroulante. J'ai édité ma question si quelqu'un pourrait m'aider davantage avec cela. Merci d'avance pour votre aide.

<?php
    $usuarioLogado = $_SESSION['email'];
    $etapa = "semana1";
    $showModal = false;

    $query = "SELECT * FROM campeonato WHERE usuario = '$usuarioLogado' AND etapa = '$etapa'";
    $ref = $select_db->query($query);
    $row = mysqli_fetch_assoc($ref);

    if(isset($_POST['time']) && isset($_SESSION['email'])) {
        $showModal = true;
        $times = $_POST["time"];
        $dobrada = $_POST["dobrada"];
        $sobrevivente = $_POST["sobrevivente"];
        if ($row) {
            $sql = "UPDATE campeonato SET ";
            foreach ($times as $time => $valor) {
                if ($valor != null) {
                    $sql .= "$time = $valor,";
                }
            }
            $sql .= " dobrada = $dobrada, sobrevivente = $sobrevivente, datahora = now() WHERE usuario = '$usuarioLogado' AND etapa = '$etapa'";

            if ($select_db->query($sql) === TRUE) {
                //echo "Dados atualizados com sucesso";
            } else {
                //echo "Error: " . $sql . "<br>" . $select_db->error;
            }
        } else {
            $sql = "INSERT INTO campeonato (datahora, usuario, etapa, dobrada, sobrevivente,";
            foreach ($times as $time => $valor) {
                if ($valor != null) {
                    $sql .= "$time,";
                }
            }
            $sql = substr_replace($sql ,"", -1);
            $sql .= ") VALUES (now(), '$usuarioLogado', '$etapa', $dobrada, $sobrevivente,";
            foreach ($times as $time => $valor) {
                if ($valor != null) {
                    $sql .= "$valor,";
                }
            }
            $sql = substr_replace($sql ,"", -1);
            $sql .= ")";
            if ($select_db->query($sql) === TRUE) {
                //echo "Dados cadastrados com sucesso";
            } else {
                //echo "Error: " . $sql . "<br>" . $select_db->error;
            }
        }
    }
    $query = "SELECT * FROM campeonato WHERE usuario = '$usuarioLogado' AND etapa = '$etapa'";
    $ref = $select_db->query($query);
    $row = mysqli_fetch_assoc($ref);
?>

<form method="post">
    <div class="form-group">
        <table>
            <tr>
                <td class="quantity">
                    <input name="time[time1]" type="number" min="0" max="99" step="1" value="<?=$row["time1"]?>" required />
                    <input name="time[time2]" type="number" min="0" max="99" step="1" value="<?=$row["time2"]?>" required />
                </td>
            </tr>
            <tr>
                <td class="text-center" colspan="6">
                    <select name="dobrada" required style="color: #000;">
                        <option value=""> - Selecione A - </option>
                        <?php
                            for ($i = 1; $i <= 16; $i++) {
                                if ($row["DOBRADA"] == $i) {
                                    echo "<option value='$i' selected=selected>Jogo $i</option>";
                                } else {
                                    echo "<option value='$i'>Jogo $i</option>";
                                }
                            }
                        ?>
                    </select>
                </td>
            </tr>
            <tr>
                <td class="text-center" colspan="6">
                    <select name="sobrevivente" required style="color: #000;">
                        <option value=""> - Selecione B - </option>
                        <?php
                            $queryS = "SELECT * FROM lista_times";
                            $resultS = $select_db->query($queryS);
                            while ($list = $resultS->fetch_array(MYSQLI_ASSOC)){
                                echo "<option value='".$list['times']."'>".$list['times']."</option>";
                            }
                        ?>
                    </select>
                </td>
            </tr>
            <tr class="full-area">
                <td class="text-center" colspan="6">
                    <input type="submit" value="Enviar" style="color: #000;" />
                </td>
            </tr>
        </table>
    </div>
</form>


5 commentaires

Je ne vois rien de mal avec ce code lui-même, ce code ne fait que rendre la sélection de Selectbox, mais pour insérer, vous devez écrire plus de pièces. Est-ce que c'est ce que vous demandez?


Vous pouvez bénéficier de la lecture Cette réponse


@AhmedNasR Oui je sais, le code est correct et il peut rendre la sélection de Selectbox OK. Mais lorsque l'utilisateur sélectionne une option répertorie, j'ai besoin d'obtenir cette valeur et de l'envoyer à l'insert, comme celui-ci: $ SQL = "Insérer dans libertadores2019 (datahora, usuario, etapa, dobrada, sobrevivente,";


Vous pouvez déclencher un événement JavaScript surChange dans la zone Select


@Rodrigolinkwebweb s'il vous plaît Modifier Votre question à inclure un Exemple reproductible minimal qui montre comment vous essayez d'insérer une nouvelle ligne dans la base de données, en fonction de la sélection de la liste déroulante. Vous ne montrez actuellement que le code source qui génère le contenu de la liste déroulante.


3 Réponses :


3
votes

Le code PHP fonctionne lorsque le client (par exemple, un navigateur) fait une demande. La sélection d'un élément à partir d'une liste déroulante ne fait aucune demande (la page a déjà chargé) et il n'y a donc pas de code PHP que ce qui peut y parvenir avec la page de son état actuel.

Vous avez deux options:

  • Ajoutez du code JavaScript à la page qui déclenche une fois qu'un nouvel élément est sélectionné, ce qui rend une demande AJAX à votre serveur lorsque cela se produit; ou
  • Ajoutez un bouton pour soumettre le formulaire. Soumettre le formulaire Enverra une demande (typiquement une requête post ) sur le serveur pour la page que vous spécifiez dans le . Vous devriez gérer le insert à partir de cette page, à l'aide des données soumises par le formulaire.

    La dernière option semble adapter votre cas d'utilisation mieux. À ce stade, je recommanderais de faire des recherches sur la manière dont les formes fonctionnent et comment vous pouvez les gérer de PHP.


2 commentaires

C'était une réponse générique


@RodrigolinkWeb Toute réponse à une telle question que vous obtenez sera "générique" d'une manière ou d'une autre. Nous n'allons pas écrire la page pour vous; Ce n'est pas ce que c'est pour. Vous ne pouvez pas ajouter d'insertion à votre code actuel car ce n'est pas la façon dont la PHP fonctionne - ainsi, je explique comment réaliser ce que vous voulez. Faire votre recherche! Si vous êtes bloqué plus tard à une étape particulière, vous aurez une question spécifique que vous pouvez poser et obtenir une réponse spécifique pour. À l'heure actuelle, vous avez posé une question à une question qui s'est avérée générique et que toute réponse sera donc aussi générique.



0
votes

Chaque fois qu'un événement de changement se produit dans la zone Sélectionner, vous pouvez utiliser l'appel AJAX pour envoyer les données au serveur et obtenir la réponse de celle-ci.

Vous pouvez utiliser la bibliothèque de jQuery pour créer un appel AJAX. P>

Ajoutez l'ID pour sélectionner la balise P>

<?php
    $category_id = $_POST['sobrevivente'];

    // your code to insert it into the database

    if($success){
        $ajax_response = "success";
    }
    else
    {
        $ajax_response = "failed";
    }
    echo json_encode($ajax_response);
?>


0 commentaires

0
votes

Merci pour toutes les réponses, mais personne n'était correct. Je l'ai fait! Le problème était avec des citations manquantes.


0 commentaires