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>
3 Réponses :
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. P>
Vous avez deux options: p>
code>. Vous devriez gérer le insert code> à partir de cette page, à l'aide des données soumises par le formulaire. LI>
ul>
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. P>
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 code> à 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.
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); ?>
Merci pour toutes les réponses, mais personne n'était correct. Je l'ai fait! Le problème était avec des citations manquantes. P>
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.